Está en la página 1de 26

Unidad 1:

Gestin de Procesos
Tema 1, Concurrencia:
Exclusin mutua y sincronizacin.
1.1 Problema de la seccin crtica, alternativas al uso de semforos:
- Regiones crticas, Monitores, Variables de condicin y Paso de
mensajes.
1.2 Problemas clsicos de sincronizacin:
- Productor consumidor usando monitores y paso de mensajes.
Problema de los Lectores /escritores.
Escuela Universitaria de
Informtica (Segovia)

1.1 Problema de la seccin crtica.

El problema de la seccin crtica (Conceptos generales):

Concurrencia: Existencia simultnea de varios procesos en


ejecucin.
IMPORTANTE: EXISTENCIA SIMULTNEA NO IMPLICA
EJECUCIN SIMULTNEA.
Necesidad de sincronizacin y comunicacin.
Comunicacin: Necesidad de transmisin de informacin
entre procesos concurrentes.
Sincronizacin: Necesidad de que las ejecuciones de los
procesos concurrentes se produzcan segn una secuenciacin
temporal, conocida y establecida entre los propios procesos.

Escuela Universitaria de
Informtica (Segovia)

1.1 Problema de la seccin crtica.

El problema de la seccin crtica (Conceptos generales):

Exclusin mutua: Para que el acceso a ciertos recursos


sea exclusivo de un proceso cada vez. A la parte del
programa que los utiliza se le llama seccin crtica.

Seccin crtica:
Cada proceso tiene un segmento de cdigo llamado seccin
crtica.
No est permitido que varios procesos estn
simultneamente en su seccin crtica.
Un protocolo rige la forma de entrar y salir de la seccin crtica.

Escuela Universitaria de
Informtica (Segovia)

1.1 Problema de la seccin crtica.

El problema de la seccin crtica (Conceptos generales):

Cualquier solucin al problema de la seccin crtica debe


satisfacer los tres requisitos:
Exclusin Mutua: Slo un proceso ejecuta simultneamente su
seccin crtica.
Progreso: Cuando ningn proceso ejecuta su seccin crtica,
algn proceso que lo solicite podr entrar utilizando un protocolo,
que impida la entrada simultnea de varios. La decisin de quin
entra no se puede posponer indefinidamente.
Espera limitada: Ningn proceso debe esperar ilimitadamente la
entrada en la seccin crtica.

Escuela Universitaria de
Informtica (Segovia)

1.1 Problema de la seccin crtica.

Problemas al uso de semforos:

Semforos: mecanismo cmodo y efectivo para lograr la


sincronizacin.
Problemas:
Pueden ocasionar errores de temporizacin difciles de
detectar, puesto que slo se producen con ciertas secuencias de
ejecucin especficas.
El uso desordenado de las primitivas podra producir que no
se consiga la exclusin mutua, ya que dos procesos podran
estar simultneamente en sus secciones crticas.
La construccin de grandes programas resulta muy rduo
porque las primitivas wait() y signal() se distribuyen por todo
el cdigo y no es fcil advertir su efecto global sobre el valor de
los semforos.
Bloqueos mutuos.
Escuela Universitaria de
Informtica (Segovia)

1.1 Problema de la seccin crtica.

Alternativas al uso de semforos:

Regin crtica.

Monitor y Variables condicin.

Paso de mensajes.

Escuela Universitaria de
Informtica (Segovia)

1.1 Problema de la seccin crtica.

Regin crtica (RC):

Mecanismo de sincronizacin de alto nivel.


Requiere declarar una variable que puede ser compartida
entre muchos procesos, pero a la que slo podr acceder
un nico proceso, a travs de un mecanismo booleano de
control de acceso.
Si el nmero de procesos dentro de esa RC es igual a 0, un
proceso que lo desee puede entrar a dicha RC.
Si el nmero de procesos dentro de una RC es igual a 1 y N
procesos quieren entrar, esos N procesos deben esperar.
Cuando un proceso sale de una RC se permite que entre uno
de los procesos que esperan.
Escuela Universitaria de
Informtica (Segovia)

1.1 Problema de la seccin crtica.

Regin crtica condicional (RCC):

Funcionamiento similar a la RC, slo que adems, para que


un proceso ejecute su seccin crtica la condicin de acceso
debe de ser cierta.
La evaluacin de la condicin de acceso se considera parte de
la regin crtica.
En caso de que el resultado de la evaluacin sea falso,
abandona la RC para permitir a otros procesos entrar en
ella.
Un proceso que haya evaluado la condicin a falso no vuelve
a entrar a su RC hasta que otro proceso abandone sta
(espera activa):
Se vuelve a ejecutar cuando posiblemente alguien haya
modificado dicha condicin.
Escuela Universitaria de
Informtica (Segovia)

1.1 Problema de la seccin crtica.

Regin crtica condicional (RCC):

Limitaciones de las RCC:


Aunque mejoran algunos aspectos negativos de los
semforos, tienen algunas limitaciones:
Pueden aparecer a lo largo de todo el programa.
No se garantiza la integridad de las estructuras de datos
compartidas.
Realizar una implementacin eficiente de las mismas es
una tarea difcil.

