You are on page 1of 47

Presentación

Sincronización de Procesos
INGENIERÍA EN INFORMÁTICA
Sistemas de Operación
(actualizado)

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA

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.

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.
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.

Sistemas Operativos
Procesos Cooperativos

• Ejemplo 1:

Sistemas Operativos
Procesos Cooperativos

• Ejemplo 2:

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).

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.

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).

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.

Sistemas Operativos
Sincronización

• Ejemplo: dos hilos ejecutan los códigos


mostrados y comparten la variable I.

Sistemas Operativos
Sincronización

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

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.

Sistemas Operativos
Sincronización

• Ejemplo: Problema del buffer limitado


(productor-consumidor).

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?
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.

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:

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.

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.

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.

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.

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.
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.

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.

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.

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.

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”.

Sistemas Operativos
Región Crítica

• Algoritmo 1 (variable de control


compartida):

Sistemas Operativos
Región Crítica

• Algoritmo 2 (avisadores):

Sistemas Operativos
Región Crítica

• Algoritmo 3 (espera infinita):

Sistemas Operativos
Región Crítica

• Algoritmo 4 - Peterson (variable global +


espera infinita):

Sistemas Operativos
Región Crítica

• Algoritmo 5 - Lamport (para 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.

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).

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.
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.

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.
Sistemas Operativos
Semáforos

• Las operaciones involucradas en P y V son


“indivisibles”:

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.

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)”.

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.
Sistemas Operativos
Semáforos

• Una implementación con espera activa:

Sistemas Operativos
Semáforos

• Una implementación sin espera activa:

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.

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.

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.

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.

Sistemas Operativos

You might also like