You are on page 1of 6

1.

DEFINICIÓN DEL PROBLEMA
En una tribu de caníbales todos comen de la misma olla, la cual puede albergar N
raciones de comida. Cuando un caníbal quiere comer, simplemente se sirve de la olla
común, a no ser que esté vacía. En ese caso, el caníbal despierta al cocinero de la tribu y
espera hasta que éste haya rellenado la olla.

2. OBJETIVO
Analizar, comprender e implementar el problema de los caníbales y misioneros,
haciendo uso de los semáforos y monitores, destacando las ventajas y desventajas en la
implementación.
3. ALGORITMO
Para la resolución de este problema tendríamos dos casos, uno en el cual un caníbal
desea comer si hay misioneros en la olla pues se sirve uno, caso contrario si la olla se
encuentra vacia despierta al cocinero y espera a que ese llene la olla nuevamente.
Teniendo en cuenta el planteamiento tendríamos las funciones q
4. DIAGRAMA DE FLUJO

5. PSEUDOCODIGO
Programa caníbal_misionero

Variables
olla,m,j enteros

mutex.comer.cocina semaforos proceso canibal comenzar repetir espere mutex si olla=0 comenzar desbloquear cocina espere comer fin j:=j+1 'Canibal comiendo' olla=olla-1 desbloquear mutex para siempre fin proceso cocinero comenzar repetir espere cocina .

olla=m j=j+1 'Cocinero llena la olla' desbloquear comer para siempre fin //función principal comenzar j=0 inicializar mutex=1 inicializar cocina=0 inicializar comer=0 escribir :Ingrese la cantidad de porciones de la olla' leer m cobegin canibal cocinero coend fin 6. . CÓDIGO FUENTE CÓDIGO EN SEMÁFOROS : program prueba1.

m. process cocinero. if olla=0 then begin signal(cocina). j:=j+1. mutex. end.j:integer. writeln('Canibal comiendo'). wait(comer).cocina:semaphore.var olla.comer. begin repeat wait(mutex). forever end. signal(mutex). begin . olla:=olla-1. process canibal.

7. initial(cocina. ARTÍCULO CIENTÍFICO . j:=j+1.repeat wait(cocina). writeln('Ingrese la cantidad de porciones de la olla').0). readln(m). signal(comer).1).0). olla:=m. writeln('Cocinero llena la olla'). initial(mutex. cocinero. begin j:=0. end. cobegin canibal. forever end. coend. initial(comer.

D. España: Edlibrix. Vallejo Fernadez. j. . programacion concurrente y tiempo real. (2012). APLICACIÓN REAL 9. t. BIBLIOGRAFÍA Palma mendes . programacion concurrente . españa.8. (2003).