Please enable JavaScript.
Coggle requires JavaScript to display documents.
Mecanismos de sincronización y su relación con semáforos., image, image,…
Mecanismos de sincronización y su relación con semáforos.
Características:
Un semáforo S se crea a partir de una clase que tiene un atributo privado de tipo número entero y una pareja de métodos públicos P y V.
Como cualquier tipo de datos, queda definido por:
Conjunto de valores que se le pueden asignar
Conjunto de operaciones que se le pueden aplicar.
Un semáforo general (contador) es un tipo de datos
abstracto que tiene 2 operaciones para acceso:
• P y V, de los nombres originales que les puso Dijkstra (palabras
holandesas passeren, pasar, y vrygeven, liberar.
Un semáforo tiene también asociada una lista de procesos, en la que se incluyen todos los procesos que se encuentra suspendidos a la espera de acceder al mismo.
Funcionamiento:
Si el hilo invoca a V(S) y no hay hilo alguno esperando por ese semáforo entonces el valor del contador S se incrementa atómicamente.
El hilo liberado no necesariamente debe ser el que lleva más tiempo esperando.
Si el valor del contador S es positivo, un hilo al invocar P(S) decrementa a S en una acción atómica; de otra forma (S <= 0) el hilo espera (se bloquea).
Las operaciones sobre el contador del semáforo deben realizarse atómicamente para evitar condiciones de contención.
Semáforo Binario – el valor entero puede tener un rango solo entre 0 y 1; puede ser más simple de implementar.
Semáforo de Cuenta (Contador) – el valor entero puede tener un rango sobre un dominio sin restricciones.
Implementación:
No es una buena solución utilizar semáforos implementados con espera ocupada.
Implementación de S con semáforos binarios.
la implementación se convierte en el problema de la sección crítica donde el código del wait y el signal son la sección crítica.
Implementación de semáforo sin espera ocupada.
block – ubica el proceso invocando la operación en la
apropiada cola de espera.
wakeup – remueve uno de los procesos en la cola de espera y
lo ubica en la cola de listos.
interbloqueo e inanición.
Interbloqueo: dos o más procesos están esperando indefinidamente por un evento que puede ser causado por solo uno de los procesos que esperan.
Inanición: bloqueo indefinido. Un proceso no puede ser removido nunca de la cola del semáforo en el que fue suspendido.
Algoritmos que ejemplifiquen cada mecanismos:
Initial (s,v): Se utiliza para inicializar el semáforo S al valor V donde V>0. Esta operación es exclusiva para Pascal-fc.
Un semáforo, además, admite una operación no segura:
initial (s, valor_inicial): asigna al semáforo s el valor inicial que se pasa como argumento.
Las operaciones seguras que se pueden realizar sobre un semáforo “s” son dos:
signal(s): Si hay algún proceso en la lista de procesos del semáforo, activa uno de ellos para que ejecute la sentencia que sigue al wait que lo suspendió.
wait(s): si el semáforo no es nulo (abierto) decrementa en uno el valor del semáforo.
Universidad del Valle de México
Materia: Programación concurrente
Docente: José Urquidez Ramírez
Alumna: Guadalupe de la Cruz Xalocan