el problema de la cena de los filosofos

18
Sistemas Operativos Informática 1 Universidad de Costa Rica MADE - Maestría en Auditoría de TI Jenny Díaz Tercero Natalia Hidalgo Magaly Fernández Marín 1

Upload: jenny-diaz-tercero

Post on 25-Jun-2015

2.079 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: El Problema de La Cena de Los Filosofos

Sistemas Operativos

Informática 1

Universidad de Costa Rica

MADE - Maestría en Auditoría de TI

Jenny Díaz Tercero

Natalia Hidalgo

Magaly Fernández Marín1

Page 2: El Problema de La Cena de Los Filosofos

Trata de 5 Filósofos que trasmuchos años de pensar llegaron ala conclusión de que losespaguetis contribuían con susesfuerzos pensadores, para esodisponían de:

5 platos (uno para cada Filósofo)

5 Tenedores

Cada filósofo necesitará de 2 tenedores para comer los espaguetis

Propuesto por Edsger Dijksta para representar el problema

de la sincronización de procesos en un sistema operativo

2

Page 3: El Problema de La Cena de Los Filosofos

Un algoritmo que permita satisfacer:

la exclusión muta

Evitar el interbloqueo.

Evitar la inanición.

A continuación se exponen estos conceptos así como algunas

soluciones

Inventar un ritual que permita comer a los Filósofos

3

Page 4: El Problema de La Cena de Los Filosofos

Exclusión mutua es la capacidad de prohibir a los demás procesos realizar una acción cuando un proceso haya obtenido el permiso.

Para el problema de los Filósofos se debe lograr que 2 filósofos no puedan emplear el mismo tenedor a la vez

4

Page 5: El Problema de La Cena de Los Filosofos

Interbloqueo o deadlock es un Bloqueo permanente de un conjunto

de procesos que compiten por los recursos del sistema o bien se comunican unos con otros)

En este caso todos los filósofos están hambrientos al mismo tiempo, todos se sientan, todos toman el tenedor a su izquierda y todos intentar tomar el otro tenedor que no estará.

P1: Proceso 1P2: Proceso 2R1: Recurso 1R2: Recurso 2

Llega un punto en el que P1ha adquirido el recurso R1 yel proceso P2 ha adquirido elrecurso R2 y cada procesonecesita el otro recurso

5

Page 6: El Problema de La Cena de Los Filosofos

Es una situación similar al interbloqueo pero las causas son diferentes.

En el interbloqueo, dos procesos llegan a un punto muerto (se bloquean) cuando cada uno de ellos necesita un recurso que es ocupado por el otro.

En cambio, en este caso, uno o más procesos están esperando recursos ocupados por otros procesos que no se encuentran necesariamente bloqueados

6

Page 7: El Problema de La Cena de Los Filosofos

Utiliza un vector, estado, para llevar un registro de la actividad de un filósofo:si está comiento, pensando o hambriento (estado que indica que quiere cogerlos tenedores). Un filósofo puede comer únicamente si los vecinos no estáncomiendo. Los vecinos del i-ésimo filósofo se definen en las macros IZQ y DER.En otras palabras, si i= 2, entonces IZQ = 1, y DER = 3.

El programa utiliza un vector de semáforos, uno por filósofo, de forma que los filósofos hambrientos puedan bloquearse si los tenedores necesarios están ocupados. Observe que cada proceso ejecuta el procedimiento filósofo como programa principal, pero los demás procedimientos, coger_tenedores, dejar_tenedores y prueba, son procedimientos ordinarios y no procesos separados.

Monitores:

Distinguir entre los tres estados en los que podría estar unfilósofo, Pensando, hambriento y comiendo

7

Page 8: El Problema de La Cena de Los Filosofos

Monitores:

Distinguir entre los tres estados en los que podría estar un filósofo, Pensando,hambriento y comiendo

8

Page 9: El Problema de La Cena de Los Filosofos

Turnos cíclicos: Se empieza por un filósofo, que si quiere puede comer y después pasa su turno al de la derecha. Cada filósofo sólo

puede comer en su turno

Varios turnos: Se establecen turnos de tiempo fijo, el mismo se

debe aproximar al tiempo medio que tarda un filósofo en comer

