problema del barbero durmiente
Post on 14-Jun-2015
815 Views
Preview:
DESCRIPTION
TRANSCRIPT
Barbero Durmiente Juan Camilo Sacanamboy Gerardo Suárez
Contenido
• Problema • Condiciones de carrera • Solución • Diagramas de flujo • Implementación en Java
Problema
• Barbería con un solo barbero • Una silla de barbero • n sillas para los clientes (5 en nuestro caso)
Condiciones de carrera
Por qué se presentan? • Diferentes procesos (clientes) quieren acceder a la silla
del barbero. • Diferentes clientes quieren entrar a la barbería.
Solución
Se emplean dos variables semáforos: • Un mutex que se encarga de no dejar que un cliente tome
la silla del barbero, si esta se encuentra ocupada. • La otra variable cuenta el número de clientes que esperan
al barbero. Si hay más de 5 no deja entrar otro cliente a la barbería, hasta que se desocupe una silla.
Diagramas de Flujo
BARB
ERO
DORMIDO
Silla Barberia Ocuapada?
Sillas Espera Vacias?
NADA
DORMIR
DESOCUPAR SILLA ESPERA
DESOCUPAR SILLA BARBERIA
DORMIR
SI
NO
SI
NO
NO
SI
Cliente Nuevo?
Barbero Dormido?
Sillas Espera Disponibles?
ESPERAR
DESPERTAR
IRSE
OCUPAR SILLA ESPERA
NO
NO
NO
SI
SI
SI
OCUPAR SILLA BARBERÍA
BARB
ERÍA
Implementación en Java
El código fuente se puede encontrar en: https://github.com/csacanam/BarberoDurmiente
top related