Aplicación de los semáforos

Páginas: 10 (2254 palabras) Publicado: 27 de octubre de 2013



Actividad Aplicativa: Comunicación entre procesos




Aplicación de los semáforos





Titulación: Grado en Ingeniería Informática
Asignatura: Programación de Sistemas






Madrid, Noviembre de 2012


Tabla de Contenidos
1 Objetivo 3
2 Enunciado 3
3 Requisitos 3
4 Desarrollo realizado 3
4.1 Análisis del problema 3
4.1.1 Programa principal (Prog54) 34.1.2 Control de errores programa principal (Prog54) 4
4.1.3 Procesos Prog51, Prog52 y Prog53 4
4.1.4 Lib_sem.h 5
4.1.5 Makefile 5
4.2 Codificación del programa 5
4.2.1 Prog54 5
4.2.2 Prog51 6
4.2.3 Prog52 7
4.2.4 Prog53 8
4.2.5 Makefile 9
4.3 Comprobación del funcionamiento 9
4.3.1 Test 1: Compilación mediante Make 9
4.3.2 Test 2: Ejecución del programa principal (prog54) 9
5 Anexo:Código Fuente 11
5.1 Prog54.c 11
5.2 Prog51.c 13
5.3 Prog52.c 14
5.4 Prog53.c 14
5.5 Makefile 15

1 Objetivo

El objetivo de este trabajo es utilizar los semáforos de UNIX System V en una aplicación concurrente.
2 Enunciado

La aplicación consiste en sincronizar 3 procesos (prog51, prog52, prog53) alternando su ejecución. La ejecución de los procesos debe manifestarse con mensajes enpantalla como:

“Soy el prog51”
“Soy el prog52”,
“Soy el prog53”,
“Soy el prog51”,
“Soy el prog52”,
... Hasta 5 veces.
3 Requisitos

Requisitos de desarrollo: Los tres procesos tienen que ser independientes, es decir no es necesario que sean procesos emparentados (padre e hijos)

El proceso de desarrollo debe seguir las siguientes pautas:
1. Análisis del problema.
2. Codificaciónde los programas.
3. Comprobación del correcto funcionamiento de la aplicación.

4 Desarrollo realizado
4.1 Análisis del problema

Se pretende desarrollar un programa que ejecute 3 procesos y mediante semáforos alterne la ejecución de los tres procesos.
Para el desarrollo de este programa hemos analizado los posibles escenarios que se pueden producir en la ejecución del mismo.

4.1.1Programa principal (Prog54)
Se va a crear un programa principal que ejecute 3 procesos hijos. El programa principal se identificará con el nombre de prog54. Los 3 procesos hijos se identificarán como prog51, prog52 y prog53.
Para la creación de los procesos hijos se lanzarán 3 sentencias fork().
Para la ejecución de los 3 procesos se utilizará la función int execlp(const char *file, const char*arg, ...).

Desde el programa principal se creará un conjunto de 3 semáforos.
La creación de semáforo se hará mediante la llamada abrir_sem(key_t llave, int numsem) de la librería lib_sem.h
Cada semáforo del conjunto se identificará mediante sem_1, sem_2 y sem_3.

Por otro lado, el conjunto de semáforos controlará que proceso se debe ejecutar en cada momento.
En el proceso principalinicializaremos los semáforos de tal forma que el proceso prog51 se encuentre en estado semáforo libre, mientras que los procesos prog52 y prog53 estén en estado cerrado.
Por último, se añadiran las llamadas necesarias para que el proceso padre (prog54) espere a la finalización de los tres procesos hijos (prog51, prog52 y prog53). Y, se realizará un borrado del conjunto de semáforos.
Se esperará lafinalización de los procesos hijos mediante tres llamadas a la función wait()
Se realizará el borrado de los semáforos con la llamada borrar_sem(int semid) de la librería lib_sem.h

4.1.2 Control de errores programa principal (Prog54)
Se debe verificar la correcta creación del conjunto de semáforos
Si la llamada abrir_sem devuelve -1 se habrá producido un error en la creación del conjuntode semáforos.
Se debe verificar la correcta creación de los procesos hijos.
Si la llamada fork devuelve -1 se habrá producido un error en la creación de un proceso hijo.

4.1.3 Procesos Prog51, Prog52 y Prog53
El funcionamiento de los 3 procesos independientes será muy similar.
En cada proceso se abrirá el conjunto de semáforos creado en el programa principal (prog54)
Se realizará la...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Semaforo
  • Los Semaforos
  • semaforo
  • Semaforo
  • semaforo
  • SEMAFORO
  • Semáforo
  • Semaforo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS