Vous êtes sur la page 1sur 62

SISTEMAS OPERATIVOS

Ing. Nancy Magaly Loja


2014
SINCRONIZACIN DE
PROCESOS
COMUNICACIN ENTRE
PROCESOS
Los procesos necesitan comunicarse con
otros procesos (IPC). Ejm una tubera.
ls | more
PROBLEMAS
Cmo puede un proceso pasar informacin
a otro?
Un proceso no puede estorbar al otro
CONDICIONES DE
COMPETENCIA
Procesos pueden compartir un
almacenamiento en comn: un rea de
memoria o un archivo.
EJEMPLO
Un spooler de impresin.
Dos procesos:
CONDICIONES DE
COMPETENCIA
1) Un proceso que desea imprimir, introduce
el nombre del archivo en un directorio de
spooler especial.

2) Otro proceso es el demonio de impresin,
que revisa peridicamente el directorio para
ver si hay archivo que imprimir.
Condiciones de
Competencia

Variables compartidas:
Out: apunta al siguiente archivo por
imprimir
In: apunta a la siguiente ranura libre del
spool
A y B decide de forma casi simultnea
poner archivos a imprimir.
Proceso A
Siguiente_ranura_libre =7
Interrupcin
Coloca el archivo
in=8

Proceso B
Lee in
Coloca el archivo
in= 8
CONDICIONES DE
COMPETENCIA
Fenmeno que se presenta cuando dos
ms procesos compiten por acceder un
mismo recurso.

Si no existe sincronizacin, pueden existir
serias inconsistencias


SECCIN CRTICA
Seccin o Regin Crtica: Es el rea o el mdulo
del proceso donde se accede a memoria o
variables compartidas.
PROCESO A
While(TRUE){
Seccin crtica();
Seccin no_crtica();
}
SECCIN CRTICA
Cuando un proceso esta accediendo a
memoria o archivos compartidos, o
efectuando otras tareas criticas que pueden
dar lugar a competencias, se dice que se
encuentra en una seccin crtica (o regin
crtica).

SECCIN CRTICA
La clave para evitar los problemas en sta y
otras situaciones relacionadas con la
memoria compartida, archivos compartidos
y cualquier otra cosa compartida, es
determinar una forma de prohibir que ms
de algn proceso lea o escriba en los datos
compartidos a la vez.

EXCLUSIN MTUA
Una forma de garantizar que si un proceso
utiliza una variables o archivo compartidos,
los dems procesos no puedan utilizarlos.
La exclusin mtua es prohibir que ms de
algn proceso lea o escriba en los datos
compartidos a la vez.
CONDICIONES SOLUCIN
1) Dos procesos nunca pueden estar
simultneamente dentro de sus regiones
crticas.
2) No puede suponerse nada acerca de las
velocidades o el nmero de las CPU
3) Ningn proceso que se ejecute fuera de su
seccin crtica puede bloquear a otros
procesos.
4) Ningn proceso deber tener que esperar
indefinidamente para entrar en su secin
critica
Exclusin mtua con espera activa
1) Inhabilitacin de Interrupciones:
La solucin ms sencilla es hacer que cada
proceso inhabilite todas las interrupciones
inmediatamente despus de ingresar a su
regin crtica.
Las vuelve a habilitar justo antes de salir
de la regin crtica.
Exclusin mtua con espera activa
Con las interrupciones desactivadas la CPU
no se puede conmutar a otro proceso.

Este esquema no es atractivo, porque no es
bueno que los proceso de usuarios
inhabiliten las interrupciones.
Exclusin mtua con espera activa
Si el sistema es multiprocesador la
inhabilitacin de interrupciones slo
afectar a la CPU que ejecuto la instruccin
de deshabilitar.
2)Variables de Candado
Solucin en software.
Uso de una variable compartida llamada
candado.
Candado inicialmente es cero.
Si Candado es =0 el proceso se establece
candado en 1 y entra en seccin critica.

2)Variables de Candado
Si candado es = 1, el proceso espera hasta
que candado = 0.
ERROR
Spooler (Proceso A lee candado=0, luego se
planifica ProcesoB y se ejecuta y asigna a
Candado=1; Proceso A continua..) tendremos
dos procesos en sus regiones crticas.
3) Alternancia Estricta
Solucin Software
Trabaja con una variable tipo turnos (turn)
turn=0 (turno del proceso 0)
turn =1 (turno del proceso 1)
Espera hasta que sea el turno (espera
activa).
3) Alternancia Estricta
proceso 0

3) Alternancia Estricta
proceso 1

