Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porBelén Saavedra Henríquez Modificado hace 7 años
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)
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.