La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sincronización de Procesos

Presentaciones similares


Presentación del tema: "Sincronización de Procesos"— Transcripción de la presentación:

1 Sincronización de Procesos
Dr. Pedro Mejía Álvarez CINVESTAV-IPN, Seccion de Computacion

2 Contenido Conceptos básicos El problema de la región crítica
Hardware de sincronización Semáforos Problemas clásicos de sincronización Regiones críticas. Monitores Transacciones atómicas.

3 Conceptos Básicos El acceso concurrente a datos compartidos puede llevar a inconsistencias en los datos. El mantenimiento de la consistencia en los datos requiere mecanismos para asegurar la ejecución ordenada de procesos cooperativos. Los mecanismos de consistencia deben permitir la aplicación correcta de los algoritmos de planificación sin perjudicar a la predecibilidad.

4 Ejemplo: Proceso productor-consumidor
Datos compartidos. type item = ... ; var buffer : array [0..n-1] of item; in, out: 0..n-1; counter:0..n; in:=0; out := 0; counter := 0; Proceso productor Proceso Consumidor. repeat repeat produce un dato en nextp while counter = 0 do no-op; while counter = n do no-op; nextc:=buffer[out]; buffer[in] := nextp; out:=out+1 mod n; in := in+1 mod n counter:=counter-1; counter := counter + 1; consume the item in nextc until false; until false; Las operaciones: counter := counter + 1 y counter := counter - 1, deben ser atómicas.

5 El problema de la región crítica
n procesos compiten para utilizar algún dato compartido. Cada proceso tiene un segmento de código, llamado región crítica, en el cual son accesados los datos compartidos Problema - asegurar que cuando un proceso esta ejecutando en su región crítica, ningún otro proceso puede entrar en su región crítica. Estructura del proceso Pi repeat sección de entrada sección crítica sección de salida until false;

6 El problema de la región crítica
La solución al problema de la región crítica debe satisfacer tres requisitos: Exclusión mutua. Si el proceso Pi esta ejecutando en su región crítica, ningún otro proceso puede estar ejecutándose en su región crítica. Progreso. Si en un momento dado no existe ningún proceso y se le concede la región a un proceso, la decisión de concederle la región a otro proceso que la solicite no puede posponerse indefinidamente Espera acotada. Debe existir una cota en el número de veces que otros procesos se les permite entrar en su región crítica, después de que un proceso ha hecho una petición para entrar y antes de que le sea concedida.

7 Algoritmo 1 Variables compartidas: var turn: (0,1);
inicialmente turn = 0; si turn = i entonces Pi puede entrar en su región crítica. Proceso Pi repeat while turn  i do no-op; región crítica turn:=j; últimas instrucciones until false; *** satisface exclusión mutua pero no progreso.

8 Algoritmo 2 Variables compartidas:
var turn: (0,1); flag: array[0..1] of boolean; inicialmente turn = 0, y flag[0], flag[1] = false; si turn = 1 entonces Pi puede entrar en su región crítica. Proceso Pi repeat flag[i]:=true; turn:=j; while (flag[j] and turn = j) do no-op; región crítica flag[i]:=flase; últimas instrucciones until false; *** satisface los tres requisitos.

9 Hardware de sincronización
Prueba y modifica el contenido de un “word” automáticamente function test-and-set (var target:boolean):boolean; begin test-and-set:=target; target:=true; end; Algoritmo de exclusión mutua: Variables compartidas: var lock:boolean; lock:=false; Proceso Pi repeat while test-and-set(lock) do no-op;; región crítica lock:=false; últimas instrucciones until false;

10 Semáforo: Herramienta de sincronización
Semáforo S variable entera S. solo puede ser accesada mediante dos operaciones atómicas: wait(S): S:= S-1; if S < 0 then block(S); signal(S): S:= S+1; if S  0 then wakeup(S); block(S) - provoca la suspensión de el proceso que la invoca. wakeup(S) - provoca que un proceso bloqueado siga con su ejecución.

11 Ejemplo de sección crítica con semáforos
Variables compartidas: var mutex: semaforo; mutex:= 1; Proceso Pi repeat wait(mutex); sección crítica signal(mutex); sección siguiente until false;

12 Ejemplo de semáforo para sincronización
El semaforo flag se inicializa a 0 P P1 A wait(flag) signal(flag) B Ejecuta B en P1 solo después de que A se ejecuta en P0

13 Deadlock dos o mas procesos están esperando indefinidamente por un evento que puede dispararse por uno de los procesos en espera. S y Q son 2 semáforos inicializados a 1. P P1 wait(S) wait(Q) wait(Q) wait(S) signal(S) signal(Q) signal(Q) signal(S) Starvation - bloqueo indefinido: un proceso puede bloquearse en un semáforo y nunca salir de su cola.

14 Tipos de semáforos Semáforo contador- valor entero que puede variar en un dominio sin restricción. Semáforo Binario. valor entero que varia de 0 a 1. Implementación de ambos semáforos. Función como herramienta para implementar la sección crítica, y para sincronizar procesos.

15 Problemas clásicos de la sincronización
Problema del buffer acotado. Problema de los escritores lectores. Problema de los filósofos comiendo. Monitores.

16 Interacción entre Tareas
Raras veces las tareas de un sistema son independientes unos de otros. Frecuentemente, los procesos cooperan entre si, o compiten por algún recurso. Para esto es necesario realizar operaciones de comunicación y sincronización. Dos procesos se comunican cuando hay una transferencia de información de uno a otro. Dos procesos están sincronizados cuando hay restricciones en el orden en que ejecutan algunas de sus acciones. En la mayoría de los sistemas de tiempo real las tareas interaccionan mediante datos comunes (protegidos) mensajes

17 Interacción entre Tareas de Tiempo Real
En todos estos casos puede ocurrir que una tarea tenga que esperar un suceso de otra menos prioritaria. Esta situación se denomina bloqueo, y produce una inversión de prioridad indeseable. La inversión de prioridad no se puede eliminar completamente, pero es posible limitar su duración

18 Ejemplo X Y

19 Ejemplo: Inversión de Prioridad
bloqueo a1 ax ay a2 b1 by by b2 c1 d1 dx dx d2


Descargar ppt "Sincronización de Procesos"

Presentaciones similares


Anuncios Google