Sei sulla pagina 1di 31

Elaborado por: Jackie Bermdez

Problema de la cena de los filsofos


y Propuesto por Edsger Dijkstra y Representar sincronizacin de procesos en un SO. y Interpretacin por pensadores Chinos

Problema
y 5 filsofos se sientan alrededor de una mesa y pasan su vida cenando y

pensando. Cada filsofo tiene un plato de fideos y un tenedor a la izquierda de su plato.


Para comer los fideos son necesarios dos tenedores y cada filsofo slo puede tomar los que estn a su izquierda y derecha. Si 2 filsofos adyacentes intentan tomar el mismo tenedor a una vez, se produce una condicin de carrera: ambos compiten por tomar el mismo tenedor, y uno de ellos se queda sin comer.

y Si todos los filsofos cogen el tenedor que est a su derecha al mismo tiempo, entonces

todos se quedarn esperando eternamente, porque alguien debe liberar el tenedor que les falta. Nadie lo har porque todos se encuentran en la misma situacin (esperando que alguno deje sus tenedores). Entonces los filsofos se morirn de hambre. Este bloqueo mutuo se denomina interbloqueo o deadlock.

Encontrar un algoritmo que permita que los filsofos nunca se mueran de hambre.

Turno cclico:
 Un filsofo si quiere puede comer, pasa su turno al de la

derecha.
 Cada filsofo slo puede comer en su turno.  Problema: si el nmero de filsofos es muy alto, uno

puede morir de hambre antes de su turno.

Varios turnos
Cada filsofo que puede comer (es su turno) tiene una ficha que despus pasa a la derecha. Ejemplo hay 7 comensales podemos poner 3 fichas en posiciones alternas (entre dos de las fichas quedaran dos filsofos). Se establecen turnos de tiempo fijo. Por ejemplo cada 5 minutos se pasan las fichas (y los turnos) a la derecha. En base al tiempo que suelen tardar los filsofos en comer y en volver a tener hambre, el tiempo de turno establecido puede hacer que sea peor solucin que la anterior. Si el tiempo de turno se aproxima al tiempo medio que tarda un filsofo en comer esta variante da muy buenos resultados. Si adems el tiempo medio de comer es similar al tiempo medio en volver a tener hambre la solucin se aproxima al ptimo.

Colas de tenedores
y Cuando un filsofo quiere comer se pone en la cola de los dos tenedores que necesita. Cuando un tenedor est libre lo toma. Cuando toma los dos tenedores, come y deja libre los tenedores. y Visto desde el otro lado, cada tenedor slo puede tener dos filsofos en cola, siempre los mismos.
Esto crea el problema comentado de que si todos quieren comer a la vez y todos empiezan tomando el tenedor de su derecha se bloquea el sistema (deadlock).

Resolucin de conflictos en colas de tenedores


y Cada vez que un filsofo 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. y Si un filsofo A suelta un tenedor (porque ha comido o porque ha esperado demasiado tiempo con el tenedor en la mano) pero todava desea comer, vuelve a ponerse en cola para ese tenedor. Si el filsofo adyacente B est ya en esa cola de tenedor (tiene hambre) lo toma y si no vuelve a cogerlo A.

Es importante que el tiempo de espera sea aleatorio o se mantendr el bloqueo del sistema.

El portero del comedor


y Se indica a los filsofos que abandonen la mesa cuando no tengan hambre y que no regresen a ella hasta que vuelvan a estar hambrientos (cada filsofo siempre se sienta en la misma silla). y La misin del portero es controlar el nmero de filsofos en la sala, limitando su nmero a n-1, pues si hay n-1 comensales seguro que al menos uno puede comer con los dos tenedores.

El problema de los escritoreslectores


y Hay un objeto de datos utilizado por varios procesos,

unos leen y otros escriben.


y El recurso es utilizado por un proceso y solo uno: un

proceso estar escribiendo o bien leyendo, pero nunca ocurrir simultneamente (si no lo esta utilizando nadie, tendr preferencia el escritor ante el lector).

