Problema De Los Filosofos Comensales

Páginas: 2 (457 palabras) Publicado: 24 de abril de 2011
SANTOS ARRIETA JUAN
SISTEMAS OPERATIVOS
PROBLEMA DE LOS FILOSOFOS COMENSALES

#include
#include
#define N 5/*numero de filósofos*/
#define LEFT (i-1)%N /*numero del vecino de la izquierda dei*/
#define RIGHT (i+1)%N /*numero del vecino de la derecha de i*/
#define THINKING 0/*el filosofo está meditando*/
#define HUNGRY 1/*el filosofo intenta tomar los tenedores*/
#defineEATING 2/*el filosofo está comiendo*/
typedef int semaphore;/*los semáforos son un tipo especial de int*/
int state[N]; /*arreglo para llevar el control del estado de todas las personas*/semaphore mutex =1; /*exclusión mutua de regiones criticas*/
semaphore s[N]; /*un semáforo por filosofo*/

philosopher(i)
int i,TRUE; /*numero de filosofo de 0 a N-1 */
{while (TRUE){ /*repetir indefinidamente*/
think(); /*el filosofo está meditando*/
take_forks(i); /*tomar dos tenedores o bloquearse*/
eat();/*que rico espagueti*/
put_forks(i); /*volver a colocar ambos tenedores sobre la mesa*/
}
}
take_forks(i)
int i; /*numero de filosofo de 0 a N-1*/{
down(mutex); /*meter a la región critica*/
state[i]=HUNGRY; /*registrar el hecho de que el filosofo i tiene hambre*/
test(i); /*intenta tomar dos tenedores*/up(mutex); /*salir de la región critica*/
down(s[i]); /*bloquear si no se tomaron los tenedores*/
}
put_forks(i)
int i; /*numero de filosofo de 0 a N-1*/
{down(mutex); /*meter a la región critica*/
state[i]=THINKING; /*el filosofo ha terminado de comer*/
test(LEFT); /*ver si ahora puede comer el vecino de la izquierda*/
test(RIGHT);/*ver si ahora puede comer el vecino de la derecha*/
up(mutex); /*salir de la región critica*/
}

test(i);
int i; /*numero de filosofo de 0 a N-1*/
{
if (state[i] ==...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Filosofos Comensales
  • Filosofos comensales
  • Filósofos Comensales
  • Problemas filosóficos
  • Problemas filosoficos
  • Problema filosofico
  • problemas filosoficos
  • Problema filosofico

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS