Clase IV - Sincronización Procesos

47
UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA INGENIERÍA EN INFORMÁTICA Sistemas de Operación (actualizado) Sincronización de Procesos Presentación

Transcript of Clase IV - Sincronización Procesos

Page 1: Clase IV - Sincronización Procesos

Sistemas Operativos

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA

INGENIERÍA EN INFORMÁTICA

Sistemas de Operación(actualizado)

Sincronización de Procesos

Presentación

Page 2: Clase IV - Sincronización Procesos

Sistemas Operativos

Procesos Independientes

• No comparten estado → Cada quien es aislado del resto.

• Su ejecución es determinista → la ejecución de un mismo programa (instancia) con los mismos datos produce los mismos resultados.

• Cada proceso puede avanzar a un ritmo arbitrario.

Page 3: Clase IV - Sincronización Procesos

Sistemas Operativos

Procesos Cooperativos

• Comparten estado, normalmente mediante variables compartidas entre los diferentes procesos / hilos.

• Ejecución no determinista o difícil de reproducir dado que está sometida a condiciones de carrera.

• ¿Por qué usar procesos que cooperan?a) Ganar velocidad solapando actividades o

realizando trabajo en paralelo.b) Compartir información entre trabajos.c) Estructurar mejor una aplicación.

Page 4: Clase IV - Sincronización Procesos

Sistemas Operativos

Procesos Cooperativos

• Cooperación ⇒ sincronización y comunicación.

• Sincronización ⇒ esperar hasta que se produzca un determinado evento o se den ciertas condiciones (por ejemplo, el uso de semáforos para controlar el tráfico en vías que se cruzan entre sí).

• Comunicación ⇒ intercambio de información, datos, etc.

Page 5: Clase IV - Sincronización Procesos

Sistemas Operativos

Procesos Cooperativos

• Ejemplo 1:

Page 6: Clase IV - Sincronización Procesos

Sistemas Operativos

Procesos Cooperativos

• Ejemplo 2:

Page 7: Clase IV - Sincronización Procesos

Sistemas Operativos

Procesos Cooperativos

• ¿Cuál es la diferencia entre el Ejemplo 1 y el Ejemplo 2?

R: En el Ejemplo 1 no hay sincronización; mientras que en el Ejemplo 2 hay sentencias que involucran la espera de un evento.

NOTA: Observe el uso de la memoria compartida (x en Ejemplo 1, contador en Ejemplo 2).

Page 8: Clase IV - Sincronización Procesos

Sistemas Operativos

Memoria Compartida

• Ocurre cuando dos o más procesos comparten memoria. Ejemplo: el uso de la declarativa “static” para atributos de una clase ⇒ procesos → objetos instanciados.

Page 9: Clase IV - Sincronización Procesos

Sistemas Operativos

Memoria Compartida

• ¿Cómo se puede compartir?

a) Procesos independientes: el SOP suministra medios para compartir memoria (ejemplo: “shmget()” en Unix).

b) Aplicaciones multi-hilo: los hilos de una aplicación comparten memoria de forma natural ya que comparten el mismo espacio de direcciones (variables compartidas).

Page 10: Clase IV - Sincronización Procesos

Sistemas Operativos

Sincronización

• Se produce una condición de carrera (race condition) cuando el resultado de la ejecución de dos o más procesos, que comparten variables comunes, depende de la velocidad relativa a la que cada proceso se ejecuta, es decir, el orden en el que se ejecutan las instrucciones.

Page 11: Clase IV - Sincronización Procesos

Sistemas Operativos

Sincronización

• Ejemplo: dos hilos ejecutan los códigos mostrados y comparten la variable I.

Page 12: Clase IV - Sincronización Procesos

Sistemas Operativos

Sincronización

• Ejemplo: ¿Cuál de los dos gana?.

Page 13: Clase IV - Sincronización Procesos

Sistemas Operativos

Sincronización

• Ejemplo: Problema del buffer limitado(productor-consumidor) – el proceso productor genera información (data de disco, mensaje de red, caracteres de teclado, etc.) que es utilizada por el proceso consumidor.

Page 14: Clase IV - Sincronización Procesos

Sistemas Operativos

Sincronización

• Ejemplo: Problema del buffer limitado (productor-consumidor).

Page 15: Clase IV - Sincronización Procesos

Sistemas Operativos

Sincronización

• Ejemplo: Problema del buffer limitado (productor-consumidor) – ambas rutinas son correctas si se ejecutan por separado pero podrían NO funcionar si se ejecutan de manera concurrente; supongamos que contador tiene en un momento dado el valor 5 y que las instrucciones “contador= contador+1” y “contador=contador-1” se ejecutan de forma concurrente (¿cuál es el nuevo valor 4, 5 ó 6?

Page 16: Clase IV - Sincronización Procesos

Sistemas Operativos

Sincronización

• Ejemplo: Problema del buffer limitado (productor-consumidor) → el acceso concurrente a los datos compartidos provoca inconsistencias, salvo que se disponga de un mecanismo para asegurar la ejecución ordenada de los procesos cooperantes → que sólo permita los intercalados correctos.

Page 17: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• Brinch Hansen, 1972.• Problema de la Sección Crítica (SC) o

Región Crítica (RC): N procesos intentan acceder a un recurso compartido en un ciclo infinito:

Page 18: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• La RC es el segmento de código donde se accede a datos compartidos por varios procesos concurrentes:§ Nunca puede haber más de un proceso en la

RC (exclusión mutua).§ Los protocolos pre (de entrada) y post (de

salida) son algoritmos para garantizar que se cumple la exclusión mutua.

Page 19: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• Exclusión mutua: si Pi se está ejecutando en su RC, ningún Pj (j ≠ i) puede ejecutarse en su RC.

Page 20: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• Progreso (o libre de interbloqueo): si ningún proceso Pj está en RC y hay procesos Pi que desean entrar en ella, sólo estos últimos participarán en la decisión y ésta se tomará en un tiempo finito.

Page 21: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• Espera limitada (o libre de inanición): hay un límite para el número de veces que se le permite a los Pj entrar en su RC después de que un Pi haya realizado una petición de entrar en la suya y antes que la petición se satisfaga.

Page 22: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• Una solución correcta al problema de la RC:

§ No debe suponer nada acerca de las velocidades relativas de los N procesos.§ Supone que ningún proceso se ejecuta a

velocidad cero.

• Propiedades deseables de la solución:• No hacer esperar más a unos que a otros

(Imparcialidad).• No gastar más recursos de los necesarios

(Eficiencia).

• Que sea lo más simple posible.

Page 23: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• Soluciones para la exclusión mutua:

§ Exclusión frente al hardware – deshabilitar las interrupciones para proteger la RC de la rutina de servicio de interrupción.§ Exclusión frente a otros procesos:

o Espera ocupada – los procesos comprueban constantemente si es seguro entrar a la RC.

o Bloqueo – los procesos se bloquean al intentar entrar en su RC si ya existe otro proceso dentro de la suya. Cuando el proceso deja la RC desbloquea a uno de los que esperan para entrar.

Page 24: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• Protección frente al hardware:

§ Un proceso en su RC puede verse interrumpi-do por una RSI con la que comparte datos. Para proteger el acceso concurrente a las estructuras de datos del núcleo por parte de las RSIs y el propio código del SOP, se deben bloquear las interrupciones.

Page 25: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• Deshabilitar interrupciones:

§ Consideraciones:

o Las interrupciones necesitan un servicio rápido ⇒no hay que interferirlas demasiado → la RC anterior debe ser lo más breve posible.

o Sólo bloquear las interrupciones cuyos manejadores acceden a la sección crítica.

§ Esto no suele ser siempre viable en multi-procesadores → el costo de deshabilitar las interrupciones en todos los procesadores es muy elevado.

Page 26: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• ¿Esperar o bloquear?

§ Depende de cuanto se va a tardar (medido respecto al costo de cambio de contexto y el manejo de colas):

o Si la RC es corta, mejor esperar.o Si la RC es larga, mejor bloquear.

§ La mayoría de los sistemas reales ofrecen ambos mecanismos y se elige uno u otro en función del caso.

Page 27: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• Exclusión mutua con espera ocupada:

§ Soluciones por software:

o Algoritmo de la panadería de L. Lamport, algoritmo de Dekker, algoritmo de Peterson, etc.

o Estas soluciones no dependen de la exclusión mutua a nivel de acceso a la memoria.

§ Soluciones con apoyo en el hardware:

o El repertorio de instrucciones de la máquina suministra una operación del tipo “TestAndSet”.

Page 28: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• Algoritmo 1 (variable de control compartida):

Page 29: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• Algoritmo 2 (avisadores):

Page 30: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• Algoritmo 3 (espera infinita):

Page 31: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• Algoritmo 4 - Peterson (variable global + espera infinita):

Page 32: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• Algoritmo 5 - Lamport (para N procesos):

Page 33: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica

• Algoritmo 5 - Lamport (para N procesos):

§ También llamado algoritmo de la panadería.§ Antes de entrar en su RC, el proceso recibe

un número de ticket → entra en la RC el proceso con menor número de ticket.§ Si P1 y P2 reciben el mismo número, entonces

se aplica un algoritmo de desempate que consiste en tomar el proceso con menor PID, ya que el PID es único.§ El esquema de numeración siempre genera

números en orden creciente de enumeración.

Page 34: Clase IV - Sincronización Procesos

Sistemas Operativos

Región Crítica Condicional

• Región Crítica Condicional (RCC):

§ Su funcionamiento es similar a la RC sólo que además, para que un proceso ejecute S, la condición B debe ser cierta.§ La evaluación de la condición B se considera

parte de la RC.§ En caso de evaluarse a falso, abandona la RC

para permitir a otros procesos entrar en ella.§ Un proceso que haya evaluado la condición a

falso no vuelve a entrar a su RC hasta que otro proceso la abandone (espera pasiva).

Page 35: Clase IV - Sincronización Procesos

Sistemas Operativos

Semáforos

• Filosofía: Se trata de bloquear a un proceso cuando éste deba esperar. Así, mientras un proceso espera, no se le concederá tiempo de CPU, aumentando de esta forma la eficiencia del sistema. Espera Pasiva

• Dijkstra (1965) → creación de un SOP en el que pueden trabajar procesos cooperantes; para la señalización crea unas variables especiales llamadas semáforos.

Page 36: Clase IV - Sincronización Procesos

Sistemas Operativos

Semáforos

• Definición 1: es una variable entera con dos operaciones atómicas:

§ espera(s): while S <= 0 do “nada”;S:=S-1;

§ señal(s): S:=S+1;

• Definición 2: es un tipo abstracto de dato que, por regla general, sólo acepta valores de un entero no negativo.

Page 37: Clase IV - Sincronización Procesos

Sistemas Operativos

Semáforos

• Si s es un semáforo:

§ Wait(s): P(Proberem – probar)Decrementa el valor de s; si su valor es mayor que 0. Si es igual a 0 el proceso se “bloquea” en el semáforo.

§ Signal(s): V(Verhogen – incrementar)Si lo hay, desbloquea algún proceso bloqueado en s. Si no, incrementa el semáforo en 1.

• Initial(s, v):Inicializa el semáforo s al valor entero v.

Page 38: Clase IV - Sincronización Procesos

Sistemas Operativos

Semáforos

• Las operaciones involucradas en P y V son “indivisibles”:

Page 39: Clase IV - Sincronización Procesos

Sistemas Operativos

Semáforos

• Tipos:

§ Contador o general: valor entero que puede variar en un dominio no restringido; existen varias instancias de un recurso.

§ Binario: valor entero que sólo puede variar entre 0 y 1.

Page 40: Clase IV - Sincronización Procesos

Sistemas Operativos

Semáforos

• Exclusión mutua:

§ Para cada proceso, cada SC debe ir precedido de un “wait(s)” sobre un semáforo binario s y debe terminar con un “signal(s)”.

Page 41: Clase IV - Sincronización Procesos

Sistemas Operativos

Semáforos

• Condiciones de sincronización: § Se asocia un semáforo a cada condición;

cuando un proceso ha hecho que se cumpla una determinada condición c, lo indica ejecutando un “signal(c)”; un proceso esperará a que la condición sea cierta mediante un “wait(c)”§ Se suelen utilizar semáforos generales (no

binarios). Permiten controlar la asignación de recursos. El valor del semáforo indicará cuántos recursos disponibles hay en cada momento.

Page 42: Clase IV - Sincronización Procesos

Sistemas Operativos

Semáforos

• Una implementación con espera activa:

Page 43: Clase IV - Sincronización Procesos

Sistemas Operativos

Semáforos

• Una implementación sin espera activa:

Page 44: Clase IV - Sincronización Procesos

Sistemas Operativos

Semáforos

• Limitaciones:

§ Uso no forzado, sólo por convención.§ No son un mecanismo de comunicación.§ No está limitado el tiempo que un proceso

puede estar bloqueado en un semáforo.§ Normalmente, no poseen una operación para

saber el estado sin exponerse a un bloqueo.§ En general, son mecanismos de bajo nivel.

Page 45: Clase IV - Sincronización Procesos

Sistemas Operativos

Semáforos

• Interbloqueo (deadlock):

§ Se produce cuando dos o más procesos esperan indefinidamente por un suceso que debe ser provocado por uno de los procesos que esperan.

Page 46: Clase IV - Sincronización Procesos

Sistemas Operativos

Semáforos

• Interbloqueo (deadlock):

§ Es fácil producirlo con semáforos.§ La solución es usar siempre el mismo orden

para los semáforos en todos los procesos; pero no siempre es posible hacerlo.

Page 47: Clase IV - Sincronización Procesos

Sistemas Operativos

Semáforos

• Inanición:

§ Un proceso nunca será eliminado de la cola del semáforo en el cual está suspendido.§ A diferencia del interbloqueo:

o No es cierto que el proceso no obtendrá nunca el recurso (el proceso espera por algo que, siempre que esté disponible, no le es asignado, por ejemplo por su baja prioridad).

o El recurso bajo contención está en uso continuo.