Esta condicin consiste en que un proceso pide un recurso que ya est
asignado a otro proceso y la condicin de no apropiacin 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 ejecucin en esperar. La solucin ms comn a este problema consiste en que el sistema operativo se d cuenta de esta situacin y mande a una cola de espera al proceso, otorgndole inmediatamente el turno de ejecucin a otro proceso. Condicin de Exclusin Mutua Cuando un proceso usa un recurso del sistema realiza una serie de operaciones sobre el recurso y despus lo deja de usar. A la seccin de cdigo que usa ese recurso se le llama regin crtica. La condicin de exclusin mutua establece que solamente se permite a un proceso estar dentro de la misma regin crtica. Esto es, que en cualquier momento solamente un proceso puede usar un recurso a la vez. Para lograr la exclusin mutua se ideo tambin el concepto de regin crtica. Para logar la exclusin mutua generalmente se usan algunas tcnicas para lograr entrar a la regin crtica: semforos, monitores, el algoritmo de Dekker y Peterson, los candados. Condicin 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 ms serio que se puede presentar en un ambiente de concurrencia es el abrazo mortal, tambin llamado trabazn y en ingls deadlock. El deadlock es una condicin que ningn sistema o conjunto de procesos quisiera exhibir, ya que consiste en que se presentan al mismo tiempo cuatro condiciones necesarias: La condicin de no apropiacin, la condicin de espera circular, la condicin de exclusin mutua y la condicin 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 quedarn congelados para siempre. En el rea de la informtica, el problema del deadlock ha provocado y producido una serie de estudios y tcnicas muy tiles, ya que ste puede surgir en una sola mquina o como consecuencia de compartir recursos en una red. En el rea de las bases de datos y sistemas distribuidos han surgido tcnicas como el two phase locking y el two phase commit que van ms all de este trabajo. Sin embargo, el inters principal sobre este problema se centra en generar tcnicas para detectar, prevenir o corregir el deadlock. Las tcnicas 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 filsofos
El problema fue planteado en 1965 por Edgar W. Dijkstra en relacin a un conflicto en el acceso a un recurso compartido: Dispositivo de red, unidad de disco. Cinco filsofos pasan la vida pensando y comiendo Cuando un filsofo piensa, no interacta 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 inanicin Primera Solucin
Representar cada palillo con un semforo Un filsofo trata de tomar
un palillo ejecutando una operacin espera con ese semforo, y suelta sus palillos ejecutando la operacin seal con los semforos apropiados. var palillo: array [0..4] of semforo; Inicialmente todos los elementos de palillo estn en 1 Primera Solucin Garantiza que dos vecinos no estarn comiendo simultneamente Posibilidad de bloqueo mutuo Suponga que los cinco filsofos sienten hambre simultneamente y cada uno toma su palillo izquierdo Posibles soluciones al problema de bloqueos Permitir que como mximo filsofos se sienten a la mesa cuatro filsofos Slo permitir que un filsofo tome sus palillos si ambos estn disponibles ( dentro de la seccin crtica ) Solucin asimtrica Un filsofo impar toma primero su palillo izquierdo y luego el derecho, mientras que un filsofo par toma primero su palillo derecho y luego el izquierdo. Cualquier solucin satisfactoria deber evitar la posibilidad que uno de los filsofos muera de hambre. Una solucin libre de bloqueos mutuos no elimina necesariamente la posibilidad de inanicin Solucin por monitores Distinguir entre los tres estados en los que podra estar un filsofo Pensando, hambriento y comiendo Definir el estado del mismo filsofo
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 Slo se permite que un escritor tenga acceso al objeto al mismo tiempo. Mientras el escritor est accediendo al objeto, ningn otro proceso lector ni escritor podr acceder a l. Se permite que mltiples 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 ningn 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, ningn otro lector puede comenzar a leer. Sol/ Definir prioridades a lectores y escritores Utilizado para probrar las primitivas de sincronizacin nueva