Está en la página 1de 49

SISTEMAS OPERATIVOS

SINCRONIZACION DE PROCESOS

PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Filsofos Comensales ( Dijkstra, 1965 )
Cinco filsofos pasan la vida
pensando y comiendo

Cuando un filsofo piensa, no
interacta con sus colegas

Cuando tiene hambre, toma los dos
palillos al mismo tiempo y come sin
soltarlos

Cuando termina de comer, coloca los dos palillos sobre la
mesa y comienza a pensar
PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Filsofos Comensales ( Dijkstra, 1965 )
Necesidad de asignar varios recursos entre varios procesos
sin que haya bloqueos mutuos ni inanicin

Primera Solucin
Representar cada palillo con un semforo

Un filsofo trata de tomar un palillo ejecutando una
operacin espera con ese semforo, y suelta sus palillos
ejecutando la operacin seal con los semforos apropiados.
var palillo: array [0..4] of semforo;

Inicialmente todos los elementos de palillo estn en 1
PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Filsofos Comensales ( Dijkstra, 1965 )
Primera Solucin
Garantiza que dos vecinos no estarn comiendo
simultneamente

Posibilidad de bloqueo mutuo

Suponga que los cinco filsofos sienten hambre
simultneamente y cada uno toma su palillo izquierdo
PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Filsofos Comensales ( Dijkstra, 1965 )
Posibles soluciones al problema de bloqueos
Permitir que como mximo filsofos se sienten a la mesa
cuatro filsofos

Slo permitir que un filsofo tome sus palillos si ambos estn
disponibles ( dentro de la seccin crtica )

Solucin asimtrica Un filsofo impar toma primero su
palillo izquierdo y luego el derecho, mientras que un filsofo
par toma primero su palillo derecho y luego el izquierdo.

PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Filsofos Comensales ( Dijkstra, 1965 )
Cualquier solucin satisfactoria deber evitar la posibilidad
que uno de los filsofos muera de hambre.

Una solucin libre de bloqueos mutuos no elimina
necesariamente la posibilidad de inanicin

Solucin por monitores
Distinguir entre los tres estados en los que podra estar un
filsofo Pensando, hambriento y comiendo

Definir el estado del mismo filsofo
PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Lectores y Escritores ( Courtois et al., 1971)
Lector Lector Escritor Lector Escritor
Recurso
Existe un determinado objeto que se va a ser utilizado y
compartido por una serie de procesos concurrentes.
PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Lectores y Escritores ( Courtois et al., 1971)
Un objeto se va a compartir entre varios usuarios, algunos
solo quieren leer el contenido ( lectores ), otros quieren
actualizarlo (escritores)

Restricciones
Slo se permite que un escritor tenga acceso al objeto al
mismo tiempo. Mientras el escritor est accediendo al objeto,
ningn otro proceso lector ni escritor podr acceder a l.

Se permite que mltiples lectores tengan acceso al objeto, ya
que ellos nunca van a modificar el contenido del mismo
PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Lectores y Escritores ( Courtois et al., 1971)
Primer Problema : No se debe tener a ningn lector en espera
a menos que el escritor tenga el permiso del uso del objeto

Segundo Problema : Si un escritor est esperando acceder al
objeto, ningn otro lector puede comenzar a leer.

Sol/ Definir prioridades a lectores y escritores

Utilizado para probrar las primitivas de sincronizacin
nuevas

PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Productor Consumidor ( Buffer limitado )
Proceso
Productor
Proceso
Consumidor
Flujo de datos
Mecanismo de
Comunicacin
Uno o ms procesos, que se denominan productores, generan
cierto tipo de datos que son utilizados por otros procesos que
se denominan consumidores
PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Productor Consumidor ( Buffer limitado )
Mecanismo de Comunicacin
Cuando se llene Productor bloqueado
Cuando est vaco Consumidor bloqueado

Buffer

Solucin Semforos
Valor mximo Tamao del buffer
Valor mnimo Cero

PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Productor Consumidor ( Buffer limitado )
int N = 100; /*Nmero mximo en el buffer*/
int count = 0; /*Nmero de elementos en el buffer*/

void productor( ){
if (buffer == lleno) then dormir();
else {
aadir nuevo elemento a la lista;
incrementar count;
verificar estado consumidor;
}
}
PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Productor -- Consumidor ( Buffer limitado )
void consumidor( ){
if (buffer == vaco) then dormir();
else {
eliminar elemento de la lista;
decrementar count;
verificar estado productor;
}
}

PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Barbero Dormiln
La peluquera tiene :
Un barbero
Una silla de barbero
n sillas para los clientes

PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Barbero Dormiln
No hay clientes presentes El barbero se sienta en la silla
de barbero y se duerme

Cuando llega un cliente, debe despertar al barbero

Si llegan ms clientes mientras el barbero est atendiendo a
un cliente, se sientan (si hay sillas vacas), o bien, salen de la
peluquera (si todas las sillas est ocupadas)

Problema : Programar al barbero y a los clientes sin caer en
condiciones de competencia
PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Barbero Dormiln
Semforo wait signal
max_capacidad El cliente espera hasta que
haya sitio para entrar en la
peluquera
El cliente que sale avisa
a un cliente que est
esperando para entrar
sillas El cliente espera una silla
vaca
El cliente que abandona
la silla avisa a un cliente
que espera silla
silla_barbero El cliente espera hasta que
la silla del barbero est
vaca
El barbero avisa cuando
su silla queda vaca
cliente_listo El barbero espera hasta
que el cliente est en la
silla
El cliente avisa al
barbero que ya est en la
silla
PROBLEMAS CLSICOS DE SINCRONIZACIN
Y COMUNICACIN
Barbero Dormiln
Semforo wait signal
terminado El cliente espera a que el
corte de cabello est
completo
El barbero avisa cuando
termina el corte de cabello
a un cliente
dejar_silla_v El barbero espera hasta que
el cliente se levante de la
silla
El cliente avisa al barbero
cuando se levanta de la
silla
BLOQUEOS MUTUOS
Entorno multiprogramacin Varios procesos pueden
competir por un nmero finito de recursos

Proceso solicita un recurso
No est disponible Espera
Puede que no cambie de estado Los recursos solicitados
estn en manos de otros procesos que tambin estn en
espera

Interbloqueo

Problema similar Inanicin, aplazamiento indefinido o
bloqueo indefinido
BLOQUEOS MUTUOS
Modelado del Sistema
Un sistema se componen de un conjunto finito de recursos
(unidades de cinta, impresoras, CPU, etc..)

Procesos compiten por los recursos

Si el sistema tiene por dos CPU, se dice que tiene dos
ejemplares

Todos los S.O deben otorgar a un proceso (en forma
temporal) acceso exclusivo a ciertos recursos.
BLOQUEOS MUTUOS
Ejemplo
Suponga que dos procesos quieren quemar un documento
digitalizado en un CD.

Proceso A solicita autorizacin para usar el escner y se le
concede.
Proceso B solicita primero el quemador de CD y tambin se
le concede.

Ahora A, pide el quemador de CD, pero se le niega porque B
no lo ha liberado
B solicita el escner, pero sin liberar el quemador de CD.

PROCESOS A Y B ESTN BLOQUEADOS
Solicitud
Uso Llamadas al Sistema
Liberacin

El recurso no est disponible cuando se solicita
El proceso solicitante debe esperar
En algunos S.O el proceso se bloquea automticamente y
despierta cuando dicho recurso est disponible
La solicitud falla y el proceso debe esperar para pedir el
recurso.
BLOQUEOS MUTUOS
Secuencia de uso de recursos
1. Exclusin Mutua
Slo un proceso podr usar el recurso

2. Retener y esperar
Los procesos que tienen recursos previamente otorgados
pueden solicitar otros recursos.

3. No apropiacin
Un recurso no puede ser arrebatado a otro proceso
BLOQUEOS MUTUOS
Condiciones para el bloqueo mutuo
4. Espera circular
Debe existir un conjunto {P
0
,P
1
..,P
n
} de procesos en
espera tal que P
0
est esperando un recurso que fu
adquirido por P
1
, P
1
est esperando un recurso que fu
adquirido por P
2
,.., P
n-1
est esperando un proceso
que fu adquirido por P
n
y P
n
est esperando un recurso
que fu adquirido por P
0

BLOQUEOS MUTUOS
Condiciones para el bloqueo mutuo
BLOQUEOS MUTUOS
Modelacin de Bloqueos
Grafos de Asignacin de Recursos
Nodos Procesos y Recursos
Arcos De un proceso a un recurso Solicitud
De un recurso a un proceso Asignacin
Ciclos Indica la existencia de un bloqueo
BLOQUEOS MUTUOS
Modelacin de Bloqueos
Ejemplo
Procesos A, B, C Recursos R, S, T

Asignaciones Solicitudes
R asignado a A A solicita a S
S asignado a B B solicita a T
T asignado a C C solicita a R

Pregunta. Est bloqueado este sistema y, en tal caso, cules
son los procesos bloqueados?.
BLOQUEOS MUTUOS
Estrategias para enfrentar los Bloqueos
I gnorar todo el problema : Quiz si nos olvidamos de l, l se
olvidar de nosotros
Algoritmo del Avestruz

Detectar y recuperarse del bloqueo : Dejar que se presenten
bloqueos mutuos, detectarlos y tomar medidas

Prevenir el bloqueo : Anular una de las cuatro condiciones
necesarias para que haya un bloqueo mutuo

Evitar el bloqueo : Asignacin cuidadosa de recursos
BLOQUEOS MUTUOS
Algoritmo para detectar un Bloqueo
Algoritmo aplicable a cada nodo N de la grfica:
1. Se considera a N como nodo inicial.
2. Se inicializan:
La estructura de datos Lcomo una lista vaca.
Todos los arcos como no marcados.
3. Se aade el nodo activo al final de L y se verifica si el
nodo aparece en L dos veces:
Si aparece dos veces existe un ciclo y el algoritmo termina.
4. Desde el nodo dado se verifica si existen arcos que salgan
de dicho nodo y no estn marcados:
En caso afirmativo se va al paso 5.
En caso negativo se va al paso 6.
BLOQUEOS MUTUOS
Algoritmo para detectar un Bloqueo
Continuacin Algoritmo
5. Se elige al azar un arco de salida no marcado y se le marca:
Luego se sigue este arco hasta el nuevo nodo activo y se
regresa al paso 3.
6. Se ha llegado a un punto donde no se puede continuar:
Se regresa al nodo anterior, es decir al que estaba activo
antes del actual.
Se seala de nuevo como nodo activo.
Se va al paso 3.
Si este nodo era el nodo inicial, la grfica no contiene ciclos
y el algoritmo termina.
BLOQUEOS MUTUOS
Algoritmo para detectar un Bloqueo
Ejemplo: Sistema con 7 (siete) procesos (A a G) y 6 (seis)
recursos (R a W):
La posesin de los recursos es la siguiente:
El proceso A posee a R y desea a S.
El proceso B no posee recurso alguno y desea a T.
El proceso C no posee recurso alguno y desea a S.
El proceso D posee a U y desea a S y a T.
El proceso E posee a T y desea a V.
El proceso F posee a W y desea a S.
El proceso G posee a V y desea a U.
Pregunta : Est bloqueado este sistema y, en tal caso, cules
son los procesos bloqueados?.
BLOQUEOS MUTUOS
Cmo recuperarse de un Bloqueo
Estrategias -- Apropiacin de Recursos
Arrebatar de manera temporal un recurso a su actual
poseedor y drselo a otro proceso.

Manualmente

La seleccin del proceso a suspender depende de qu procesos
tienen recursos que pueden quitarse con facilidad