3) Alternancia Estricta
Sin embargo, esta solucin no es ptima.
Supongamos la siguiente situacin:
1. A sale de su Seccin Critica y se pone en 1
2. B entra en su Seccin Critica, termina rpidamente, pone
turn en 0 y sale
3. Ahora A entra en su Seccin Critica, termina rpidamente
y sale, pone a turn en 1 y sale
4. En este punto A y B no estn en su Seccin No Critica .
Supongamos que A termina antes que B y desea entrar en
su Seccin Crtica . No podr hacerlo por que B esta
demorada y turn=1.
3) Alternancia Estricta
Esto provoca el incumplimiento de la Regla N 3 de la
exclusin mutua:
Ningn proceso suspendido, detenido o abortado fuera
de seccin crtica debe impedir la entrada a otro proceso
Esta solucin requiere que los dos procesos alternen de
forma estricta su entrada en las regiones criticas
respectivas .
Ninguno puede entrar dos veces seguidas.
Aunque este algoritmo elimina conflictos , no es la mejor
solucin.
4) Peterson
Solucin tipo software que no requiere
alternancia estricta.
Antes de usar variables compartidas, cada
proceso invoca a enter_region() con su
nmero de proceso 0 o 1.
Una vez que haya terminado de usar las
variables compartidas invoca a
leave_region()

Peterson
#define FALSE 0
#define TRUE 1
#define N 2
int turn;
int interested[N]; //all values initially 0
void enter_region(int process) {
int other;
other = 1 - process; // lo opuesto del proceso
interested[process]=TRUE; //mostrar inters
turn = process; // establecer bandera
while(turn == process && interested[other] == TRUE);
}
void leave_region(int process)
{
interested[process] = FALSE;
}

Prueba de Escritorio

4) Peterson
Si ambos procesos invocan enter_region()
casi simultneamente, ambos almacenarn
su nmero de proceso en turn, pero el nico
que cuenta es el que se almacena despus;
el primero se pierde.

Trata de solucionar el error de Peterson de
la espera activa
Utiliza primitivas de comunicacin entre
procesos para bloquearlos en lugar de
desperdiciar tiempo de CPU.
SLEEP()
WAKEUP()
Dormir y Despertar
El problema de productor-consumidor: dos
procesos comparten un mismo buffer de
tamao fijo.
Si el productor no puede seguir
produciendo, este se debe dormir(bloquear).
De igual forma el consumidor.
Dormir y Despertar
Dormir y Despertar
#define N 3
int count = 0;

void producer(void){
while (true) {
produce_intem();
if (count == N) sleep();
enter_item();
count = count + 1;
if (count == 1) wakeup(consumer);
}
}


void consumer(void){
while (true) {
if (count == 0) sleep();
remove_item();
count = count - 1;
if (count == N - 1) wakeup(producer);
consume_item();
}
}
Dormir y Despertar
ERRORES: Seal a despertar perdida
-buffer vaci, consumidor lee count para ver
si es cero, en ese instante se ejecuta el
productor, este coloca un elemento en el
buffer, incrementa count, ahora count vale
uno y el productor
SOLUCIN: bit de espera de despertar
Llamada a despertar a un proceso despierto
se enciende el bit.
Cuando el proceso trate de dormirse si el bit
est encendido se apaga.

SEMFOROS
Variable entera para contar el nmero de
despertares almacenados para su uso
posterior.
Un semforo puede tener valor 0 lo que
significa que no existen despertares
almacenados o bien algn valor positivo si
estn pendientes uno o ms despertares.
SEMFOROS
Operaciones DOWN y UP (
generalizaciones de SLEEP y WAKEUP).
UP y DOWN llamadas al sistema, para
inhabilitar brevemente las interrupciones
mientras prueba el semforo, lo actualiza y
pone el proceso a dormir si es necesario.
SEMFOROS
Operaciones:
Down UP
Si s >0 Si la cola procesos vaca
s = s -1; s = s+1;
Else else
Bloquear proceso Desbloquear Proceso
SEMFOROS
OPERACIONES :
Si el semforo vale mas de 0 lo decrementa
si no a dormir
Si hay procesos dormidos , despierta a uno ,
si no , incrementa el valor del semforo
Ambas operaciones han de ser atmicas
(indivisibles).

