Sie sind auf Seite 1von 24

Bloqueos Mutuos

Modelo del Sistema Caracterizacin de Bloqueos Mutuos Mtodos para Manejar Bloqueos Mutuos Prevencin de Bloqueos Mutuos Como Evitar Bloqueos Mutuos Deteccin de Bloqueos Mutuos Recuperacin de un Estado de Bloqueo Mutuo Aproximacin Combinada para el Manejo de Bloqueos Mutuos

El Problema de Compartir Recursos


Cuando muchos procesos compiten por relativamente pocos recursos y el sistema no es capaz de dar servicio a todos los procesos en el sistema. Una carencia de sincronizacin de procesos puede dar lugar a dos condiciones extremas: El bloqueo mutuo (abrazo mortal) La inanicin

El Problema del Bloqueo Mutuo


Un conjunto de procesos esta bloqueado cuando cada uno posee un recurso y esta a la espera de obtener un recurso posedo por otro proceso del conjunto. Ejemplo:
El sistema tiene 2 drives de cinta. P1 y P2 cada uno posee un drive de cinta y cada uno necesita el otro.

Ejemplo:
Los semforos A y B, inicializados a 1

P0 wait (A); wait (B);

P1 wait(B) wait(A)

Ejemplo del Cruce del Puente o el de la escalera de incendios

Trafico solo en una direccin. Cada seccin del puente puede ser visto como un recurso. Si un bloqueo mutuo ocurre, este puede ser resuelto si un carro retrocede (renuncie a recursos). Varios carros pueden tener que retroceder si el bloqueo mutuo ocurre. La inanicin es posible.

Bloqueo Mutuo
El bloqueo mutuo es mas serio que la inanicin (posposicin indefinida) porque afecta mas de un trabajo (la totalidad del sistema, eventualmente). Los bloqueos mutuos eran poco frecuentes en los primeros sistemas en batch porque los trabajos incluan una lista completa de los recursos que necesitaban para ejecutarse y el sistema operativo se aseguraba que estos estuvieran libres y asignados antes de poner, al trabajo, en la cola de LISTOS. Los bloqueos mutuos se hicieron mas frecuentes con los sistemas interactivos, porque estos son mas flexibles y mejoran el uso de recursos al compartirlos en forma dinmica.

Caracterizacin de Bloqueos Mutuos


Surge si se presentan simultaneamente las cuatro condiciones: Exclusin mutua: solo un proceso por vez puede usar el recurso (solo una persona tiene acceso a un escaln ). Retencin y espera: debe existir un proceso que est reteniendo por lo menos un recurso y est esperando adquirir recursos adicionales que en ese momento estn siendo retenidos por otro proceso (la persona se empea en no retirarse). No apropiacin: un recurso solo puede ser liberado voluntariamente por el proceso que lo est reteniendo, una vez que dicho proceso a completado su tarea (cada escaln esta asignado al que sube, o al que baja, tanto tiempo como sea necesario). Espera circular: (cada persona espera que la otra libere el escaln) debe existir un conjunto {P0, P1, , P0} de procesos en espera, tal que P0 est esperando un recurso que est retenido por P1, P1 est esperando un recurso que est retenido por P2, , Pn1 est esperando por un recurso retenido por Pn, y Pn est esperando por un recurso retenido por P0 .

Caracterizacin de Bloqueos Mutuos


Si se puede eliminar una cualesquiera de las condiciones para bloqueo mutuo, este se resolver. Es posible prevenir que la cuatro condiciones se den al mismo tiempo, con lo cual se evitaran los bloqueos mutuos. Estas condiciones se pueden modelar utilizando graficas dirigidas.

Modelado del Sistema


Tipos de recursos R1, R2, . . ., Rm
Ciclos de CPU, espacio de memoria, dispositivos de I/O

Cada tipo de recurso Ri tiene Wi instancias. Cada proceso utiliza el recurso como sigue:
solicitud uso liberacin

Grfica de Asignacin de Recursos


