Los Fumadores de Cigarrillos

4
Los fumadores de cigarrillos El problema de los fumadores de cigarrillos es otro problema clási-co de sincronización. Básicamente, es un problema de coordinaciónentre un agente y tres fumadores en el que intervienen tres ingredien-tes: i) papel, ii) tabaco y iii) fósforos. Por una parte, el agente disponede una cantidad ilimitada respecto a los tres ingredientes. Por otraparte, cada fumador dispone de un único elemento, también en canti-dad ilimitada, es decir, un fumador dispone de papel, otro de tabaco yotro de fósforos. Cada cierto tiempo, el agente coloca sobre una mesa, de maneraaleatoria, dos de los tres ingredientes necesarios para liarse un ciga-rrillo (ver gura 3.11). El fumador que tiene el ingrediente restantecoge los otros dos de la mesa, se lia el cigarrillo y se lo noti ca alagente. Este ciclo se repite inde nidamente.La problemática principal reside en coordinar adecuadamente alagente y a los fumadores, considerando las siguientes acciones: 1. El agente pone dos elementos sobre la mesa. 2. El agente noti ca al fumador que tiene el tercer elemento que yapuede liarse un cigarrillo (se simula el acceso del fumador a lamesa). 3. El agente espera a que el fumador le noti que que ya ha termi-nado de liarse el cigarrillo. 4. El fumador noti ca que ya ha terminado de liarse el cigarrillo. 5. El agente vuelve a poner dos nuevos elementos sobre la mesa,repitiéndose así el ciclo.

description

El problema de los fumadores de cigarrillos es un problema de sincronización

Transcript of Los Fumadores de Cigarrillos

Page 1: Los Fumadores de Cigarrillos

Los fumadores de cigarrillos

El problema de los fumadores de cigarrillos es otro problema clási-co de sincronización. Básicamente, es un problema de coordinaciónentre un agente y tres fumadores en el que intervienen tres ingredien-tes: i) papel, ii) tabaco y iii) fósforos. Por una parte, el agente disponede una cantidad ilimitada respecto a los tres ingredientes. Por otraparte, cada fumador dispone de un único elemento, también en canti-dad ilimitada, es decir, un fumador dispone de papel, otro de tabaco yotro de fósforos.

Cada cierto tiempo, el agente coloca sobre una mesa, de maneraaleatoria, dos de los tres ingredientes necesarios para liarse un ciga-rrillo (ver figura 3.11). El fumador que tiene el ingrediente restantecoge los otros dos de la mesa, se lia el cigarrillo y se lo notifica alagente. Este ciclo se repite indefinidamente.La problemática principal reside en coordinar adecuadamente alagente y a los fumadores, considerando las siguientes acciones:

1. El agente pone dos elementos sobre la mesa.2. El agente notifica al fumador que tiene el tercer elemento que yapuede liarse un cigarrillo

(se simula el acceso del fumador a lamesa).3. El agente espera a que el fumador le notifique que ya ha termi-nado de liarse el cigarrillo.4. El fumador notifica que ya ha terminado de liarse el cigarrillo.5. El agente vuelve a poner dos nuevos elementos sobre la mesa,repitiéndose así el ciclo.

Figura 3.11: Esquema gráfico del problema de los fumadores de cigarrillos.

Este problema se puede resolver utilizando dos posibles esquemas:

Page 2: Los Fumadores de Cigarrillos

Recuperación selectiva utilizando un único buzón (ver figura3.13). En este caso, es necesario integrar en el contenido del men-saje de algún modo el tipo asociado al mismo con el objetivo deque lo recupere el proceso adecuado. Este tipo podría ser A, T, Po F en función del destinatario del mensaje.

Recuperación no selectiva utilizando múltiples buzones (ver fi-gura 3.14). En este caso, es necesario emplear tres buzones paraque el agente pueda comunicarse con los tres tipos de agentesy, adicionalmente, otro buzón para que los fumadores puedanindicarle al agente que ya terminaron de liarse un cigarrillo

Este último caso de recuperación no selectiva está estrechamen-te ligado al planteamiento de las colas de mensajes POSIX, donde noexiste un soporte explícito para llevar a cabo una recuperación se-lectiva. En la figura 3.12 se muestra el pseudocódigo de una posiblesolución atendiendo a este segundo esquema.

Page 3: Los Fumadores de Cigarrillos

Figura 3.12: Solución en pseudocódigo al problema de los fumadores de cigarrillosusando paso de mensajes

Como se puede apreciar en la misma, el agente notifica al fumadorque completa los tres ingredientes necesarios para fumar a través deun buzón específico, asociado a cada tipo de fumador. Posteriormente,el agente se queda bloqueado (mediante receive sobre buzon_agente)hasta que el fumador notifique que ya ha terminado de liarse el ci-garrillo. En esencia, la sincronización entre el agente y el fumador serealiza utilizando el patrón rendezvous. (Vallejo Fernández, Gonzales Morcill, & Albusac Jiménez, 2012)