SEMFOROS
#define N 100
TYPEDEF int semaphore;
semaphore mutex = 1; /* Controla acceso a regin crtica.
semaphore empty = N; /* Cuenta las ranuras vacas
semaphore full = 0; /* Cuenta las ranuras llenas.
Void producer(void){
int item;
while (TRUE) {
produce_item(&item); /* Generar algo.
down(&empty); /* Decrementa ranuras vacas.
down(&mutex); /* Entrar en seccin crtica
enter_item(item); /* Inserta nuevo elemento.
up(&mutex); /* Sale seccin crtica.
up(&full); /* Incrementa ranuras llenas.
}
}

SEMFOROS
Void consumer(void){
int item;
while (TRUE) {
down(&full); /* Decrementa ranuras llenas.
down(&mutex); /* Entra seccin crtica.
remove_item(&item); /* Saca elemento.
up(&mutex); /* Sale de seccin crtica.
up(&empty); /* Incrementa ranuras vacas.
consume_item(item); /* Hacer algo con elemento consumido.
}
}

SEMFOROS
Semforos Binarios: Valores 0, 1
utilizados por dos o ms procesos, para
asegurar que slo un de ellos entre a su
regin crtica.
Semforos Sincronizacin: 0,1,
Garantiza la exclusin mutua.
SEMFOROS
ERRORES:
Errores humanos
Supongamos que el orden de los DOWN del
cdigo del productor se invierte, de modo que
mutex se incrementa antes que empty. Si el buffer
esta lleno, el productor se bloquea con mutex en
0.
Luego el consumidor ejecuta un DOWN con
mutex en 0.
Ambos dormirn eternamente.



MONITORES
Coleccin de procedimientos y datos,
agrupados en una especie de mdulo muy
especial conocido como mdulo monitor.
Los procesos pueden llamar a los
procedimientos del monitor siempre que lo
deseen, pero no pueden acceder
directamente a las estructuras de datos
internas del monitor desde procedimientos
declarados fuera del monitor.
MONITORES
Tienen una propiedad importante: solo un
proceso puede estar activo en un monitor en
un instante de tiempo. (Exclusin Mutua).

Compilador no el programador garantizan la
Exclusin Mutua.

MONITORES
Los monitores proveen un nuevo tipo de
variables de condicin con dos operaciones que
operan sobre el.
Wait -> wait(a) : produce que el proceso que
ejecuta la instruccin sea interrumpido y
removido de la cola de ready hasta que otro
proceso lo habilite ejecutando la instruccin
signal( )con la misma variable de condicin.
MONITORES
Signal -> signal(a) : Habilita la ejecucin
de algn proceso en espera por la ejecucin
de la instruccin wait con la misma variable
de condicin.


MONITORES
Monitor example
Integer i ;
Condition c ;
Procedure producer (x);
.
.end ;
procedure consumer (x);
..
end;
end monitor

MONITORES
Se disearon para resolver el problema de la
exclusin mutua en uno o varios CPU que
tienen acceso a una memoria comn. En
sistemas distribuidos con su propia memoria
estas primitivas ya no funcionan.
Muchos lenguajes carecen de monitores.
BLOQUEOS MUTUOS
Entorno multiprogramacin Varios
procesos pueden competir por un nmero
finito de recursos
Procesos esperando recursos; nunca
cambiaran de estado.
BLOQUEOS MUTUOS
Una carencia de sincronizacin de
procesos puede dar lugar a dos
condiciones extremas:
El bloqueo mutuo (abrazo mortal)
La inanicin
BLOQUEOS MUTUOS
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
Modelo del Sistema:
Los recursos finitos pueden ser de varios tipos
cada uno de los cuales consta de varias
instancias.
Ejms: el espacio de memoria, los ciclos de
CPU, los archivos, los dipositivos de E/S.
Si el sistema tiene dos CPU, se dice que
tiene dos ejemplares

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
BLOQUEOS MUTUOS
Secuencia de uso de recursos

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
Solicitud y liberacin llamadas al sistema:
request, release, device, open, entre otras.
No son administradas por el SO pueden
hacerse mediante semforos.
Tablas en sistema para registrar solicitudes
y liberaciones
BLOQUEOS MUTUOS
Un conjunto de procesos esta bloqueado
cuando cada uno posee un recurso y esta a
la espera de obtener un recurso posedo por
otro proceso del conjunto.
BLOQUEOS MUTUOS
Caracterizacin de B.M.
1. Exclusin Mutua
Slo un proceso podr usar el recurso. Recurso retenido
no compatible.
2. Retener y esperar
Cuando los procesos que tienen recursos previamente
otorgados solicitan otros recursos.
3. No apropiacin
Un recurso no puede ser arrebatado a otro proceso, solo
lo libera voluntariamente.

BLOQUEOS MUTUOS
Caracterizacin de B.M.
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
Grfica Asignacin de Recursos
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
Grfica Asignacin de Recursos
Un conjunto de vrtices V y un conjunto
de aristas dirigidas E.
V es particionado en dos tipos:
P = {P1, P2, , Pn}, el conjunto consistente de todos los
procesos en el sistema.
R = {R1, R2, , Rm}, el conjunto consistente de todos los
tipos de recursos en el sistema.
Arista de peticin arista dirigida P1 Rj
Arista de asignacin arista dirigida Rj Pi
BLOQUEOS MUTUOS
Grfica Asignacin de Recursos
BLOQUEOS MUTUOS
Grfica Asignacin de Recursos
CICLOS
a) Si la grfica no contiene ciclos; no hay BM
b) Si hay un ciclo y una sola instancia de cada
recurso, condicin suficiente para BM.
c) Varios ciclos BM.
EJEMPLOS:

BLOQUEOS MUTUOS
Grfica Asignacin de Recursos

BLOQUEOS MUTUOS
Grfica Asignacin de Recursos
BLOQUEOS MUTUOS
Grfica Asignacin de Recursos

Vous aimerez peut-être aussi