Un conjunto de vrtices V y un conjuto de aristas dirigidas E. V es particionado en dos tipos:
P = {P1, P2, , Pn}, el conjunto consistente de todos los procesos en el sistema. R = {R1, R2, , Rm}, el conjunto consistente de todos los tipos de recursos en el sistema.

Arista de peticin arista dirigida P1 Rj Arista de asignacin arista dirigida Rj Pi

Grfica de Asignacin de Recursos(Cont.)


Proceso

Tipo de recurso con 4 instancias

Pi solicita una instancia de Rj


Pi
Rj

Pi est reteniendo una instancia de Rj


Pi
Rj

Hechos Bsicos
Si un grfico no contiene ciclos no existe bloqueo mutuo. Si un grfico contiene un ciclo
Si solo hay una instancia por tipo de recurso, entonces se da el bloqueo mutuo. Si hay varias instancias por tipo de recurso, entonces se da la posibilidad de bloqueo mutuo.

Ejemplo: Grfica de Asignacin de Recursos

Grfica con un Bloqueo Mutuo

Grfica con un Ciclo pero sin Bloqueo Mutuo

Nota: O bien los recursos se liberan antes que ocurra el bloqueo mutuo; esto en sistemas donde solo hay una instancia de cada tipo de recurso.

Mtodos para Manejar Bloqueos Mutuos


Podemos utilizar un protocolo para asegurar que el sistema nunca entrar en un estado de bloqueo mutuo. Podemos permitir que el sistema entre en un estado de bloqueo mutuo y luego hacer una recuperacin. Podemos ignorar el problema y pretender que los bloqueos mutuos nunca ocurren en el sistema; usado por la mayora de los sistemas operativos, incluyendo a UNIX.

Prevencin de Bloqueos Mutuos


Restringir las formas en las que la peticin puede ser hecha. Exclusin Mutua no requerido por recursos compartidos (Spool por ejem.); debe de cumplirse en el caso de recursos que no puedan compartirse (memoria, CPU, o dispositivos dedicados). Retener y Esperar debemos garantizar que, siempre que un proceso solicite un recurso no retenga algn otro.
Requiere que cada proceso solicite y se le asignen todos sus recursos antes de iniciar su ejecucin ( en el momento de la creacin ), o permitir que un proceso solicite recursos slo cuando no tenga alguno. Baja utilizacin de recursos; se da la posibilidad de inanicin.

Prevencin de Bloqueos Mutuos(Cont.)


Espera Circular imponer un ordenamiento total de todos los tipos de recursos (numerarlos: impresora = 1, disco = 2, etc), y requerir que cada proceso solicite sus recursos en orden creciente de enumeracin ( ordenamiento jerarquico que obliga a anticipar el orden en que utilizara los recursos). No Apropiacin
Si un proceso que est reteniendo algunos recursos solicita otro recurso que no le puede ser asignado inmediatamente, entonces todos los recursos que actualmente son retenidos son apropiados (se liberan implcitamente). Los recursos apropiados se agregan a la lista de recursos que el proceso est esperando. El proceso se reiniciar solamente cuando pueda volver a obtener sus antiguos recursos, as como los nuevos que est solicitando.

Como Evitar Bloqueos Mutuos


Incluso si un sistema operativo no puede eliminar una de las condiciones de bloqueo mutuo, puede evitar uno.Se requiere que el sistema tenga alguna informacin adicional a priori disponible. El modelo ms simple y til requiere que cada proceso declare el nmero mximo de recursos de cada tipo que puede necesitar.
El algoritmo de evitacin de bloqueos mutuos (algoritmo del banquero) examina dinmicamente el estado de la asignacin de recursos para asegurar que nunca podr existir una condicin de espera-circular.

El estado (Tabla) de asignacin de recursos es definido por el nmero de recursos disponibles y de recursos asignados, y por la mxima demanda de los procesos.

Algoritmo del Banquero