BLOQUEOS MUTUOS
Cmo recuperarse de un Bloqueo
Estrategias Eliminacin de recursos
Escoger como vctima un proceso que no se encuentre en el
ciclo, a fin de liberar recursos.

Eliminar sucesivamente los procesos bloqueados

Liberar todos los procesos y recursos
BLOQUEOS MUTUOS
Prevenir el Bloqueo
Disear un sistema donde quede excluida la posibilidad de
bloqueo

Anular una de las cuatro condiciones necesarias para que
haya un bloqueo mutuo

Exclusin Mutua
Jams asignar un recurso en forma exclusiva a un solo
proceso.
Inconveniente El S.O debe soportar la exclusin mutua.
Ejemplo: Escribir en un archivo.
BLOQUEOS MUTUOS
Prevenir el Bloqueo
Retener y esperar
Hacer que los procesos soliciten todos sus recursos antes de
comenzar a ejecutarse

Inconveniente Muchos procesos no saben, antes de iniciar
se ejecucin, cuntos recursos van a necesitar.

No har uso ptimo de los recursos

S/ Exigir a un proceso que solicita un recurso que primero
libere en forma temporal todos los que tiene.
BLOQUEOS MUTUOS
Prevenir el Bloqueo
No apropiacin
Si a un proceso se le niega el uso de un recurso liberar
todos los recursos


Espera circular
Todo proceso tiene derecho a utilizar un recurso en todo
momento. Si necesita un segundo recurso, deber liberar el
primero
BLOQUEOS MUTUOS
Prevenir el Bloqueo
Espera circular
Asignar prioridades a los recursos

Ejemplo.
1. Impresora
2. Escner
3. Graficador
4. Unidad de cinta
5. Unidad de CD

Imposible llegar a un ordenamiento que satisfaga a todos
BLOQUEOS MUTUOS
Tcnicas para Evitar Bloqueos
Bloqueo Mutuo Cuando un proceso pide recursos, en algn
momento pedir mas.

El sistema debe tener la capacidad de distinguir si se puede
otorgar sin peligro un recurso o no, y solo efecttuar la
asignacin si no hay peligro.

Hay algn algoritmo que siempre pueda evitar los bloqueos
mutuos tomando la decisin correcta todo el tiempo?
BLOQUEOS MUTUOS
Tcnicas para Evitar Bloqueos
Obligar a cada proceso a definir el nmero mximo de
recursos que podra necesitar

Revisar dinmicamente el estado de asignacin de recursos
Nmero de recursos disponibles y asignados
Demandas mximas de los procesos

BLOQUEOS MUTUOS
Tcnicas para Evitar Bloqueos
Estados Seguros e inseguros
El sistema puede asignar recursos a cada proceso
Secuencia segura

Bloqueo mutuo Estado inseguro

Algoritmo del Banquero Dijkstra

Cuando un proceso nuevo entra en el sistema, debe declarar
el nmero mximo de recursos que podra necesitar
BLOQUEOS MUTUOS
Tcnicas para Evitar Bloqueos
Estructuras para implementar el algoritmo
n Nmero de procesos del Sistema
m Nmero de recursos

Disponible : Vector de longitud m
Disponible( j ) = k;
Mx: Matriz de n*m Demanda mxima de cada proceso
Mx[ i, j ] =k
Asignacin : Matriz de n*m Nmero de recursos que se
han asignado a cada proceso
Asignacin [ i, j ] =k
BLOQUEOS MUTUOS
Tcnicas para Evitar Bloqueos
Estructuras para implementar el algoritmo
Necesidad: Matriz de n*m Recursos que todavia le faltan a
cada proceso
Necesidad[ i ,j ] =k

Necesidad[ i, j ] =Mx[ i, j ] - Asignacin [ i, j ] =k
BLOQUEOS MUTUOS
Tcnicas para Evitar Bloqueos
Algoritmo de Seguridad Un sistema est en estado seguro???

1. Sean Trabajo y Fin vectores con longitud m y n. Asignar los
valores iniciales
Trabajo = Disponible y Fin[i]=false para i = 1, 2, ...,n

