Está en la página 1de 37

Sincronizacin de

Procesos
La Cena de los Filsofos
Que es la sincronizacin
Con el fin de cumplir con una meta comn,
los procesos interactivos necesitan compartir
datos o coordinar sus actividades entre s.

Se refiere al acto de asegurarse de que los


procesos/hilos independientes que
comienzan a ejecutar un bloque de cdigo
concreto al mismo tiempo, no presenten
problemas de ejecucin.
Que es la sincronizacin
La sincronizacin para acceder a los
datos garantiza que aquellos que se
comparten no pierdan consistencia
cuando son actualizados por varios
procesos.
La sincronizacin de controles
asegura tambin que los proceso
interactivos realicen sus acciones
en un orden deseado.
Tipos de sincronizacin
Sincronizacin de acceso a datos: se usa
para acceder a datos compartidos de
manera mutuamente exclusiva. Esto evita
la condiciones de ejecucin y salvaguarda
la consistencia de datos compartidos.

Sincronizacin de controles: es
necesaria si un proceso ejecuta alguna
accin, solo despus de que algunos otros
procesos han ejecutado una serie de
acciones, o solo cuando se tiene una serie
de condiciones.
La tcnica bsica que se usa para
realizar la sincronizacin consiste en
bloquear un proceso hasta que una
accin apropiada es ejecutada por otro,
o hasta que se cumpla una condicin.

As, la sincronizacin de acceso a datos


se realiza bloqueando un proceso hasta
que otro termina su acceso a los datos
compartidos. La sincronizacin de
controles se realiza bloqueando un
proceso hasta que otro efectu una
accin especifica.
Seccin Critica (SC)
Definicin: Una Seccin Critica para
un tem de dato, es una seccin de
cdigo que no debe ser ejecutada
consigo misma ni con otras secciones
criticas.
Sean un conjunto de procesos
cooperantes. Cada proceso tiene un
segmento de cdigo en el cual puede
modificar variables comunes, o un
archivo, o una tabla. Llamamos
seccin crtica (SC) a ese segmento de
cdigo.
Seccin Critica
Las SC se producen en el Software
concurrente siempre que dos
procesos/hilos acceden a una variable
compartida comn.

Si los autos coinciden en una


seccin critica se produce
un fallo en el trafico.
Cualquier vehculo puede
utilizar la seccin critica,
siempre que ningn otro
est utilizndola.
Exclusin mutua

Cuando un proceso esta


ejecutando ese segmento de
cdigo crtico, ningn otro
proceso puede ejecutarlo.
Laejecucin de la seccin
crtica es mutuamente
exclusiva en el tiempo.
Exclusin mutua
Implementacin de una SC
Propiedades esenciales de una
implementacin de SC:
Correccin: En cualquier momento dado, a lo
sumo un proceso podr ejecutar una SC par un
item de dato.
Progreso: Cuando una SC no est en uso, uno
de los procesos que desean entrar en ella
recibir permiso de entrar en la SC.
Espera Limitada: La cantidad de veces que
otros proceso pueden obtener la entrada esta
limitada por un numero entero finito.
INTERBLOQUEO
INTERBLOQUEO
Es una situacin en la que dos o mas
procesos/hilos caen en un estado en el
que cada uno est controlando un
recursos que el otro necesita.
En SW los interbloqueos se producen por
el un proceso tiene un recurso (Archivo A)
mientras est solicitando otro (Archivo B).
Al mismo tiempo, otro proceso tiene el
segundo recurso (Archivo B) mientras est
solicitando el primero (Archivo A).
Los proceso nunca tendrn los recursos
que necesitan y ambos permanecern en
estado de interbloqueo para siempre.
Problema de la espera activa
Una espera activa es una situacin en la
que un proceso revisa de modo repetido si
se cumple con una condicin que lo
habilitara para poder pasar un punto de
sincronizacin .
Solo termina cuando cumple esta
condicinUna espera activa mantiene al
CPU ocupado en la ejecucin de un
proceso, aun cuando el proceso no haga
nadaEl rendimiento del sistema lo
padece.
Ejemplo: Lista
Suponga que dos hilos. P1 y P2 manipulan
una lista en comn. Cada tarea es capaz de
aadir o borrar una entrada, teniendo que
actualizar la longitud de la cabecera. As,
cuando se produce una operacin de
borrado, se debe decrementar la longitud, y
cuando se aade una entrada, la longitud
debe incrementarse.
SEMAFOROS
Para qu se utilizan
Los semforos se emplean para
permitir el acceso a diferentes
partes de programas (llamados
secciones crticas) donde se
manipulan variables o recursos que
deben ser accedidos de forma
especial. Segn el valor con que son
inicializados se permiten a ms o
menos procesos utilizar el recurso
de forma simultnea.
18
Un semforo es una variable especial
(o tipo abstracto de datos) que
constituye el mtodo clsico para
restringir o permitir el acceso a
recursos compartidos (por ejemplo,
un recurso de almacenamiento del
sistema o variables del cdigo fuente)
en un entorno de multiprocesamiento
(en el que se ejecutarn varios
procesos concurrentemente).
Fueron inventados por Edsger
Disjkstra y se usaron por primera vez
en el sistema operativo THEOS. 19
DEFINICIN

Dijkstra defini un semforo (s)


como una variable de sincronizacin
que es manipulada a travs de las
operaciones:
P (una abreviatura de proberen que
significa comprobar) wait(s).
V (una abreviatura de Verhogen que
significa incrementar) signal(s).

