Monday, November 29, 2010

BLOQUEO MUTUO

• En un medio ambiente de multiprogramación, varios procesos
pueden competir por un número finito de recursos.
• Los recursos de un sistema son particionados en varios tipos
(espacio de memoria, ciclos de CPU, archivos, dispositivos de
E/S), cada uno de los cuales consiste de un número de instancias
idénticas.
• Si un proceso requiere una instancia de un tipo de recurso, la
asignación de cualquier instancia del tipo satisface el
requerimiento.
• Cuando un proceso requiere un recurso que no está disponible
pasa a un estado de espera.
• Puede suceder que un proceso en espera nunca pueda cambiar de
estado porque el recurso que ha requerido esta retenido por otro
proceso en espera, esta situación es llamada bloqueo mutuo.
• Los bloqueos mutuos pueden describirse más precisamente por
medio de un grafo de asignación de recursos.
• Hay una variedad de situaciones de bloqueo:
– un proceso Pi
requiere una instancia de un recurso tipo R1 retenida
por otro proceso Pj que se encuentra en espera y bloqueado.
– dos procesos Pi y Pj
retienen una instancia de un recurso tipo R1 y
R2
respectivamente. Pi
requiere una instancia del recurso tipo R2 y Pj
una instancia del recurso tipo R1
.
– en un grupo de procesos, cada uno está esperando un evento que
puede ser causado solo por otro proceso del grupo.

Condiciones necesarias para el bloqueo mutuo:

• Exclusión mutua
• Retención y espera
• No apropiación
• Espera circular
Estas condiciones deben darse simultáneamente
grafo de asignacion de recursos
es un grafo que permite identificar posibles estados de bloqueos mutuos .
-Bloqueos mutuos se deven cumplir 4 condiciones:
Exclucion mutua :dos o mas procesos no pueden compartir el mismo recurso a la vez
Retencion de recursos y espera:Si un proceso toma un recurso y necesita otro adiccional no libera el primero de ellos.
No deve permitir la expropiacion de recursos ;Si un proceso esta utilisando un recurso el S.O no se lo puede quitar.
Existencia de espera sircular:Todos los procesos esperan por un recurso que estan ocupados por otro preoceso,de la Sgte forma P1-->R1-->P2-->P3-->...Rn-->P1
Grafo de asignacion de Recursos son las condiciones para generar BM
a)Exclucion Mutua:Si Px tiene un recurso ,Py no puede utilizarlo
b)Retener recurso y esperar:Px esta ocupando un Ry y Px quiere pedir otro ,sinn liberar el 1°
c)No esxprpiacion de recursos:Si Px tiene un recurso Ry,el S.O u otro proceso no puede quitarselo
d)Espera circular:P0-->R0-->P1
P1-->R1-->P2
Px-->Rx-->P0


Mecanismo para prevenir bloqueos mutuos

Hay tres métodos para tratar el problema del bloqueo:

1) Usar un protocolo para asegurar que el sistema nunca entrará en un estado de bloqueo.
2) Permitir entrar en un estado de bloqueo y luego recuperarse.
3) Ignorar el problema.

Hay mecanismos para prevenir los bloqueos mutuos, como lo es el esquema llamado esperar morir, en el cual un proceso más antiguo debe esperar a que un proceso más joven libere su recurso. O sea que mientras más viejo se hace el proceso, más tiende a esperar. Y el otro es el llamado esquema herir-esperar, en el cual un proceso más viejo, nunca espera a un más joven.

Detección del bloqueo.

Si un sistema no posee un algoritmo de prevención o de evitación de bloqueo, lo más probable es que ocurra el bloqueo en el. Por lo cual el sistema debe poseer un algoritmo que examine el estado del sistema para ver si ha ocurrid un bloqueo, y un algoritmo para recuperarse del bloqueo. Existen sistemas con única instancia por cada tipo de recurso, en el que se debe aplicar el esquema del grafo wait-for, como también están los sistemas con varias instancias por cada tipo de recurso, en los cuales se emplea un algoritmo similar al algoritmo del banquero.

Algoritmo del banquero.

Es una forma de evitar el interbloqueo. Es un acercamiento teórico para evitar los interbloqueos en la planificación de recursos. Requiere conocer con anticipación los recursos que serán utilizados por todos los procesos. Esto último generalmente no puede ser satisfecho en la práctica. Este algoritmo usualmente es explicado usando la analogía con el funcionamiento de un banco. Los clientes representan a los procesos, que tienen un crédito límite, y el dinero representa a los recursos. El banquero es el sistema operativo. Este algoritmo mantiene al sistema en un estado seguro para de esta manera evitar el interbloqueo.