A ninguno de los clientes se le conceder un prstamo que exceda el capital total del banco A todos los clientes se les dar un limite de crdito mximo al abrir una cuenta A ningn cliente se le permitir que pida prestado mas all de su limite La suma de todos los prestamos no exceder el capital total del banco
Estado seguro: la institucin tiene todava suficiente dinero disponible para satisfacer las solicitudes mximas Estado inseguro: el dinero disponible no puede satisfacer la solicitud mxima de ningn cliente En tanto el capital de la institucin sea menor que la cantidad mxima disponible para los prestamos individuales, no puede garantizar que tendr capacidad de cubrir las solicitudes de crdito

Estado Seguro
Cuando un proceso solicita un recurso disponible, el sistema deber decidir si la asignacin inmediata deja al sistema en un estado seguro. Un sistema esta en estado seguro si existe una secuencia segura de todos los procesos. La secuencia <P1, P2, , Pn> es segura si para cada Pi, los recursos que Pi puede an solicitar pueden ser satisfechos por los recursos disponibles actualmente + los recursos retenidos por todos los otros Pj, con j<I.
Si Pi necesita recursos que no estn inmediatamente disponibles, entonces Pi debe de esperar hasta que todos los Pj hayan terminado. Cuando Pj esta terminando, Pi puede obtener recursos necesarios, ejecutar, regresar recursos asignados, y terminar. Cuando Pi termina, Pi+1 puede obtener sus recursos necesarios, y as sucesivamente.

Hechos Bsicos
Si un sistema esta en estado seguro no se dan los bloqueos mutuos. Si un sistema esta en estado inseguro existe la posibilidad de bloqueos mutuos (candidato excelente). Si existe evitacin aseguramos que el sistema nunca caer en estado inseguro.

Seguro, Inseguro , Estado de Bloqueo Mutuo

Deteccin de Bloqueos Mutuos


Aunque el algoritmo del banquero se ha utilizado en sistemas de pocos recursos, no siempre resulta practico para la mayor parte de los sistemas interactivos El costo por carga general (overhead) incurrida al ejecutar el algoritmo del banquero puede resultar muy elevado, ya que debe correr con cada solicitud Los recursos no se utilizan bien porque el algoritmo supone el peor caso y, como resultado, conserva recursos vitales no disponibles como proteccin contra estados inseguros Los bloqueos mutuos se pueden detectar, elaborando graficas de recursos dirigidos y buscando ciclos, este algoritmo se puede ejecutar siempre que sea apropiado: cuando la produccin se ha deteriorado o cuando se queje un usuario o cada hora, etc.

Grfica de Asignacin de Recursos (Algoritmo)


Arista de demanda Pi Rj indica que el proceso Pj puede solicitar el recurso Rj en algn momento en el futuro; representada por una lnea punteada. Una arista de demanda se convierte en arista de peticin cuando un proceso solicita un recurso. Cuando un recurso es liberado por un proceso, una arista de asignacin se convierte en arista de demanda. Los recursos se deben demandar por adelantado en el sistema.

Grfica de Asignacin de Recursos para Evitacin de Bloqueos Mutuos

Estado Inseguro en Grfica de Asignacin de Recursos

Algoritmo del Banquero


Condiciones:
Instancias mltiples. Cada proceso deber reclamar por adelantado su mximo uso de recursos. Cuando un proceso solicita un recurso puede tener que esperar. Cuando un proceso consigue todos sus recursos deber de regresarlos en una cantidad de tiempo finita.

Estructuras de Datos para el Algoritmo del Banquero


n = nmero de procesos , y m = nmero de tipos de recursos. Available: Vector de longitud m. Si available [j] = k, existen k instancias disponibles del tipo de recurso Rj . Max: matriz n x m. Si Max [i,j] = k, entonces el proceso Pi puede solicitar cuando mucho k instancias del tipo de recurso Rj. Allocation: matriz n x m. Si Allocation[i,j] = k entonces Pi tiene actualmente asignadas k instancias de Rj. Need: matriz n x m. Si Need[i,j] = k, entonces Pi puede necesitar k instancias ms de Rj para completar su tarea.
Need [i,j] = Max[i,j] Allocation [i,j].

