21
Universidad Nacional Experimental de Guayana Escuela de Ingeniería en Informática Asignatura: Sistemas de Operación Página: 1 Ing. Andrés R. Caniumilla Tema: Sincronización de Procesos Sincronización de Procesos

Sincronización de procesos

Embed Size (px)

Citation preview

Page 1: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 1Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Sincronización de Procesos

Page 2: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 2Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Semáforos

• La variable especial denominada semáforo se utiliza para señalizar

• Si un proceso está esperando una señal, este se suspende hasta que la señal haya sido enviada

Page 3: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 3Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Semáforos

• Un semáforo es una variable que tiene un valor entero● Puede ser inicializado a un valor no negativo● La operación semWait decrementa el valor del

semáforo● La operación semSignal incrementa el valor del

semáforo

Page 4: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 4Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Primitivas de Semáforosstruct semaphore {

int cuenta;queueType cola;

}void semWait (semaphore s) {

s.cuenta—;if (s.cuenta < 0) {

poner este proceso en s.cola;bloquear este proceso;

}}

Page 5: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 5Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Primitivas de Semáforosvoid semSignal (semaphore s) { s.cuenta++; if (s.cuenta <=0) { extraer un proceso P de s.cola; poner el proceso P en la lista de listos; }}

Page 6: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 6Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Exclusión Mutua Usando Semáforossemafore s = 1;void P (int i) { while (true) { SemWait (s); /* sección crítica */; SemSignal (s); /* resto */ }}void main() { paralelos (P(1), P(2), ..., P(n));}

Page 7: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 7Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Semáforos en Linux

• Las funciones para trabajar con semáforos en Linux en C están incluidas en las librerías <sys/types.h>,<sys/ipc.h> y <sys/sem.h>. En particular, las funciones son semget, semop y semctl.

• Estas funciones, aunque muy potentes, son habitualmente complicadas de usar, por lo que se recomienda utilizarlas en su versión más básica, siempre que sea posible. Entre las complicaciones introducidas por estas funciones, es importante prestar atención a las siguientes:

Page 8: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 8Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Semáforos en Linux

• En vez de un solo semáforo clásico representado por un entero no negativo, en realidad semget define un array de semáforos del tamaño especificado. Hay que trabajar por tanto con conjuntos de semáforos, aunque para crear un sólo semáforo necesitemos crear un array de un solo elemento.

• La creación de un semáforo es independiente de su inicialización, lo cual es especialmente peligroso ya que no se puede crear un semáforo inicializado de forma atómica. Es el programador el que debe tener cuidado de inicializar siempre los semáforos que cree.

Page 9: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 9Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Monitores

• Un monitor es un módulo software• Características principales

• Las variables locales de datos son sólo accesibles por el monitor

• Un proceso entra en el monitor invocando uno de sus procedimientos

• Sólo un proceso puede estar ejecutando dentro del monitor al tiempo

Page 10: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 10Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Colas de Mensajes

• Impone la exclusión mutua• Intercambia información

• send (destino, mensaje)• receive (origen, mensaje)

Page 11: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 11Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Sincronización con Colas de Mensajes

• Emisor y receptor pueden o no bloquearse (esperando al mensaje)

• Envío bloqueante, recepción bloqueante• Ambos emisor y receptor se bloquean hasta que el

mensaje se entrega• Se le conoce como rendezvous

Page 12: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 12Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Sincronización con Colas de Mensajes

• Envío no bloqueante, recepción bloqueante• El emisor puede continuar

• El receptor se bloquea hasta que el mensaje solicitado llegue• Envío no bloqueante, recepción no bloqueante• Ninguna de las partes tiene que esperar

Page 13: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 13Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Sincronización con Colas de Mensajes

• Direccionamiento Directo• La primitiva send incluye un identificador específico

del proceso destinatario • La primitiva receive debe conocer con anticipación

de qué proceso espera el mensaje• La primitiva receive puede usar el parámetro origen

para devolver un valor cuando la operación de recepción se completa

Page 14: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 14Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Sincronización con Colas de Mensajes

• Direccionamiento Indirecto: • Los mensajes se envían a una estructura de datos

compartida, que consiste en colas• Las colas se conocen como buzones (mailboxes)• Un proceso envía un mensaje al buzón apropiado y

otro proceso toma el mensaje del buzón

Page 15: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 15Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Memoria Compartida en Linux

• La memoria compartida es una zona de memoria común a la que todos los procesos pueden conseguir acceso y de esta forma, lo que un proceso escribe en la memoria, es accesible al resto de procesos.

• Las funciones para trabajar con memoria compartida en Linux en C están incluidas en los includes <sys/types.h>, <sys/ipc.h> y <sys/shm.h>. En particular, las funciones que usaremos son: shmget, shmat, shmdt y shmctl.

Page 16: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 16Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Problema de Sincronización (1)

• En una tienda de pájaros están teniendo problemas para tener a todos sus canarios felices. Los canarios comparten una jaula en la que hay un plato con alpiste y un columpio para hacer ejercicio. Todos los canarios quieren inicialmente comer del plato y, después columpiarse. Pero se encuentran con el inconveniente de que sólo tres de ellos pueden comer del plato al mismo tiempo y sólo uno puede columpiarse. Defina el diseño, así como los algoritmos en pseudocódigo que permitan que los canarios ejecuten concurrentemente de forma que sincronicen sus actividades usando semáforos.

Page 17: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 17Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Solución (Problema 1)

Puedecomer, columpio: semáforo;

Process Canario wait (puedecomer); signal (puedecomer); wait (columpio); signal (columpio); ....End

Page 18: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 18Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Solución (Problema 1)

Process PadreInitial (puedecomer, 3)Initial (columpio, 1)

// Creación de CanariosCobegin

C1,C2,C4,C5,C6,C7, ...Coend

End

Page 19: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 19Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Problema de Sincronización (2)

• Implementar el seudo-código utilizando semáforos, para lograr la sincronización de tres procesos (P1, P2 y P3) de forma que se establezca el orden de ejecución P1, P3 y P2. Así, primero se ejecuta P1 y cuando finaliza P1 se puede ejecutar P3, y cuando finaliza P3 se puede ejecutar P2 y cuando finaliza P2 se puede ejecutar P1 y así sucesivamente.

Page 20: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 20Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Solución (Problema 2)

Process P1 Process P2wait (finP2) wait (finP3)… ...signal (finP1) signal (finP2)

End EndProcess P3

wait (finP1)…signal (finP3)

End

Page 21: Sincronización de procesos

Universidad Nacional Experimental de GuayanaEscuela de Ingeniería en InformáticaAsignatura: Sistemas de Operación

Página: 21Ing. Andrés R. Caniumilla

Tema: Sincronización de Procesos

Solución (Problema 2)

Process PadreInitial (FinP1, 0)Initial (FinP2, 1)Initial (FinP3, 0)Cobegin

P1;P2;P3Coend

End