Subido por missingdaniel32

El problema del barbero dormilón

Anuncio
El problema del barbero dormilón: Una barbería está compuesta por
una sala de espera con n sillas y una sala de barbería en donde se encuentra la
silla del barbero. Si no hay clientes que atender, el barbero se pone a dormir. Si un
cliente entra a la barbería y todas las sillas están ocupadas, entonces el cliente se
retira. Si el barbero está ocupado, pero existen sillas disponibles, entonces el cliente
se sienta a esperar en una de las sillas libres. Si el barbero está dormido, el cliente
lo despierta.
•
•
•
Si no hay clientes el barbero se sienta en la silla de peluquero y se duerme.
Cuando llega un cliente debe despertar al barbero.
Si llegan más clientes mientras el barbero corta el cabello a un cliente, ellos
se sientan (si hay sillas desocupadas).
Un cliente que entra a la peluquería debe contar el número de clientes que
esperan. Si es menor que el número de sillas, él se queda; en caso contrario
se va.
El problema del Barbero dormilón es un clásico de la Programación Concurrente.
En él se propone la discusión sobre cómo gestionar el “transito” por una pequeña
peluquería (recurso compartido), por parte de dos tipos de procesos: el
peluquero y los clientes. El enunciado sugiere que durante la ejecución la
interacción entre el peluquero y un cliente se puede producir muy a menudo y
que, por tanto, deben establecerse los mecanismos de sincronización
adecuados para evitar que los dos “colisionen” dentro la peluquería; es decir,
asegurar uno sólo es el que se mueve en cada momento.
Lo vemos en como el procesador controla los procesos utilizando N núcleos solo
cuando se necesiten.
Descargar