Escuela Universitaria de
Informtica (Segovia)

1.1 Problema de la seccin crtica.

Monitor:

Mecanismo de sincronizacin de alto nivel.


Funcionalidad equivalente a la de los semforos pero ms
fciles de controlar.

Tipo abstracto de datos que conjuga:

Estructuras de datos.
Conjunto de operaciones asociadas a tales estructuras.
Exclusin mutua
Sincronizacin (variables de condicin).

Escuela Universitaria de
Informtica (Segovia)

10

1.1 Problema de la seccin crtica.

Monitor:

Es un mdulo de software:
Consta de uno o varios procedimientos.
Secuencia de inicio.
Datos locales.

Caractersticas bsicas:
Variables locales slo accesibles para los procedimientos
del monitor y no para procedimientos externos.
Un proceso entra en el monitor al invocar uno de sus
procedimientos.
Slo un proceso se puede estar ejecutando en el monitor en
un instante dado.

Escuela Universitaria de
Informtica (Segovia)

11

1.1 Problema de la seccin crtica.

Monitor:

Deben incluir herramientas de sincronizacin:


Un monitor proporciona sincronizacin por medio de las variables
de condicin que se incluyen dentro del monitor y que son
accesibles slo desde dentro.

Dos funciones operan con las variables de condicin:


cwait(c): suspende (bloquea) la ejecucin del proceso que
llama a la condicin c. El monitor estar disponible para ser
usado por otro proceso.
csignal(c): reanuda la ejecucin de un proceso que fue
suspendido por un cwait(). Si hubiera varios elige uno de entre
ellos y si no hay ninguno no hace nada.

Escuela Universitaria de
Informtica (Segovia)

12

1.1 Problema de la seccin crtica.

Estructura de un monitor:

Escuela Universitaria de
Informtica (Segovia)

13

1.1 Problema de la seccin crtica.

Monitor, Variables condicin:

Qu ocurre cuando un proceso P realiza una operacin


csignal() sobre una variable condicin y existe un proceso
suspendido Q asociado a dicha variable?

Si varios procesos estn suspendidos por la concicin c y


algn proceso ejecuta csignal(c ) qu proceso se reanuda?.

Escuela Universitaria de
Informtica (Segovia)

14

1.1 Problema de la seccin crtica.

Soluciones al problema del productor/consumidor con


buffer acotado:

Por medio de Monitores con seales (monitor de Hoare).

Por medio de Monitores con notificacin y difusin


(monitor de Lampson y Redell).

Escuela Universitaria de
Informtica (Segovia)

15

1.1 Problema de la seccin crtica.

Solucin al P/C con monitores con seales:

El procedimiento comprueba primero la condicin no_lleno,


para saber si hay espacio libre en el buffer. De no haberlo el
proceso que est ejecutando el monitor se suspende cualquier otro
proceso (P o C) puede entrar ahora al monitor.
Cuando el buffer ya no est lleno el proceso suspendido puede
ser retirado de la cola y reactivado y el proceso podra
reanudarse.
Tras introducir un carcter en el buffer, el proceso activa la
condicin no_vaco.
Conclusiones: Como vemos la propia estructura del monitor
garantiza la EM, no es posible que P y C accedan simultneamente
al buffer. Lo nico que tiene que hacer el programador es situar
correctamente las primitivas cwait() y csignal() en el monitor
controlando que no se depositen elementos en un buffer lleno o no se
extraigan de uno vaco.
Escuela Universitaria de
Informtica (Segovia)

16

1.1 Problema de la seccin crtica.

Inconvenientes de los monitores con seales:

Posible error de sincronizacin de monitores: Si


olvidamos cualquiera de los csignal(), los procesos que entran
en la cola de la condicin se quedan colgados
permanentemente.
Si un proceso ejecuta un csignal() y no ha terminado en el
monitor, hacen falta dos cambios de proceso adicionales
para continuar la ejecucin del programa:
Uno para suspender el proceso.
Otro para reanudarlo cuando el monitor quede disponible.

La planificacin debe de ser muy fiable. Cuando se


ejecuta un csignal() se activar inmediatamente un proceso
de la cola de la condicin correspondiente y el planificador
debe asegurarse de que ningn otro proceso entre al monitor
antes de la activacin.
Escuela Universitaria de
Informtica (Segovia)

17

1.1 Problema de la seccin crtica.

Soluciones al P/C con monitores de notificacin y difusin:

Notifican los procesos en vez de reactivarlos a la fuerza.


Se puede aadir una primitiva de difusin cbroadcast(), que
provoca que todos los procesos que estn esperando por una
condicin se sitan en el estado de listos. Esto es conveniente en
situaciones donde un proceso no sabe cuantos procesos deben
reactivarse.
Ventajas sobre los monitores con seales:
1. Menor propensin a errores, cada procedimiento comprueba la variable
del monitor despus de ser despertado, por medio del while.
2. Ms modulable en cuanto a la construccin de programas.
3. Hace cumplir la EM y concluye la operacin de E/S antes de permitir
cualquier otra operacin sobre el buffer.
4. Dispone de suficiente memoria para que este proceso pueda completar
su solicitud de asignacin.