El problema
Ej.: Imaginemos un sistema de reservaciones para Ej.: vuelos con muchos procesos competidores que desean leer y escribir. Es aceptable tener varios procesos escribir. leyendo la base de datos al mismo tiempo, pero si un proceso est actualizado (escribiendo) la base de datos ningn otro proceso podr tener acceso a ella, ni siquiera los lectores. Cmo programamos a los lectores. lectores y escritores?

y Para que el problema est bien resuelto se tiene

que cumplir:

y No se puede hacer esperar a ningn proceso

lector si ningn proceso escritor accede al recurso.


y Cuando un escritor debe realizar su tarea, debe

ocurrir cuanto antes, sin que deban interferir los procesos lectores.( se establecen prioridades)

Solucin
y Primer lector que obtiene acceso a la base de datos

ejecuta en el semforo db.


y Lectores subsiguientes se limitar a incrementar un

contador rc.
y Cuando un lector sale, decrementa el contador, y el

ultimo lector en salir ejecuta up en el semforo para permitir el ingreso de un escritor bloqueado, si lo hay.

Una hiptesis implcita


y Los lectores tienen prioridad sobre los escritores. y Si surge un escritor mientras varios lectores se

encuentran en la base de datos el escritor debe esperar.


y Si aparecen nuevos lectores, y queda al menos un

lector accediendo a la base de datos, el escritor deber esperar hasta que no haya ms lectores interesados en la base de datos.

ALGORITMO LECTORES-ESCRITORES
Lector (){ while (TRUE){ Seccin no crtica wait(semforo1) contador++; if (contador =1) wait(semforo2) signal(semforo1) Acceso al recurso (LECTURA) wait(semforo1) contador-if (contador=0) signal(semforo2); signal (semforo1) } }

Escritor(){ while (TRUE){ Seccin no crtica wait (semforo2) Acceso al recurso signal (semforo2) } }

Problema del barbero dormiln

y Se trata de la comunicacin entre procesos

El problema:
y El establecimiento tiene un barbero, una silla de barbero y n sillas de espera para los clientes. y Si no hay clientes presentes , el barbero se sienta en la silla de barbero y se duerme como se ilustra en la figura. y Cuando llega un cliente, debe despertar al barbero. Si llegan ms clientes mientras el barbero est atendiendo a un cliente, se sienta (si hay sillas vacas), o bien, salen del establecimiento (si todas las sillas estn ocupadas). y El problema consiste en programar al barbero y a los clientes sin caer en condiciones de competencia.

Solucin
y Tres semforos: y Clientes, cuenta los clientes que estn esperando ( sin incluir el que est en la silla de barbero, que no est esperando). y Barberos, el nmero de barberos (0 1) que estn inactivos, esperando clientes. y Mutex, que controla la exclusin mutua.
yVariable, espera, cuenta los clientes en espera, (bsicamente

copia de clientes)

En esta solucin
y Solo un cliente que entra en la peluquera debe contar

el nmero de clientes que esperan. Si es menor que el nmero de sillas, se queda; de lo contrario, se va.
y Cuando el barbero llega a su trabajo en la maana,

ejecutara el procedimiento barbero, que lo obliga a bloquearse con el semforo de clientes porque al principio ste es cero. Entonces el barbero se duerme (desactiva), y permanece as hasta que aparece el primer cliente

y Cuando un cliente llega, ejecuta cliente, que inicia por obtener mutex para entrar en una regin crtica. Si otro cliente entra poco despus, no podr hacer nada hasta que el primero haya liberado mutex. Entonces el cliente verificar si el nmero de clientes en espera es menor que el nmero de sillas. De lo contrario, liberar mutex y saldr sin que le corten el pelo. y Si hay una silla desocupada, el cliente incrementa la variable entera espera y luego ejecuta up con el semforo clientes, lo cual activa al barbero. En este punto tanto el cliente como el barbero estn activo. Cuando el cliente libera mutex, el barbero lo toma, efecta algunas labores de mantenimiento e inicia el corte de pelo.

