El Barbero

Una persona que busca la integridad de sus procesosDescripción completa

Views 144 Downloads 12 File size 311KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

El barbero dormilón: • Problema planteado por Dijkstra en 1971 • Una peluquería en la que hay un barbero, una silla de peluquero y N sillas para que se sienten los clientes en espera, si es que los hay. • Si no hay clientes presentes, el barbero se sienta en su silla de peluquero y se duerme. • Cuando llega un cliente, éste debe despertar al barbero dormilón. • Si llegan más clientes mientras el barbero corta el cabello de un cliente, se sientan (si hay sillas desocupadas) o salen de la peluquería (si todas las sillas están ocupadas). • Programar al barbero y los clientes. Por lo que se ve, hay variables tipo bandera, que debe ser consultadas al iniciar un proceso, esto es clasico en los sitemas operativos multiprogramación. El problema consiste en una barbería en la que trabaja un barbero que tiene un único sillón de barbero y varias sillas para esperar. Cuando no hay clientes, el barbero se sienta en una silla y se duerme. Cuando llega un nuevo cliente, éste o bien despierta al barbero o —si el barbero está afeitando a otro cliente— se sienta en una silla (o se va si todas las sillas están ocupadas por clientes esperando). El problema consiste en realizar la actividad del barbero sin que ocurran condiciones de carrera. La solución implica el uso de semáforos y objetos de exclusión mutua para proteger la sección critica . Un semáforo es una variable protegida (o tipo abstracto de datos) que constituye el método clásico para restringir o permitir el acceso a recursos compartidos (por ejemplo, un recurso de almacenamiento) en un entorno de multiprocesamiento.

Fuente(s): #include #include #include void graficar(); char SB, op; /*SB =’1′ indica ocupada, ’0′ vacia */ int SC[6], i, j, cc, orden, t1; /* las sillas llevaran el turno */

void main(){ textmode(C80); textbackground(0); for(i=0; i