La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sincronización de Procesos Introducción a Semáforos

Presentaciones similares


Presentación del tema: "Sincronización de Procesos Introducción a Semáforos"— Transcripción de la presentación:

1 Sincronización de Procesos Introducción a Semáforos
Sistemas Operativos Sincronización de Procesos Introducción a Semáforos

2 Revisión de operaciones atómicas
Ejemplo “competencia de contar” static int i; PROCESS A i = 0; while (i < 10) { i++; } cout << “gana A”; PROCESS B while (i > -10) { i--; cout << “gana B”; © Cesar Guisado A

3 El Juego La variable i es compartida
La referencia y la asignación es atómica ¿Cuál proceso gana, A o B? ¿Terminará esto en algún momento? ¿Si uno termina, termina el otro? ¿Ayuda si A empieza primero? Sincronización: El uso de operaciones atómicas para asegurar la correcta operación de los procesos que cooperan © Cesar Guisado A

4 Mucha leche PERSONA A PERSONA B 3:00 3:05 Va al mercado 3:10
Mira en refrigerador No hay leche 3:05 Va al mercado 3:10 Llega al mercado 3:15 Se va del mercado 3:20 Llega a su casa, pone leche en refr 3:25 Llega a su casa, ¡sorpresa! 3:30 © Cesar Guisado A

5 Lo mas importante en sincronización es comprender lo que se quiere alcanzar.
Exclusión mutua: es el mecanismo que asegura que solo un proceso hace algo al mismo tiempo. (los otros se excluyen. Por ejemplo, solo una persona va al mercado a la vez. Sección critica: Es código o conjunto de operaciones en el cual un solo proceso se ejecuta al mismo tiempo. Por ejemplo, comprar. Es una operación que queremos hacer atómica. © Cesar Guisado A

6 La exclusión mutua Hay diversas maneras para conseguir la exclusión mutua, tienen que ver con una suerte de cerrojo o candado para prevenir que se haga algo. Por ejemplo, antes de ir a comprar, dejar una nota en el refrigerador. © Cesar Guisado A

7 3 elementos de cerradura
1 Cerrar antes de usar. Dejar una nota 2 Cerrar cuando este listo Remover Nota 3 Esperar si esta cerrado No comprar si hay nota © Cesar Guisado A

8 Primer intento Procesos A y B 1 If(no_hay_leche) { 2 if(no:hay_nota) {
3 dejar nota; 4 comprar leche; 5 remover nota; 6 } 7 ¿Que pasa si dejamos la nota al principio? ¿Trabajaría esto mejor? © Cesar Guisado A

9 Segundo intento Cambiando la intención de la nota
PROCESO A PROCESO B 1 If (NoNota) { If (Nota) { 2 if (NoLeche) { 3 Comprar Leche; Comprar Leche 4 } 5 DejarNota } RetirarNota; 6 © Cesar Guisado A

10 Cambiando la intención de la nota
¿Trabaja esto? ¿Cómo sabemos? Cuando nos enfrentamos a programas paralelos complejos, no podemos depender de nuestra intuición o razonamiento informal. Necesitamos probar que los programas trabajan en forma correcta. ¿Qué podemos decir respecto de la solución anterior © Cesar Guisado A

11 ¿Trabaja esto? ¿Cómo sabemos?
Supongamos que B se va de vacaciones. A comprará leche solamente una vez y no comprará mas hasta que B regrese. Esto no realiza lo que queremos, no corresponde y nos llevara a morir de inanición. © Cesar Guisado A

12 Por tercera vez usar dos notas
PROCESO A 1 Leave NoteA; 2 if (NoNoteB) { 3 if (NoMilk) { 4 Buy Milk; 5 } 6 7 Remove NoteA; © Cesar Guisado A

13 La tercera vez El proceso B es el mismo, excepto que se intercambia la Nota A y la nota B ¿Qué podríamos decir respecto de esta solucion? La solución es casi correcta. Solamente necesitamos una forma de decidir quien comprara la leche cuando ambos dejen una nota. (alguien tiene que estar en el lugar para asegurarse que el trabajo se haga) © Cesar Guisado A

14 Cuarta vez, en caso de empate A compra la leche
Proceso A 1 Dejar Nota A; 2 if (NoNotaB) { 3 if (NoLeche) { 4 Comprar Leche; 5 } 6 } else { 7 while (NotaB) { 8 HacerNada; 9 10 if (NoHayLerche) { 11 ComprarLeche; 12 13 14 Remover NotaA; © Cesar Guisado A

15 Trabajo Descifre estas cuatro posibilidades en sus propias palabras
Puede trabajar con un compañero Escriba sus conclusiones, y publíquelas en Jones No olvide firmar su nombre © Cesar Guisado A

16 Cuarta vez ¿Como sabemos si esto es correcto?
Esta solución es correcta, pero tiene dos desventajas A podría tener que esperar mientras B esta comprando Mientras A espera esta consumiendo recursos ( ocupado mientras espera) © Cesar Guisado A


Descargar ppt "Sincronización de Procesos Introducción a Semáforos"

Presentaciones similares


Anuncios Google