20
Un Semforo, s, es una variable entera no
negativa modificada o comprobada slo por
una de las dos rutinas de acceso:
V(s): [ s = s + 1 ]

P(s): [while (s==0) {esperar}; s = s - 1]

La operacin es mas compleja. Si s es mayor


que 0, se comprueba y decrementa en una
operacin indivisible. Sin embargo, si s es
igual a 0, el proceso ejecutado en la
operacin P puede ser interrumpido cuando
ejecuta la orden esperar en el bucle while.
La operacin P se emplea para comprobar de manera
indivisible una variable entera y para bloquear el
proceso invocador si la variable no es positiva.
La operacin V lanza indivisible una seal a un proceso
bloqueado para permitirle que reanude su
funcionamiento.
El valor inicial de un semforo llamado MUTEX es 1
(MUTEX es el nombre clsico del trabajo original de
Dijkstra que proviene de Mutual Exclusin).
Cuando un proceso est listo para entrar en su seccin
critica aplica la operacin P sobre mutex. El primer
proceso en invocar P sobre mutex pasa y el segundo se
bloquea. Cuando el primero invoca V sobre mutex,
contina su ejecucin, haciendo que le segundo pueda
proceder cunado tome control de la CPU.
Tipos de semforos
Hay dos tipos de semforos dependiendo de su valor inicial:

Semforo binario: Garantiza el acceso


exclusivo a algn recurso. El semforo es
inicializado a 1. Tambin es llamado
semforo MUTEX.
Semforos generales: Representan un
recursos con muchas unidades disponibles
(indicado por el nmero al que es
inicializado el semforo). Un semforo de
ste tipo deja pasar a tantos threads (o
procesos) como recursos haya disponibles.

23
Problemas clsicos de Sincronizacin
Buffer Dos procesos comparten un buffer de tamao
definido (N)

Productor

Consumidor
24
Problemas clsicos de Sincronizacin
Buffer Dos procesos comparten un buffer de tamao
definido (N)

Productor
Escribe datos

25
Problemas clsicos de Sincronizacin
Buffer Dos procesos comparten un buffer de tamao
definido (N)

Productor

Saca datos
Consumidor

26
Problemas clsicos de Sincronizacin
Buffer Qu sucede cuando el buffer est lleno y el
productor desea poner un dato?

Productor ?

Consumidor

27
Problemas clsicos de Sincronizacin
Buffer Qu sucede cuando el buffer est vaco y el
consumidor desea sacar un dato?

Productor

?
Consumidor

28
Problema: PRODUCTORES -
CONSUMIDORES

N :buffer de un items cada uno.


mutex :semforo inicializado en 1.
Lleno : semforo inicializado en 0. (contador)
Vacio : semforo inicializado en N. (contador)
Productor
while (TRUE) { (Obs: el productor por Vacio >0
produce item; para poder anadir items.
P(Vacio);
P(mutex);
aade item al buffer;
V(mutex);
V(Lleno);
}
consumidor
while (TRUE) { (Obs: El consumidor espera por Leno>0)
P(Lleno);
P(mutex);
remueve item del buffer;
V(mutex);
V(Vacio);
consume item;
}
Ejercicio
En una tienda de mascotas estn teniendo problemas para tener
a todos sus hamsters felices. Los hamsters comparten una jaula
en la que hay un plato con comida y una rueda para hacer
ejercicio. Todos los hamsters quieren inicialmente comer del
plato y, despus, correr en la rueda. Pero se encuentran con el
inconveniente de que slo tres de ellos pueden comer del plato
al mismo tiempo y slo uno puede correr en la rueda. Define un
proceso que ejecuten los hamsters concurrentemente de forma
que sincronicen estas actividades usando semforos.

Hacer una tabla donde se identifique los semforos a utilizar


para solucionar el problema, indicando las acciones a realizar
en las seales wait y signal.

Realizar el algoritmo que resuelve el problema, indicando los


valores iniciales de los semforos.
Semforo Valor Wait (s) Signal (s)
Inicial

Puedo_comer 3 Verifica el valor de la Incrementa el valor de la


variable, si es >0 variable lo cual significa que
decrementa en una el proceso queda libre.
unidad, si es =0 bloquea
el proceso.

Rueda 1 Verifica el valor de la Incrementa el valor de la


variable binaria, si es variable binaria en 1, lo cual
igual a 1 significa que el significa que el recurso esta
recurso esta disponible y disponible.
puede ser usado. Si es
igual a 0 significa que no
esta disponible
bloqueando el proceso
El Problema de la Barbera
Los Barberos Dormilones
Resolver el problema de la barbera con los siguientes
supuestos: La barbera procesar 110 clientes al da,
pero la mxima capacidad de la barbera ser de 20
clientes. Una vez dentro los clientes esperan de pie a
que se les sirva, pero 6 pueden sentarse en un sof. Hay
tres barberos, con tres sillas de barbero, que cortan el
pelo a los clientes. Cuando terminan, cada barbero
puede aceptar el pago del cliente, pero solo hay una
caja registradora, por lo que los pagos solo pueden
aceptarse uno a uno. Los barberos reparten su tiempo
entre cortar el pelo y aceptar los pagos. La aplicacin
debe codificarse utilizando semforos.
La Barbera

Sillas de Barberos

Caja

Entrada

Salida
Sala de espera
de pie
Sof

También podría gustarte