Está en la página 1de 2

Unidad V.

- Sincronización de Procesos

Concurrencia
En un entorno de multiprogramación con un sólo procesador, los procesos se
intercalan en el tiempo aparentando una ejecución simultánea. Aunque no se logra un
procesamiento paralelo y produce una sobrecarga en los intercambios de procesos, la
ejecución intercalada produce beneficios en la eficiencia del procesamiento y en la
estructuración de los programas.

Supongamos el siguiente ejemplo.

Se quiere llevar un control de la cantidad de visitantes a un museo. El museo dispone de dos


puertas de acceso, por donde ingresan y salen los visitantes. El museo dispone de una
capacidad limitada de 11 personas.

Cada vez que ingrese un visitante, se incrementa el valor de la cantidad de visitantes


visitantes = visitantes + 1;

Cada vez que sale un visitante, se decrementa el valor de la cantidad de visitantes


visitantes = visitantes – 1;

En cada puerta existe un vigilante que es el que controla la cantidad de visitantes y lleva a
cabo el conteo de los mismos.

Analicemos las instrucciones a realizar por el vigilante:


Llega un visitante
Chequea cantidad de visitantes.
Si no hay 11 personas, permite el acceso e incrementa el valor de la cantidad de
visitantes.
Sale un visitante:
Decrementa el valor de la cantidad de visitantes.

Sean p1 y p2 dos procesos asociados a cada puerta de acceso, que se ejecutan de


manera concurrente (alternada).

Cada proceso está esperando por ejecutarse (Llegada y salida de visitantes).


Supongamos que en un mismo momento llegan 2 visitantes, uno por cada una de las
puertas de acceso. Supongamos que el valor de visitantes es actualmente de 5.

Se dan los siguientes eventos.


p1 ejecuta su instrucción para llegada de visitantes, por lo que solicita el valor total de
visitantes. Mientras espera por que se le de el valor, entra a ejecución p2 que también solicita
que se le suministre el valor.

p1 tiene el valor de visitante y solicita incrementarlo.

p2 tiene el valor de visitante y solicita incrementarlo.


p1 guarda el valor de visitante en la dirección de memoria respectiva.

p2 guarda el valor de visitante en la dirección de memoria respectiva.

¿cuál es el valor actual de visitante?

Competencias:
Una competencia se genera cuando al menos dos procesos intentan acceder a un
mismo recurso.

Sección Crítica:
Aquella sección de los procesos, que no pueden ejecutarse de manera concurrente.

En este caso, la variable visitantes, es parte de la sección crítica para los procesos p1
y p2. Ya que es compartida para varios procesos.

En este caso, si el proceso p1 entra a ejecutar su sección crítica en la que accede a la


variable compartida visitantes p2 no podrá ejecutar su sección crítica, sino que tendrá que
esperar a que el recurso sea liberado.

Este método se denomina Exclusión mutua.

Dos o más procesos pueden cooperar mediante señales de forma que uno obliga a
detenerse a los otros hasta que reciban una señal para continuar.

Este es otro caso de que un proceso pueda pasar a bloqueado.

Semáforos
Es un indicador (una variable) que registra la disponibilidad de un recurso.
1.- Disponible
0.- No disponible

Monitores

Colección de procedimientos, variables y estructuras de datos que se agrupan en un


módulo especial.

Los procesos pueden invocar a los procedimientos de un monitor,pero no acceden a sus


datos ni estructuras.
La exclusión mutua la controlan manteniendo sólo un proceso activo a la vez en un monitor.
Cuando un proceso llama a un procedimiento de monitor, sus primeras líneas del
procedimiento verifican si hay otro proceso en el monitor, de ser así el proceso invocador se
bloquea, de lo contrario puede entrar.

También podría gustarte