2. Buscar un i tal que
a. Fin[i] =false, y
b. Necesidad
i
<= Trabajo
Si no existe tal i, continuar con el paso 4
BLOQUEOS MUTUOS
Tcnicas para Evitar Bloqueos
3. Trabajo = Trabajo +Asignacin
i

Fin[i] =true
Ir al paso 2

4. Si Fin[i] =true para todo i, el sistema est en un estado
seguro
BLOQUEOS MUTUOS
Tcnicas para Evitar Bloqueos
Algoritmo de Solicitud de Recursos
Sea Solicitud
i
el vector de solicitudes del proceso P
i
.
Si Solicitud
i
[ j ] =k, el proceso P
i
quiere k recursos de R
j
.
Cuando P
i
solicita recursos, se hace lo siguiente:

1. Si Solicitud
i
<= Necesidad
i
, ir al paso 2. En caso contrario,
indicar una condicin de error, pues el proceso ha excedido su
reserva mxima
BLOQUEOS MUTUOS
Tcnicas para Evitar Bloqueos
Algoritmo de Solicitud de Recursos
2. Si Solicitud
i
<= Disponible, ir a paso 3. En caso contrario, P
i

deber esperar, ya que los recursos no estn disponibles

3. Hacer que el sistema simule haber asignado al proceso P
i

los recursos que solicit modificando el estado como sigue:
Disponible =Disponible Solicitud
i
;
Asignacin
i
=Asignacin
i
+Solicitud
i
;
Necesidad
i
=Necesidad
i
- Solicitud
i
BLOQUEOS MUTUOS
Tcnicas para Evitar Bloqueos
Ejemplo
Considere un sistema con cinco procesos, P0 a P4 y tres tipos
de recursos A, B y C. El tipo de recursos de A tiene 10
ejemplares, B tiene 5 ejemplares y C tiene 7 ejemplares
Asignacin Mx Disponible
A B C A B C A B C
P0 0 1 0 7 5 3 3 3 2
P1 2 0 0 3 2 2
P2 3 0 2 9 0 2
P3 2 1 1 2 2 2
P4 0 0 2 4 3 3
BLOQUEOS MUTUOS
Tcnicas para Evitar Bloqueos
Ejemplo
Suponga que, en el instante T0, se tom la siguiente
instantnea del sistema:
Necesidad =Mx - Asignacin
Necesidad
A B C
P0 7 4 3
P1 1 2 2
P2 6 0 0
P3 0 1 1
P4 4 3 1
El sistema est en un estado seguro?

Qu pasa si llega la siguiente
solicitud. Solicitud
1
= (1,0,2)

Busque una secuencia de procesos
que satisfaga los criterios de
seguridad.

BLOQUEOS MUTUOS
Tcnicas para Evitar Bloqueos
Ejemplo
Aplicar el algoritmo de solicitud de recursos
Asignacin Necesidad Disponible
A B C A B C A B C
P0 0 1 0 7 4 3 2 3 0
P1 3 0 2 0 2 0
P2 3 0 2 6 0 0
P3 2 1 1 0 1 1
P4 0 0 2 4 3 1
Aplicar el algoritmo de seguridad
Qu sucede si llega una solicitud de P4 con (3,3,0)??
Qu sucede si llega una solicitud de P2 con (0,2,0)??
BLOQUEOS MUTUOS
Tcnicas para Evitar Bloqueos
Ventajas del Algorimo del Banquero
Ofrece una forma de asignar recursos
Permite la ejecucin de tareas que tendran que esperar en
una situacin de prevencin del bloqueo mutuo

Desventajas
Requiere un nmero fijo de recursos asignables
No es posible contar que ser siempre constante el nmero de
recursos
BLOQUEOS MUTUOS
Tcnicas para Evitar Bloqueos
Desventajas
Requiere una poblacin de usuarios constante
Multiprogramacin


El algoritmo necesita que los usuarios declaren por
anticipado sus necesidades
Asignacin de recursos dinmica

También podría gustarte