La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

1 Tema 6: Concurrencia de Procesos Sistemas Operativos.

Presentaciones similares


Presentación del tema: "1 Tema 6: Concurrencia de Procesos Sistemas Operativos."— Transcripción de la presentación:

1 1 Tema 6: Concurrencia de Procesos Sistemas Operativos

2 2 Índice: 1.Cooperación de procesos 2.Concurrencia y Sección Crítica 3.Control Pesimista y Optimista de la Concurrencia 4.Métodos basados en Impedir la Conmutación 5.Métodos de Espera Ocupada 6.Problemas de la Espera Ocupada 2 Tema 6: Concurrencia de Procesos

3 3 Índice: 1.Cooperación de procesos 2.Concurrencia y Sección Crítica 3.Control Pesimista y Optimista de la Concurrencia 4.Métodos basados en Impedir la Conmutación 5.Métodos de Espera Ocupada 6.Problemas de la Espera Ocupada 3 Tema 6: Concurrencia de Procesos

4 4 1. Cooperación de Procesos Tema 6: Concurrencia de Procesos  Relación entre los procesos en un sistema multiprogramado:  Competencia (procesos independientes)  Cooperación  Procesos que cooperan:  Colaboran en la consecución de algún fin  Comparten recursos  Tipos de recursos:  Consumibles (un solo uso)  Reutilizables en serie

5 5 1. Cooperación de Procesos Tema 6: Concurrencia de Procesos  Formas de acceso a los recursos compartidos:  Concurrencia Acceso simultáneo directo al recurso  Sincronización Uso de mecanismos de coordinación para ordenar acceso  Comunicación Sólo un proceso accede directamente a recurso Demás procesos le envían peticiones (cliente/servidor)  La modificación concurrente del estado de un recurso puede dar lugar a condiciones de carrera!

6 6 Índice: 1.Cooperación de procesos 2.Concurrencia y Sección Crítica 3.Control Pesimista y Optimista de la Concurrencia 4.Métodos basados en Impedir la Conmutación 5.Métodos de Espera Ocupada 6.Problemas de la Espera Ocupada 6 Tema 6: Concurrencia de Procesos

7 7 0 1 2 3 tabla 1. Concurrencia y Sección Crítica Tema 6: Concurrencia de Procesos i=0 i=1i=2 e1e2 … tabla[i]= e1; i= i+1;... P1 … tabla[i]= e2; i= i+1;... P2  Condición de carrera: corrupción del estado de un recurso causada por su actualización concurrente por parte de varios procesos (o hilos).

8 8 1. Concurrencia y Sección Crítica Tema 6: Concurrencia de Procesos 0 1 2 3 tabla i=0 … tabla[i]= e1; i= i+1;... P1 … tabla[i]= e2; i= i+1;... P2  Sección crítica: porción de código en la que se accede a un recurso compartido.  Exclusión mutua: garantizar que en cada momento se pueda estar ejecutando como máximo una sección crítica asociada a un recurso.

9 9 1. Concurrencia y Sección Crítica Tema 6: Concurrencia de Procesos  Requisitos de la exclusión mutua: 1.Nunca debe haber más de un proceso ejecutando su sección crítica asociada a un mismo recurso. 2.Todo proceso permanece tiempo finito en sección crítica. 3.Ningún proceso suspendido, detenido o abortado fuera de sección crítica debe impedir la entrada a otro proceso. 4.Ningún proceso esperará eternamente a entrar en sección crítica 5.Si ningún proceso está ejecutando su sección crítica, cualquier proceso podrá hacerlo inmediatamente. 6.Si hay procesos esperando para entrar en sección crítica y el proceso que la estaba ejecutando sale, uno de los que esperan entrará inmediatamente.  No se pueden hacer suposiciones respecto a las velocidades relativas de ejecución de los procesos.

10 10 Índice: 1.Cooperación de procesos 2.Concurrencia y Sección Crítica 3.Control Pesimista y Optimista de la Concurrencia 4.Métodos basados en Impedir la Conmutación 5.Métodos de Espera Ocupada 6.Problemas de la Espera Ocupada 10 Tema 6: Concurrencia de Procesos

11 11 3. Control Pesimista y Optimista de la Conc. Tema 6: Concurrencia de Procesos  Control Pesimista:  Consiste en garantizar la exclusión mutua en el acceso a los recursos.  Control Optimista:  No se fuerza exclusión mutua → pueden darse condiciones de carrera!!  Si se dan las condiciones de carrera, se detecta y se solucionan.  Protocolo de entrada típico: salvar estado  Protocolo de salida típico: Comprobar de ha habido condición de carrera En caso afirmativo, restaurar estado y repetir