Algoritmo de Seguridad
1. Work y Finish son vectores de longitud m y n, respectivamente. Inicializamos:
Work = Available Finish [i] = false for i - 1,3, , n.

2. Encontrar una i que cumpla con ambas condiciones :


(a) Finish [i] = false (b) Needi Work If no existe tal i, go to 4.

3. Work = Work + Allocationi Finish[i] = true go to 2. 4. If Finish [i] == true para toda i, then el sistema se encuentra en estado seguro.

Algoritmo de Solicitud-Recursos para el Proceso Pi


Request = vector de solicitud para el proceso Pi. If Requesti [j] = k then el proceso Pi necesita k instancias del tipo de recurso Rj.
1. If Requesti Needi go to 2. Otherwise, inicie condicin de error, ya que el proceso ha exedido su demanda mxima. 2. If Requesti Available, go to 3. Otherwise Pi deber esperar, ya que no hay recursos disponibles. 3. Simular la asignacin de recursos solicitados para Pi por medio de la modificacin del estado como sigue : Available = Available Requesti; Allocationi = Allocationi + Requesti; Needi = Needi Requesti;; If estado seguro los recursos son asignados a Pi. If estado inseguro Pi debera esperar, y el anterior estado de solicitud-recursos es reestablecido

Ejemplo de Algoritmo del Banquero


5 procesos P0 hasta P4; 3 tipos de recursos A (10 instancias), B (5 instancias), y C (7 instancias). Instante de tiempo T0: Allocation Max Available ABC ABC ABC P0 010 753 332 P1 200 322 P2 302 902 P3 211 222 P4 002 433

Ejemplo (Cont.)
El contenido de la matriz Need esta definido por: Max Allocation. Need ABC 743 P0 122 P1 600 P2 011 P3 431 P4 El sistema se encuentra en estado seguro ya que la secuencia < P1, P3, P4, P2, P0> satisface el criterio de seguridad.

Ejemplo: P1 Solicita (1,0,2) (Cont.)


Compruebe que Request Available; esto es, (1,0,2) (3,3,2) true. Need Available Allocation ABC ABC ABC P0 0 1 0 743 230 P1 3 0 2 020 P2 3 0 1 600 P3 2 1 1 011 P4 0 0 2 431 El algoritmo de ejecucin segura muestra que la secuencia <P1, P3, P4, P0, P2> satisface el requerimiento de seguridad. Puede la solicitud por (3,3,0) para P4 ser otorgada? Puede la solicitud por (0,2,0) para P0 ser otorgada?

Deteccin de Bloqueos Mutuos


Permitir al sistema entrar en estado de bloqueo mutuo
Algoritmo de Deteccin Esquema de Recuperacin

Una sola Instancia de cada Tipo de Recurso


Mantener grfica de espera
Los nodos son procesos. Pi Pj I si Pi esta esperando por Pj.

Peridicamente invoca un algoritmo que busca por un ciclo en la grfica . Un algoritmo para detectar un ciclo en una grfica requiere de n2 operaciones, donde n es el nmero de vrtices en la grfica.

Grficas de Localizacin de Recursos y de Espera

Grfica de Localizacin de Recursos

Grfica de Espera correspondiente

Varias Instancias de un Tipo de Recursos


Available: Un vector de longitud m indica el nmero de recursos disponibles de cada tipo. Allocation: Una matriz n x m define el nmero de recursos de cada tipo actualmente asignadas a cada proceso. Request: Una matriz n x m indica la solicitud actual de cada proceso. If Request [ij] = k, then el proceso Pi esta solicitando k instancias ms del tipo de recurso Rj.

Algoritmo de Deteccin
1. Work y Finish son vectores de longitud m y n, respectivamente; Inicializamos: (a) Work = Available (b) For i = 1,2, , n, if Allocationi 0, then Finish[i] = false; otherwise, Finish[i] = true. 2. Encuentre un ndice i tal que cumpla ambas : (a) Finish[i] == false (b) Requesti Work If no existe tal i , go to 4.

Algoritmo de Deteccin (Cont.)


