condición de espera ocupada
DESCRIPTION
Planificacion de procesosTRANSCRIPT
Condición de Espera Ocupada
Esta condición consiste en que un proceso pide un recurso que ya está asignado a otro proceso y la condición de no apropiación se debe cumplir. Entonces el proceso estará gastando el resto de su time slice checando si el recurso fue liberado. Es decir, desperdicia su tiempo de ejecución en esperar. La solución más común a este problema consiste en que el sistema operativo se dé cuenta de esta situación y mande a una cola de espera al proceso, otorgándole inmediatamente el turno de ejecución a otro proceso.
Condición de Exclusión Mutua
Cuando un proceso usa un recurso del sistema realiza una serie de operaciones sobre el recurso y después lo deja de usar. A la sección de código que usa ese recurso se le llama región crítica. La condición de exclusión mutua establece que solamente se permite a un proceso estar dentro de la misma región crítica. Esto es, que en cualquier momento solamente un proceso puede usar un recurso a la vez. Para lograr la exclusión mutua se ideo también el concepto de región crítica. Para logar la exclusión mutua generalmente se usan algunas técnicas para lograr entrar a la región crítica: semáforos, monitores, el algoritmo de Dekker y Peterson, los candados.
Condición de Ocupar y Esperar un Recurso
Consiste en que un proceso pide un recurso y se le asigna. Antes de soltarlo, pide otro recurso que otro proceso ya tiene asignado.
Los problemas descritos son todos importantes para el sistema operativo, ya que debe ser capaz de prevenir o corregirlos. Tal vez el problema más serio que se puede presentar en un ambiente de concurrencia es el abrazo mortal, también llamado trabazón y en inglés deadlock. El deadlock es una condición que ningún sistema o conjunto de procesos quisiera exhibir, ya que consiste en que se presentan al mismo tiempo cuatro condiciones necesarias: La condición de no apropiación, la condición de espera circular, la condición de exclusión mutua y la condición de ocupar y esperar un recurso. Ante esto, si el deadlock involucra a todos los procesos del sistema, el sistema ya no podrá hacer algo productivo. Si el deadlock involucra algunos procesos, éstos quedarán congelados para siempre.
En el área de la informática, el problema del deadlock ha provocado y producido una serie de estudios y técnicas muy útiles, ya que éste puede surgir en una sola máquina o como consecuencia de compartir recursos en una red.
En el área de las bases de datos y sistemas distribuidos han surgido técnicas como el two phase locking y el two phase commit que van más allá de este trabajo. Sin embargo, el interés principal sobre este problema se centra en generar técnicas para detectar, prevenir o corregir el deadlock.
Las técnicas para prevenir el deadlock consisten en proveer mecanismos para evitar que se presente una o varias de las cuatro condiciones necesarias del deadlock. Algunas de ellas son:
· Asignar recursos en orden lineal· Asignar todo o nada· Algoritmo del banquero
El problema de la cena de los filósofos
El problema fue planteado en 1965 por Edgar W. Dijkstra en relación a un conflicto en el acceso a un recurso compartido: Dispositivo de red, unidad de disco.
Cinco filósofos pasan la vida pensando y comiendo• Cuando un filósofo piensa, no interactúa con sus colegas .• Cuando tiene hambre, toma los dos palillos al mismo tiempo y come sin soltarlos.• Cuando termina de comer, coloca los dos palillos sobre la mesa y comienza a pensar.
• Necesidad de asignar varios recursos entre varios procesos sin que haya bloqueos mutuos ni inanición
Primera Solución
• Representar cada palillo con un semáforo • Un filósofo trata de tomar un palillo ejecutando una operación espera con ese semáforo, y suelta sus palillos ejecutando la operación señal con los semáforos apropiados.
var palillo: array [0..4] of semáforo;
• Inicialmente todos los elementos de palillo están en 1
Primera Solución
• Garantiza que dos vecinos no estarán comiendo simultáneamente • Posibilidad de bloqueo mutuo •Suponga que los cinco filósofos sienten hambre simultáneamente y cada uno toma su palillo izquierdo
Posibles soluciones al problema de bloqueos
Permitir que como máximo filósofos se sienten a la mesa cuatro filósofos
Sólo permitir que un filósofo tome sus palillos si ambos están disponibles ( dentro de la sección crítica )
Solución asimétrica è Un filósofo impar toma primero su palillo izquierdo y luego el derecho, mientras que un filósofo par toma primero su palillo derecho y luego el izquierdo.
Cualquier solución satisfactoria deberá evitar la posibilidad que uno de los filósofos muera de hambre.
Una solución libre de bloqueos mutuos no elimina necesariamente la posibilidad de inanición
Solución por monitores
Distinguir entre los tres estados en los que podría estar un filósofo è Pensando, hambriento y comiendo
Definir el estado del mismo filósofo
Existe un determinado objeto que se va a ser utilizado y compartido por una serie de procesos concurrentes.
• Un objeto se va a compartir entre varios usuarios, algunos solo quieren leer el contenido ( lectores ), otros quieren actualizarlo (escritores)
Restricciones
• Sólo se permite que un escritor tenga acceso al objeto al mismo tiempo. •Mientras el escritor esté accediendo al objeto, ningún otro proceso lector ni escritor podrá acceder a él.• Se permite que múltiples lectores tengan acceso al objeto, ya que ellos nunca van a modificar el contenido del mismo
Un objeto se va a compartir entre varios usuarios, algunos solo quieren leer el contenido ( lectores ), otros quieren actualizarlo (escritores)
Primer Problema : No se debe tener a ningún lector en espera a menos que el escritor tenga el permiso del uso del objeto
Segundo Problema : Si un escritor está esperando acceder al objeto, ningún otro lector puede comenzar a leer.
Sol/ Definir prioridades a lectores y escritores
Utilizado para probrar las primitivas de sincronización nueva