Escuela Universitaria de
Informtica (Segovia)

18

1.1 Problema de la seccin crtica.

Paso de mensajes:

Refuerzo de la Exclusin Mutua.

Intercambio de informacin.

Se caracteriza por dos primitivas:


send(destino, mensaje): enva mensaje a proceso de destino.
receive(origen, mensaje): informacin indicando el proceso
emisor y el mensaje.

Escuela Universitaria de
Informtica (Segovia)

19

1.1 Problema de la seccin crtica.

Implementacin de paso de mensajes:

Sincronizacin: Entre procesos, P1 no puede recibir un


mensaje hasta que lo enve P0.
Emisor y receptor pueden ser bloqueantes o no bloqueantes
(esperando un mensaje). Posibles combinaciones:
send() bloqueante y receive() bloqueante:
Tanto el emisor como el receptor se bloquean hasta que se
entrega el mensaje.
send() no bloqueante y receive() bloqueante:
Permite que un proceso enve uno o ms mensajes a varios
destinos tan rpido como sea posible.
El receptor se bloquea hasta que llega el mensaje solicitado.
send() no bloqueante y receive() no bloqueante:
Ninguno debe esperar.
Escuela Universitaria de
Informtica (Segovia)

20

1.1 Problema de la seccin crtica.

Direccionamiento:

Debemos especificar en el send() que proceso va a recibir el


mensaje, y tambin que el receive() conozca el origen del
mensaje que va a recibir dos esquemas:
Direccionamiento directo:
Send() incluye una identificacin del proceso de destino.
Receive() puede conocer de antemano de qu proceso espera un
mensaje.
Direccionamiento implcito: receive() puede utilizar el parmetro
origen para devolver un valor cuando se haya realizado la operacin
de recepcin.

Direccionamiento indirecto:
Los mensajes no van directamente del emisor al receptor.
Los mensajes se envan a una estructura de datos compartida
formada por colas (buzones o mailboxes).
P0 enva mensajes al buzn apropiado y P1 los recoge del buzn.

Escuela Universitaria de
Informtica (Segovia)

21

1.1 Problema de la seccin crtica.

Relaciones de direccionamiento:

Uno a uno: enlace privado de comunicacin entre P0 y P1.


Uno a varios: aplicaciones en los que el mensaje se difunde a un
conjunto de procesos.
Varios a uno: interacciones cliente/ servidor, un proceso ofrece un
servicio a un conjunto de procesos.
Varios a varios:

Escuela Universitaria de
Informtica (Segovia)

22

1.1 Problema de la seccin crtica.

Formato de mensajes:
Tipo de longitud
ID de destino
Cabecera

ID de origen
Longitud de mensaje
Informacin de control

Cuerpo

Contenido del mensaje

Escuela Universitaria de
Informtica (Segovia)

23

1.1 Problema de la seccin crtica.


Implementacin de la EM mediante paso de mensajes:

/* programa exclusion mutua */

void main(){

const int n= /*numero de procesos*/;

crear_buzon(excmut);

void P(int i){

send(excmut, null);

mensaje msj;
while (cierto){

parbegin(P(1),P(2), ..., P(n));


}

receive (exmut, msj);


/* seccin crtica */
send (exmut, msj);
/*resto*/
}
}
Escuela Universitaria de
Informtica (Segovia)

24

1.1 Problema de la seccin crtica.

Implementacin de la EM mediante paso de mensajes:

Un proceso (P) que desea entrar en su seccin crtica intenta


primero el receive(), si el buzn est vaco P se
bloquea. Si el proceso consigue el mensaje, ejecuta su
seccin crtica y despus devuelve el mensaje al buzn el
mensaje funciona como un testigo que se pasa de un proceso
a otro.
Esta tcnica implica que si hay varios procesos ejecutando
simultneamente el receive():
Si hay un mensaje, se entrega slo a uno de los procesos y los
otros se bloquean.
Si el buzn est vaco, todos los procesos se bloquean. Cuando
haya un mensaje disponible slo se activar y tomar el mensaje
uno de los procesos bloqueados.
Escuela Universitaria de
Informtica (Segovia)

25

1.2 Problema de los lectores/escritores.

Enunciado:

Tenemos un rea de datos (que puede ser un archivo, un


bloque de memoria principal o un banco de registros del
procesador) compartida entre varios procesos. Algunos
procesos slo leen los datos (lectores) y otros slo escriben
(escritores). Se puede satisfacer que:
1. Cualquier nmero de lectores puede leer el archivo
simultneamente.
2. Slo puede escribir en el archivo un nico escritor en cada
instante.
3. Si un escritor est accediendo al archivo, ningn lector puede
leerlo.

Escuela Universitaria de
Informtica (Segovia)

26

También podría gustarte