Colas de tenedores: Cada vez que un filósofo tiene un tenedor espera un tiempo aleatorio para conseguir el segundo tenedor. Si en ese tiempo no queda libre el segundo tenedor, suelta el que tiene y vuelve a ponerse en cola para sus dos tenedores.

9

Page 10: El Problema de La Cena de Los Filosofos

Se trata de un problema de acceso aun objeto compartido a la vez porparte de dos tipos de procesos: losescritores (modifican el contenido delobjeto) y los lectores (no modifican elobjeto).

Condiciones de ejecución:

Modela el acceso a una base de datos.

(Courtois et al., 1971)

Múltiples lectores pueden acceder simultáneamente al objetocompartido.

Si ha y un proceso escritor accediendo al objeto compartido, ningúnotro proceso puede acceder.

10

Page 11: El Problema de La Cena de Los Filosofos

Un algoritmo que permita satisfacer:

Exclusión mutua

Sincronización

El acceso al objeto

11

Page 12: El Problema de La Cena de Los Filosofos

Establecer prioridades de acceso a los datos

Prioridad escritores

Prioridad lectores

12

Page 13: El Problema de La Cena de Los Filosofos

•Un lector sólo debe esperar si un escritor yaha obtenido permiso para escribir

Utilización de semáforos:

•El semáforo escritores para respetar la exclusión mutua: Mientras que un escritorestá accediendo a los datos compartidos, ningún otro escritor y ningún lector podráacceder.

El proceso lector también usa el semáforo escritores para respetar la exclusión mutua.Sin embargo, para que se permitan varios lectores, hace falta que, cuando no hayaninguno, el primer lector que lo intente tenga que esperar en semáforo escritores .

Cuando ya hay al menos un lector, los lectores posteriores no necesitan esperar antesde entrar. La variable global contarlectores se utiliza para mantener el número delectores y el semáforo x se utiliza para asegurar que contarlectores se actualiza

correctamente.

13

Page 14: El Problema de La Cena de Los Filosofos

•Si un escritor está esperando para accederal objeto, ningún lector debe empezar a leer

•Los escritores están sujetos a inanición: Se debe garantizar no permitir acceder a los datos a ningún

nuevo lector una vez que, al menos, un escritor haya declarado su deseo de escribir.

Para los escritores, se añaden los siguientes semáforos y variables a los ya definidos:

Un semáforo semáforo lectores que inhibe todas las lecturas mientras haya al menos un escritor que

desee acceder a los datos.

Una variable contares critores que controla la activación de semáforo lectores.

Un semáforo y que controla la actualización de contesc.

Para los lectores, se necesita un semáforo adicional. No debe permitirse que se construya una

cola grande sobre semáforo lectores, pues los escritores no serían capaces de saltarla. Por tanto,

sólo se permite a un lector ponerse en cola en semáforo lectores y todos los demás lectores deben

ponerse en cola en un semáforo z inmediatamente antes de esperar en semáforo lectores.

14

Page 15: El Problema de La Cena de Los Filosofos

Sólo lectores en el sistema • Activar semaforo escritores

• Sin colas

Sólo escritores en el

sistema

• Activar semaforo escritores y Semaforo lectores

• Los escritores se encolan en semaforo escritores

Lectores y escritores con un

lector primero

• Semaforo escritores activado por un lector

• Semaforo lectores activado por un escritor

• Todos los escritores se ponen en cola en semaforo escritores

• Un lector se pone en cola en Semaforo lectores

• Los otros lectores se ponen en cola en z

Lectores y escritores con un

escritor primero

• Los escritores activan semaforo escritores

• Los lectores activan Semaforo lectores

• Todos los escritores se ponen en cola en semaforo escritores

• Un lector se pone en cola en Semaforo lectores

• Los otros lectores se ponen en cola en z

15

Page 16: El Problema de La Cena de Los Filosofos

El problema de la cena de los filósofos es útil para modelar procesos que compiten por el acceso exclusivo a un número limitado de recursos, como una unidad de cinta u otro dispositivo de E/S.

El de lectores y escritores modela el acceso a una base de datos.

16

Page 17: El Problema de La Cena de Los Filosofos

Stallings, William. Sistemas Operativos. Prentice Hall, 2da Edición, 1997

Tanenbaum, Andrew S. Sistemas Operativos Modernos. Pearson Educacion,,

1993

17

Page 18: El Problema de La Cena de Los Filosofos

18