12 12 3. Control Pesimista y Optimista de la Conc. Tema 6: Concurrencia de Procesos  Control Pesimista:  Ventajas: Siempre es viable  Inconvenientes: Fuerza esperas (posiblemente innecesarias) Algunos métodos pueden ser muy drásticos  Control Optimista:  Ventajas: Mayor grado de paralelismo  Inconvenientes: Será posible o no en función de la naturaleza del recurso Si hay muchos procesos concurrentes, el nº de conflictos puede aumentar y por tanto el nº de repeticiones

13 13 3. Control Pesimista y Optimista de la Conc. Tema 6: Concurrencia de Procesos  ¿Control Pesimista u Optimista? Depende de…  Frecuencia y variabilidad de la probabilidad de condiciones de carrera  Coste de la repetición del cálculo  Optimista: idóneo si…  Coste de repetición del cálculo es pequeño, y  Previsible que hayan pocas condiciones de carrera  Pesimista: idóneo si…  Coste de repetición del cálculo es grande, y  Previsible que hayan muchas condiciones de carrera, o se espera variabilidad en su frecuencia

14 14 Índice: 1.Cooperación de procesos 2.Concurrencia y Sección Crítica 3.Control Pesimista y Optimista de la Concurrencia 4.Métodos basados en Impedir la Conmutación 5.Métodos de Espera Ocupada 6.Problemas de la Espera Ocupada 14 Tema 6: Concurrencia de Procesos

15 15 4. Métodos basados en impedir la conmut. Tema 6: Concurrencia de Procesos  Pesimismo extremo: impide apropiación en sección crítica  Mecanismos NO disponibles para procesos de usuario  Posibilidades:  Desactivar interrupciones  Uso exclusivo del procesador

16 16 4. Métodos basados en impedir la conmut. Tema 6: Concurrencia de Procesos Desactivar Interrupciones  Si no hay interrupciones→no hay apropiación … [ sección crítica ] … deshabilitar_interrupciones(); habilitar_interrupciones();  Inconvenientes:  Mientras interrupciones deshabilitadas, Control absoluto de la máquina No se atienden dispositivos Puede que no se refresque la memoria Sistema en peligro!  ¿Y la NMI?  ¿Y si hay otros procesadores?

17 17 4. Métodos basados en impedir la conmut. Tema 6: Concurrencia de Procesos Suspender la conmutación  Pedir a planificador que suspenda conmutación hasta nueva orden  ¡Ya no hay problemas con…  Dispositivos  Refresco de memoria … [ sección crítica ] … suspender_conmutacion(); reanudar_conmutacion();  Inconvenientes:  Posibilidad condición de carrera con rutinas de interrupción  Tampoco es adecuado para multiprocesadores  ¡Cuidado en sistemas con organización micronúcleo!

18 18 Índice: 1.Cooperación de procesos 2.Concurrencia y Sección Crítica 3.Control Pesimista y Optimista de la Concurrencia 4.Métodos basados en Impedir la Conmutación 5.Métodos de Espera Ocupada 6.Problemas de la Espera Ocupada 18 Tema 6: Concurrencia de Procesos

19 19 5. Métodos de espera ocupada Tema 6: Concurrencia de Procesos  Espera ocupada (o espera activa)  esperar a que algo ocurra realizando continuas comprobaciones:  Métodos de espera ocupada:  Cerrojos  Alternancia estricta  Algoritmo de Dekker  Algoritmo de Peterson  Algoritmo de Lamport  Instrucciones especiales … variable= 0; while(variable==0); …

20 20 5. Métodos de espera ocupada Tema 6: Concurrencia de Procesos Cerrojos  Variable compartida que indica si recurso está libre u ocupado: Vars. compartidas: int cerrojo=0; … [ sección crítica ] … while(cerrojo); cerrojo= 1; cerrojo= 0;  ¡Fallo!  No hay atomicidad entre comprobación y cierre

21 21 … [ sección crítica ] … P1 5. Métodos de espera ocupada Tema 6: Concurrencia de Procesos Alternancia Estricta  Caso de que dos procesos usen recurso por turnos  Variable compartida que indica a qué proceso le toca: Vars. compartidas: int turno=P1; while(turno !=P1); turno= P2;  ¡Funciona!  Más restrictivo que cerrojos: un proceso nunca se da paso a sí mismo. … [ sección crítica ] … P2 while(turno !=P2); turno= P1;

22 22 5. Métodos de espera ocupada Tema 6: Concurrencia de Procesos Alternancia Estricta  Ventajas:  Sencillez  Aplicable en muchos contextos  Inconvenientes:  ¡Obliga a que alternancia sea estricta!  Esto atenta contra requisito 3 exclusión mutua: “Ningún proceso suspendido, detenido o abortado fuera de sección crítica debe impedir la entrada a otro proceso”

