Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Problema
y 5 filsofos se sientan alrededor de una mesa y pasan su vida cenando y
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
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).
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.
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?
que cumplir:
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
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.
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) } }
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.
al rea de comunicacin entre procesos porque implican una sincronizacin entre mltiples procesos.
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
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
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.
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.
como envejecimiento que ir incrementando la prioridad de los procesos en espera cada determinado tiempo hasta que estos se ejecuten.