EXCLUSIÓN MUTUA

Anuncio
EXCLUSIÓN MUTUA
Definición: Exclusión Mutua es la comunicación requerida entre dos o más procesos que se
están ejecutando en paralelo y que necesitan a la vez el uso de un recurso no compartible.
Consiste en asignar el recurso no compartible a sólo uno de los procesos, mientras que los
otros deben permanecer a la espera hasta que finalice la utilización de dicho recurso por el
proceso al que se le asigno. Cuando este proceso termine, el recurso será asignado a uno de
los procesos en espera. Se asegura el correcto uso del recurso.
Requisitos para la Exclusión Mutua
Los recursos no compartibles, ya sean periféricos, ficheros, o datos en memoria, pueden
protegerse del acceso simultáneo por parte de varios procesos evitando que éstos ejecuten
de forma concurrente sus fragmentos de código a través de los cuales llevan a cabo este
acceso. Estos trozos de código reciben el nombre de secciones o regiones críticas,
pudiéndose asimilar el concepto de exclusión mutua en el uso de estos recursos a la idea de
exclusión mutua en la ejecución de las secciones críticas. Así, por ejemplo, puede
implementarse la exclusión mutua de varios procesos en el acceso a una tabla de datos
mediante el recurso de que todas las rutinas que lean o actualicen la tabla se escriban como
secciones críticas, de forma que sólo pueda ejecutarse una de ellas a la vez. En el ejemplo
previo de la cuenta bancaria los fragmentos de código a1a2a3 y b1b2b3 constituyen dos
secciones críticas mutuamente excluyentes, esto significa que una vez que se ha comenzado
la ejecución de una sección crítica, no se puede entrar en otra sección crítica mutuamente
excluyente.
Idear soluciones que garanticen la exclusión mutua es uno de los problemas fundamentales
de la programación concurrente. Muchas son las alternativas y tipos de mecanismos que se
pueden adoptar. A lo largo de este tema veremos diferentes soluciones software y alguna
hardware ; unas serán sencillas y otras complejas, algunas requieren la cooperación
voluntaria de los procesos y otras que exigen un estricto ajuste a rígidos protocolos. La
selección de las operaciones primitivas adecuadas para garantizar la exclusión mutua de las
secciones críticas es una decisión primordial en el diseño de un sistema operativo. Al
menos, una solución apropiada debería cumplir las cuatro condiciones siguientes:
1. Que no haya en ningún momento dos procesos dentro de sus respectivas secciones
críticas.
2. Que no hagan suposiciones a priori sobre las velocidades relativas de los procesos o el
número de procesadores disponibles.
3. Que ningún proceso que esté fuera de su sección crítica pueda bloquear a otros.
4. Que ningún proceso tenga que esperar un intervalo de tiempo arbitrariamente grande
para entrar en su sección crítica.
SINCRONIZACIÓN.
Definición: Sincronización es la comunicación requerida entre dos o más procesos con el
fin de sincronizar sus actividades.
Gráficamente:
Un proceso, P1, llegado a un punto T, no puede proseguir su ejecución hasta que otro
proceso, P2, haya llegado a otro punto, Q, de su ejecución.
Sobre los procesos cooperantes:
� Pueden compartir espacios de direcciones o datos a través de un archivo.
� Problema a considerar:
� Como evitar la inconsistencia de los datos compartidos
� Como acceder a espacios critico de código compartido.
Alternativas de sincronización
� Semáforos
� Monitores
� Paso de mensajes
Interbloqueos (Deadlocks)
Concepto de interbloqueo. Inanición de procesos.
Definición: Un proceso esta interbloqueado si está esperando por un evento determinado
que nunca va a ocurrir.
Interbloqueo entre dos procesos por el uso de recursos no compartibles (abrazo mortal)
Postergación indefinida (inanición o Lockout): cuando un proceso espera por un evento que
puede ocurrir pero no se sabe cuando.
Condiciones necesarias para que se produzca
Coffman, Elphick y Shoshani establecieron las cuatro condición necesarias para que se
produzca interbloqueo:
1. Condición de exclusión mutua: los procesos reclaman control exclusivo de los recursos
que piden.
2. Condición de esperar por: los procesos mantienen los recursos que ya les han sido
asignados mientras esperan por recursos adicionales.
3. Condición de no apropiatividad: los recursos no pueden ser extraídos de los procesos
que los tienen hasta su completa utilización.
4. Condición de espera circular: existe una cadena circular de procesos en la cual cada uno
de ellos mantiene a uno o más recursos que son requeridos por el siguiente proceso de la
cadena.
Condiciones necesarias para que se produzca
Puntos de estudio del interbloqueo:
A. Prevención del interbloqueo: condiciona al sistema para que elimine toda posibilidad
de que se produzca interbloqueo. Estrategias:
� Negar la condición de esperar por: cada proceso debe pedir todos los recursos que va a
necesitar de golpe. Si el conjunto de todos ellos está disponible, se le asigna todos. Si no
esta disponible todo el conjunto completo, no se le asigna ninguno al proceso y tendrá que
esperar hasta que estén todos disponibles.
� Negar la condición de no apropiatividad: cuando un proceso que tiene recursos le es
negada una petición de recursos adicionales, deberá liberar sus recursos y, si es necesario,
pedirlos de nuevo junto con los recursos adicionales.
� Negar la condición de espera circular: cuando se instala un recurso se le asigna un
número exclusivo, de forma que los procesos deben de solicitar los recursos en orden
ascendente de acuerdo a los números asignados a dichos recursos.
livelock
El bloqueo mutuo (también conocido como interbloqueo, traba mortal, deadlock, abrazo
mortal) es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un
sistema concurrente que compiten por recursos del sistema o bien se comunican entre ellos.
A diferencia de otros problemas de concurrencia de procesos, no existe una solución
general para los interbloqueos.
Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas, por parte de
dos o más procesos. En la vida real, un ejemplo puede ser el de cuatro autos que se
encuentran en una intersección en el mismo momento. Cada uno necesita que otro se
mueva para poder continuar su camino, y ninguno puede continuar. Los recursos
compartidos en este caso son los cuatro cuadrantes. El auto que se dirige de oeste a este,
por ejemplo, necesita de los cuadrantes suroeste y sureste.
Un livelock es similar a un deadlock, excepto que el estado de los dos procesos envueltos
en el livelock constantemente cambia con respecto al otro. Livelock es una forma de
inanición y la definición general sólo dice que un proceso específico no está procesando.
En un ejemplo del mundo real, un livelock ocurre por ejemplo cuando dos personas, al
encontrarse en un pasillo angosto avanzando en sentidos opuestos, y cada una trata de ser
amable moviéndose a un lado para dejar a la otra persona pasar, pero terminan moviéndose
de lado a lado sin tener ningún progreso, pues ambos se mueven hacia el mismo lado, al
mismo tiempo.
Livelock es un riesgo con algunos algoritmos que detectan y recuperan los deadlock, pues
si más de uno toma cartas en el asunto, la detección del deadlock puede ser disparada
continuamente; pudiendo ser arreglado asegurándose que sólo un proceso (escogido al azar
o por prioridad) tome acción.
También conocidas como condiciones de Coffman por su primera descripción en 1971 en
un artículo escrito por E.G.Coffman.
Estas condiciones deben cumplirse simultáneamente y no son totalmente independientes
una de otra.
Sean los procesos Po, P1,.. Pn y los recursos Ro, R1,..., Rm:

Condición de exclusión mutua: Existencia al menos de un recurso compartido por
los procesos, al cual sólo puede acceder uno simultáneamente.

Condición de Posesión y espera: Al menos un proceso Pi ha adquirido un recurso
Ri, y lo mantiene mientras espera al menos un recurso Rj que ya ha sido asignado a
otro proceso.

Condición de no expropiación: Los recursos no pueden ser apropiados por los
procesos, es decir, los recursos sólo podrán ser liberados voluntariamente por sus
propietarios.

Condición de espera circular: Dado el conjunto de procesos P0...Pn, P0 está
esperando un recurso adquirido por P1, que está esperando un recurso adquirido por
P2, que...,que está esperando un recurso adquirido por Pn, que está esperando un
recurso adquirido por P0. Esta condición implica la condición de retención y espera.
Descargar