23 23 5. Métodos de espera ocupada Tema 6: Concurrencia de Procesos Algoritmo de Dekker  Si los dos procesos interesados→ se alternan  Si uno no está interesado→ el otro puede usar recursos tantas veces como quiera  Comprobación a dos niveles: Vars. compartidas: int interesado1=0; int interesado2=0; int preferente= P1; interesado1=1; while (interesado2) { if (preferente==P2) { interesado1= 0; while (preferente==P2); interesado1=1; } } [ sección crítica ] preferente=P2; interesado1=0; P1 interesado2=1; while (interesado1) { if (preferente==P1) { interesado2= 0; while (preferente==P1); interesado2=1; } } [ sección crítica ] preferente=P1; interesado2=0; P2

24 24 5. Métodos de espera ocupada Tema 6: Concurrencia de Procesos Algoritmo de Peterson  Equivalente a algoritmo de Dekker  Reescrito de forma más clara, una rutina para protocolo de entrada y otra para protocolo de salida: Vars. compartidas: int interesado[2]={0,0} int ultimo=0; void protocolo_entrada(int proc) { int otro= 1-proc; interesado[proc]= 1; ultimo= proc; while {(interesado[otro] == 1) && (ultimo==proc)); } void protocolo_salida(int proc) { interesado[proc]= 0; }

25 25 5. Métodos de espera ocupada Tema 6: Concurrencia de Procesos Algoritmo de Lamport (o de la panadería)  Coordina a N procesos  Cuando más de un proceso interesado en recurso:  Ordena el acceso por turnos  Una etapa de espera por cada proceso interesado Vars. compartidas: int eligiendo[N]= {0,0,…,0} int turno[N]= {0,0, …,0}; Idea de funcionamiento:  Eligiendo[i] != 0 ↔ proceso i está elgiendo turno (turno[i] no es válido todavía)  Si turno[i] = 0 → proceso i no está interesado en entrar en sección crítica  Si turno [i] > 0 → proceso i está interesado y su turno es turno[i]

26 26 5. Métodos de espera ocupada Tema 6: Concurrencia de Procesos void protocolo_entrada(int proc) { /* Elegir turno */ eligiendo[proc]= 1; turno[proc]= 1 + mayor(turno); eligiendo[proc]= 0; /* Esperar a los que vayan por delante */ for (j=0; j< N; j++) if (j != proc) { /* Si está eligiendo, esperar a ver qué turno saca */ while (eligiendo[j] !=0); /* Si tiene turno y es anterior a nosotros, esperar */ while ((turno[j] != 0) && anterior (turno[j], j, turno[proc], proc)); } Algoritmo de Lamport (o de la panadería) void protocolo_salida(int proc) { /* Nos deshacemos del turno */ turno[proc]= 0; }

27 27 5. Métodos de espera ocupada Tema 6: Concurrencia de Procesos Instrucciones especiales: Test and Set (TS, TAS…)  Soluciona el problema de atomicidad de los cerrojos  Formato: TS operando (IBM 360)  Z ← operando == 0  operando ← 1 prot_entrada: TS cerrojo BNF prot_entrada RETN  Único problema: otro master en el bus  Solución: variantes que bloquean el bus

28 28 5. Métodos de espera ocupada Tema 6: Concurrencia de Procesos Instrucciones especiales: Intercambiar (XCHG)  Puede funcionar de forma equivalente a TS  Formato: XCHG registro, direccion (80x86)  registro ↔ dirección  Se puede reforzar con prefijo lock prot_entrada: MOV AL,1 lock XCHG AL, cerrojo CMP AL, 0 JNE prot_entrada RET

29 29 5. Métodos de espera ocupada Tema 6: Concurrencia de Procesos Instrucciones especiales: Comparar e Intercambiar (CS)  Soporte para estrategias optimistas  Formato: CS previo, nuevo, global (IBM 370)  global: variable compartida que se actualiza  previo: valor que tenía global antes de actualización  nuevo: nuevo valor tentativo calculado para actualizar global MOVE previo,global calculo:…. …. CS previo, nuevo, global BNEQ calculo ¿previo=global? actualizar ccr global←nuevo actualizar ccr previo←global Sí No

30 30 Índice: 1.Cooperación de procesos 2.Concurrencia y Sección Crítica 3.Control Pesimista y Optimista de la Concurrencia 4.Métodos basados en Impedir la Conmutación 5.Métodos de Espera Ocupada 6.Problemas de la Espera Ocupada 30 Tema 6: Concurrencia de Procesos

31 31 : while(cerrojo); cerrojo=1; : : : cerrojo=0; : P2 : while(cerrojo); cerrojo=1; : : : cerrojo=0; : P1 6. Problemas de la espera ocupada Tema 6: Concurrencia de Procesos  Desperdicio de tiempo de CPU. Sólo admisible en:  Procesadores dedicados  Sistemas monoprogramados  En el núcleo del SO, si se puede garantizar que tiempo de espera es suficientemente inferior a tiempo de conmutación  Si se coordinan procesos con diferentes prioridades: cerrojo=0cerrojo=1 Prioridad(P2) > Prioridad(P1)


Descargar ppt "1 Tema 6: Concurrencia de Procesos Sistemas Operativos."

Presentaciones similares


Anuncios Google