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— 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 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
Thank you for interesting in our services. We are a non-profit group that run this website to share documents. We need your help to maintenance this website.