Sistemas Operativos
Informática 1
Universidad de Costa Rica
MADE - Maestría en Auditoría de TI
Jenny Díaz Tercero
Natalia Hidalgo
Trata de 5 Filósofos que tras muchos años de pensar llegaron a la conclusión de que los espaguetis contribuían con sus esfuerzos pensadores, para eso disponí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
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
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
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 1 P2: Proceso 2 R1: Recurso 1 R2: Recurso 2
Llega un punto en el que P1 ha adquirido el recurso R1 y el proceso P2 ha adquirido el recurso R2 y cada proceso necesita el otro recurso
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
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 coger los tenedores). Un filósofo puede comer únicamente si los vecinos no están comiendo. 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 un filósofo, Pensando, hambriento y comiendo
Monitores:
Distinguir entre los tres estados en los que podría estar un filósofo, Pensando, hambriento y comiendo
Turnos cíclicos:
Se empieza por un filósofo, que si quiere puedecomer 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 sedebe aproximar al tiempo medio que tarda un filósofo en comer
Colas de tenedores:
Cada vez que un filósofo tiene un tenedorespera 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.
Se trata de un problema de acceso a un objeto compartido a la vez por parte de dos tipos de procesos: los escritores (modifican el contenido del objeto) y los lectores (no modifican el objeto).
Condiciones de ejecución:
Modela el acceso a una base de datos. (Courtois et al., 1971)
Múltiples lectores pueden acceder simultáneamente al objeto
compartido.
Si ha y un proceso escritor accediendo al objeto compartido, ningún
otro proceso puede acceder.
Un algoritmo que permita satisfacer:
Exclusión mutua
Sincronización
Establecer prioridades de acceso a los datos
Prioridad escritores
Prioridad lectores
•Un lector sólo debe esperar si un escritor ya ha obtenido permiso para escribir
Utilización de semáforos:
•El semáforo escritores para respetar la exclusión mutua: Mientras que un escritor está 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 haya ninguno, 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 antes de entrar. La variable global contarlectores se utiliza para mantener el número de lectores y el semáforo x se utiliza para asegurar que contarlectores se actualiza correctamente.
•Si un escritor está esperando para acceder al 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.
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
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.
Stallings, William. Sistemas Operativos. Prentice Hall, 2da Edición, 1997
Tanenbaum, Andrew S. Sistemas Operativos Modernos. Pearson Educacion,, 1993