Problema del barbero durmiente

9
Barbero Durmiente Juan Camilo Sacanamboy Gerardo Suárez

description

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

Transcript of Problema del barbero durmiente

Page 1: Problema del barbero durmiente

Barbero Durmiente Juan Camilo Sacanamboy Gerardo Suárez

Page 2: Problema del barbero durmiente

Contenido

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

Page 3: Problema del barbero durmiente

Problema

•  Barbería con un solo barbero •  Una silla de barbero •  n sillas para los clientes (5 en nuestro caso)

Page 4: Problema del barbero durmiente

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.

Page 5: Problema del barbero durmiente

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.

Page 6: Problema del barbero durmiente

Diagramas de Flujo

Page 7: Problema del barbero durmiente

BARB

ERO

DORMIDO

Silla Barberia Ocuapada?

Sillas Espera Vacias?

NADA  

DORMIR  

DESOCUPAR  SILLA  ESPERA  

DESOCUPAR  SILLA  BARBERIA  

DORMIR  

SI  

NO  

SI  

NO  

NO  

SI  

Page 8: Problema del barbero durmiente

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

Page 9: Problema del barbero durmiente

Implementación en Java

El código fuente se puede encontrar en: https://github.com/csacanam/BarberoDurmiente