Recuperación del bloqueo.

Cuando el algoritmo detecta un bloqueo, lo que hace es avisar al sistema que existe un bloqueo, o simplemente dejar que el sistema se recupere solo. Para romper un bloqueo el sistema aborta uno o más procesos hasta romper la espera circular, o apropiar algunos recursos de uno o más procesos bloqueados. Hay dos métodos para eliminar bloqueos abortando procesos, que son abortando todos los procesos bloqueados, o abortar de un ciclo a la vez hasta eliminar el ciclo del bloqueo. Y finalmente la apropiación de recursos se trata de apropiarse de recursos de los procesos para darlos a otros procesos hasta romper el ciclo del bloqueo. Esto implica resolver tres cuestiones: Selección de una víctima, Rollback e inanición.

Unidad 2 Parte 2 (2.2)

- SINCRONIZACIÓN DE PROCESOS
Un proceso es cooperativo si puede afectar o ser afectado por los otros procesos que se están ejecutando en el sistema.

•La cooperación entre procesos requiere: la ejecución concurrente de los mismos, mecanismos de comunicación y mecanismos de sincronización
Al haber procesos concurrentes se deben emplear mecanismos para asegurar la consistencia de los datos.
Como ejemplo, supongamos que tenemos 3 procesos concurrentes que quieren modificar un mismo archivo. Si los 3 acceden a este al mismo tiempo el archivo quedará con valores incorrectos. Para resolver problemas como este se ideó la sección crítica, que es el segmento de código que accede a los recursos. Sólo puede haber una sección crítica en ejecución por vez, así nos aseguramos que los datos quedan consistentes.
- LA SECCIÓN CRITICA 
El problema de la seción crítica consiste en diseñar un protocolo que los procesos puedan usar para cooperar de esta forma.
Cualquier solución al problema de la sección crítica deberá satisfacer los tres requisitos siguiente:
· Exclusión mutua.- Si el proceso Pi está ejecutándose en su sección crítica, los demás procesos no pueden estar ejecutando sus secciones críticas.
· Progreso.- Si ningún proceso está ejecutando su sección crítica, y algunos procesos desean entrar en sus correspondientes secciones críticas, sólo aquellos procesos que no estén ejecutando sus secciones restantes pueden participar en la decisión de cuál será el siguiente que entre en su sección crítica, y esta selección no se puede posponer indefinidamente.
- Concurrencia y paralelismo
• Hay concurrencia entre varios procesos cuando existen al mismo tiempo.
PROCESOS CONCURRENTES
• Hay paralelismo entre varios procesos cuando se ejecutan al mismo tiempo.
PROCESOS PARALELOS
• El paralelismo requiere un soporte físico: varios procesadores.
• La concurrencia es el caso general y el paralelismo un caso particular.
• La concurrencia (y el paralelismo) se refiere a la ejecución de código:
Hay procesos concurrentes y flujos concurrentes.
• Hablaremos en general de flujos concurrentes:
Pueden ser del mismo proceso o diferentes procesos.
Pueden correr en un único procesador o varios.
- PETERSON, DEKKER:
• El algoritmo de Peterson, también conocido como solución de Peterson, es un algoritmo de programación concurrente para exclusión mutua, que permite a dos o más procesos o hilos de ejecución compartir un recurso sin conflictos, utilizando sólo memoria compartida para la comunicación.
• Peterson desarrolló el primer algoritmo (1981) para dos procesos que fue una simplificación del algoritmo de Dekker para dos procesos. Posteriormente este algoritmo fue generalizado para N procesos.
SEMÁFOROS Y MONITORES:
Los semáforos ejercen un control sobre los procesos para saber quien accede a los recursos, para que dos o más procesos no accedan simultáneamente a estos. Estos Usan dos tipos de operaciones para saber el estado del programa (para saber si ya utilizo el recurso o está esperando a que otro proceso lo desocupe)
Un monitor es, esencialmente, una colección de datos y de procedimientos para su manipulación junto con una secuencia de inicialización. Las variables de datos globales son generalmente privadas al monitor por lo que solo son accesibles a los procedimientos de este.