y Una vez terminado el corte, el cliente sale del

procedimiento y deja la peluquera.


y Estos no implican transferencia de datos , pertenecen

al rea de comunicacin entre procesos porque implican una sincronizacin entre mltiples procesos.

Planificacin Round Roubin


y Mtodo para seleccionar todos los elementos en un

grupo de manera equitativa y en un orden racional


y Comenzando por el primer elemento de la lista hasta

llegar al ltimo y empezando de nuevo desde el primer elemento


y Round-Roubin: del principio Round-Roubin donde

cada persona toma una parte de un algo compartido en cantidades parejas.

y Da un tiempo mximo de uso de CPU a cada proceso,

pasado el cual es desalojado y retornado al estado de listo, la lista de procesos se planifica por FCFS, primero llegado, primero atendido.

Pasos de ciclos
y Para averiguar los pasos de ciclos de procesos totales se

toman todos los nmeros de procesos y se calculan con los procesos necesarios para la realizacin de estos... y Suponga que hay tres procesos y se desea averiguar cuanto tarda.
y proceso A: 3 veces y proceso B: 4 veces y proceso C: 5 veces

y Se de ne un intervalo de tiempo denominado cuanto, cuya duracin vara segn el sistema. y La cola de procesos se estructura como una cola circular. y El plani cador la recorre asignando un cuanto de tiempo a cada proceso. y La organizacin de la cola es FIFO. y El cuanto se suele implantar mediante un temporizador que genera una interrupcin cuando se agota el cuanto de tiempo. y Si el proceso agota su rfaga de CPU antes de nalizar el cuanto, el plani cador asigna la CPU inmediatamente a otro proceso. y Este algoritmo tiene un tiempo de espera relativamente grande. Sin embargo, garantiza un reparto de la CPU entre todos los usuarios y arroja tiempos de respuesta buenos

Planificacin por Prioridad


y En este algoritmo a cada proceso se le asocia un nmero entero de prioridad. Mientras menor sea este entero pues mayor prioridad tiene el proceso, por lo que la escencia del algoritmo es planificar la entrada de procesos a la CPU de acuerdo a la prioridad asociada de cada uno de ellos. y Un caso particular del algoritmo por prioridad es el SJF, donde el valor del prximo ciclo de CPU representa la prioridad. El algoritmo por prioridad corrige algunas deficiencias del SJF, particularmente el retraso excesivo de procesos largos y el favoritismo por procesos cortos.

Cmo se determina la prioridad de cada proceso?


y Existe una disciplina de planificacin no apropiativa en

la cual la prioridad de cada proceso no solo se calcula en funcin del tiempo de servicio (tiempo en la CPU) sino tambin del tiempo que ha esperado para ser atendido.
y

y Con esta frmula notamos que como el tiempo de

servicio est en el denominador los procesos cortos tendrn preferencia, y como tambin el tiempo de espera aparece en el numerador los procesos largos que tambin han esperado, tendrn una prioridad favorable.

Ejemplo de la Planificacin por Prioridad


y En el siguiente ejemplo se tienen 4 procesos (P1, P2,P3

y P4). La tabla muesta los tiempos de ejecucin de cada uno y su prioridad.

y De acuerdo a este criterio los procesos entrarn a la

CPU y no la cedern hasta no haber terminado, ya que es un algoritmo sin desalojo.

y Uno de los problemas que puede presentar esta

planificacin es la de un bloqueo indefinido. Es decir, pudiera darse el caso que existan procesos de prioridad alta que haran que los procesos de prioridad baja queden bloqueados esperando por ellos, solo se desbloquearan cuando estos procesos de prioridad baja logren colocarse en la CPU y por ello puede darse una espera indefinida.

y Es aqu donde se puede aplicar una tcnica conocida

como envejecimiento que ir incrementando la prioridad de los procesos en espera cada determinado tiempo hasta que estos se ejecuten.

Potrebbero piacerti anche