3. Work = Work + Allocationi Finish[i] = true go to 2. 4. If Finish[i] == false, para alguna i, 1 i n, then el sistema est en estado de bloqueo mutuo. Adems, if Finish[i] == false, then Pi est bloqueado .

El algoritmo requiere del orden de O(m x n2) operaciones para detectar si el sistema se encuentra en estado de bloqueos mutuos

Ejemplo del Algoritmo de Deteccin


5 procesos P0 hasta P4 ; 3 tipos de recursos A (7 instancias), B (2 instancias), y C (6 instancias). Instante de tiempo T0: Allocation Request Available ABC ABC ABC P0 0 1 0 000 000 P1 2 0 0 202 P2 3 0 3 000 P3 2 1 1 100 P4 0 0 2 002 La secuencia <P0, P2, P3, P1, P4> resultara en Finish[i] = true para toda i.

Ejemplo (Cont.)
P2 solicita una instancia adicional del tipo C. Request ABC P0 0 0 0 P1 2 0 1 P2 0 0 1 P3 1 0 0 P4 0 0 2 Estado del sistema?
Puede reclamar recursos retenidos por el proceso P0, pero son insuficientes para ejecutar las solicitudes de otros procesos. El bloqueo mutuo existe, consiste de los procesos P1, P2, P3, y P4.

Uso del Algoritmo de Deteccin


Cuando , y con que frecuencia , invocarlo depende de:
Que tan frecuente es posible que ocurra un bloqueo mutuo? Cuantos procesos necesitan ser retrocedidos ? Uno por cada ciclo disjunto

Si el algoritmo de deteccin es invocado arbitrariamente, podr haber muchos ciclos en la grfica de recursos y as no estaramos en capacidad de decir cual de los muchos procesos en bloqueo mutuo causaron el bloqueo.

Bloqueo Mutuo de Trfico

Es obvio que se requiere la intervencin exterior para eliminar el bloqueo mutuo: eliminar algn vehculo de la interseccin o hacer que una lnea retroceda

Recuperacin de un Proceso de Bloqueo Mutuo: Terminacin de Procesos


Abortar todos los procesos bloqueados . Abortar un proceso cada vez hasta que el ciclo de bloqueo sea eliminado. En que orden debe escogerse el aborto?
Prioridad del proceso. Que tanto tiempo el proceso se ha computado, y cuanto le falta para terminar. Recursos que el proceso ha usado. Recursos que el proceso necesita para completar. Cuantos procesos necesitaran ser terminados. Es el proceso interactivo o en batch

Recuperacin de un Proceso de Bloqueo Mutuo: Apropiacin de Recursos


Seleccionar una victima minimizar el costo . Retroceso regresar a algn estado seguro, restablecer el proceso para ese estado.
Inanicin un mismo proceso puede ser escogido siempre como victima, incluir el nmero de retrocesos en el factor de costo.

Aproximacin Combinada en el Manejo de Bloqueos


Combine las tres aproximaciones bsicas
Prevencin Evitacin Deteccin

permitiendo el uso de la aproximacin optima para cada uno de los recursos en el sistema. Particin de recursos en clases ordenadas jerrquicamente.
Usar la tcnica ms apropiada para el manejo de bloqueos mutuos dentro de cada clase.

Resumen
El sistema operativo debe de asignar de manera dinmica un numero limitado de recursos y al mismo tiempo evitar los bloqueos mutuos y la inanicin Mtodos pata tratar los bloqueos mutuos.
Prevencin: impidiendo las cuatro condiciones se presenten eliminando, al menos, una de ellas Exclusin mutua Retencin de recursos No apropiatividad Espera circular Evitacin: al identificar Estados seguros e inseguros y mantener suficientes recursos en reserva para garantizar la terminacin de los trabajos activos Deteccin y recuperacin: se apoya en la seleccin de victimas (trabajos que deben de terminar antes de completar su ejecucin y reiniciar desde el principio

Mtodos pata tratar la inanicin:


Envejecimiento

Das könnte Ihnen auch gefallen