Problema del barbero durmiente

Post on 14-Jun-2015

825 views 21 download

description

-Problema -Condiciones de carrera -Solución -Diagramas de flujo -Implementación en Java

Transcript of Problema del barbero durmiente

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