Vous êtes sur la page 1sur 6

GRAFICO DE ASIGNACION DE RECURSOS Un deadlock puede ser descrito ms precisamente usando un grfico de asignacin de recursos del sistema.

Consiste en pares G = (V , E); donde V es un conjunto de nodos y E es un conjunto de flechas. El conjunto de nodos se divide en 2 tipos: P = (p1, p2, ... , pn), conjunto de todos los procesos del sistema y R = (r1, r2, ... rm), conjunto de los tipos de recursos del sistema. Cada elemento del conjunto E es un par ordenado (pi, rj) o (rj, pi). (pi, rj) implica que el proceso pi ha solicitado una instancia del tipo de recurso rj y actualmente est esperando la asignacin. (rj, pi) implica que una instancia del tipo de recurso rj ha sido asignada al proceso pi. A la primera se la llama flecha de pedido y a la segunda flecha de asignacin. Representamos los procesos como crculos y los tipos de recursos como rectngulos, donde cada instancia aparece como un punto. Notemos que cada flecha de pedido apunta solo a un tipo de recurso mientras que cada flecha de asignacin nace de una instancia. Del grfico de la Fig. 3, puede mostrarse fcilmente que aquel que no contenga ciclos no est en deadlock. Por el contrario, si el grfico contiene un ciclo, entonces puede existir un deadlock. Si cada tipo de recurso tiene exactamente una instancia, luego un ciclo implica que un deadlock ha ocurrido. Si cada recurso tiene varias instancias, un ciclo no necesariamente implica un deadlock. Es solo una condicin necesaria pero no suficiente. Para ilustrar este concepto, volvamos a la figura 3. Supongamos que el proceso p3 pido una instancia del tipo de recurso r2. Debido a que no existe una instancia disponible, agrego una flecha (p3, r2) al grfico. (figura 8.4). Ac existen 2 ciclos mnimos en el grfico: p1 r1 p2 r3 p3 r2 p1 p2 r3 p3 r2 p2 Figura 3. Grfico de asignacin de recursos

Figura 4 Grfico de asignacin de recursos con deadlock Los procesos p1, p2 y p3 estn en deadlock. El proceso p2 est esperando por el recurso r3, el cual est asignado al proceso p3. Este a su vez est esperando que p1 o p2 liberen una instancia de r2. Adicionalmente, p1 espera que p2 libere el recurso r1. Ahora veamos la Figura 5., tengo ciclo p1 r1 p3 r2 p1.

Figura 5. Grfico de asignacin de recursos con ciclo pero sin deadlock

Ac, sin embargo no tengo deadlock: p4 puede liberar una instancia de r2, la que ser asignada a p3, rompiendo el ciclo. Resumiendo: en un grfico de asignacin, si no existen ciclos, no hay estado de deadlock. Si por el contrario, hay ciclos, puede o no haber un deadlock.

Algoritmo de Seguridad El algoritmo para determinar si un sistema est en estado seguro, puede describirse como: 1.- Sean Trabajo y Final vectores de longitud m y n respectivamente. Inicializar Trabajo:= Disponible y Final ( i ) := falso para i = 1, 2, ..., n 2.- Encontrar un i tal que: a) Final ( i ) = falso y b) Necesidades ( i ) <= Trabajo Si tal i no existe, ir a paso 4. 3.Trabajo := Trabajo + Asignados ( i ); Final ( i ) := verdadero; Ir a paso 2. 4.- Si Final (i) = verdadero para todo i, entonces el sistema est en estado seguro. Ejemplo: Consideremos un sistema con 5 procesos p0, p1,..., p4 y 3 tipos de recursos A, B, C. El tipo de recurso A tiene 10 instancias, el tipo B 5 instancias y el tipo C 7 instancias. Supongo que en tiempo T0, la situacin del sistema es: Asignados A B C 0 1 0 2 0 0 3 0 2 2 1 1 0 0 2 Mximos A B C 7 5 3 3 2 2 9 0 2 2 2 2 4 3 3 Disponible A B C 3 3 2

P0 P1 P2 P3 P4

El contenido de la matriz Necesidad se define como Mximo - Asignado y es: Necesidad A B C 7 4 3 1 2 2 6 0 0 0 1 1 4 3 1

P0 P1 P2 P3 P4

Afirmamos que el sistema est actualmente en estado seguro. En la secuencia (p1, p3, p4, p2, p0) satisface el criterio de seguridad. Supongamos ahora que el proceso p1 pide una instancia adicional del tipo de recurso A y 2 instancias del tipo de recurso C, as Pedido ( 1 ) = (1, 0, 2).

Para decidir si el pedido ser satisfecho inmediatamente, primero debemos chequear que Pedido ( 1 ) <= Disponible (o sea (1, 0, 2) <= (3, 3, 2), lo que es verdadero. Luego suponemos que este pedido ha sido satisfecho y arribo al nuevo estado: Asignados A B C 0 1 0 3 0 2 3 0 2 2 1 1 0 0 1 Necesidades A B C 7 0 6 0 4 4 2 0 1 3 3 0 0 1 1 2 3 0 Disponibles A B C

P0 P1 P2 P3 P4

Ahora se debe determinar si este nuevo estado es seguro. Para saberlo se aplica el algoritmo de seguridad y encontramos que la secuencia (p1, p3, p4, p0, p2) satisface el requerimiento de seguridad. Por lo tanto, asignamos inmediatamente el pedido del proceso p1. Debemos notar sin embargo, que en este estado un pedido de p4 (3,3,0), no puede ser satisfecho, ya que los recursos no estn disponibles. Otra situacin, como un pedido de p0 ( 0, 2, 0 ) no puede ser satisfecho, pues aunque los recursos estn disponibles, el estado resultante no es seguro.

Algoritmo del Banquero para un solo recurso Dijkstra (1965) ideo un algoritmo de programacin que puede evitar interbloqueos; este algoritmo se conoce como el algoritmo del banquero y es una extensin del algoritmo de deteccin de interbloqueos. Se modela de la forma en que un banquero de una pequea ciudad podra tratar con un grupo de clientes a los que ha otorgado lneas de crdito. Lo que hace el algoritmo es comprobar si al otorgar la peticin se produce un estado inseguro. Si es as, la peticin se rechaza. Si al otorgar la peticin se produce un estado seguro, se lleva a cabo. En la figura de abajo (a) podemos ver cuatro clientes, A, B, C y D, cada uno de los cuales ha recibido un cierto nmero de unidades de crdito (por ejemplo 1 unidad es 1k dlares). El banquero sabe que no todos los clientes necesitan su crdito mximo de inmediato, por lo que ha reservado solo 10 unidades y no las 22 necesarias para dar servicio a todos.

A B C D

Tiene 0 0 0 0 Libres :10


(a)

Mx 6 5 4 7

A B C D

Tiene 1 1 2 4 Libres :2
(b)

Mx 6 5 4 7

A B C D

Tiene 1 2 2 4 Libres :1
(c)

Mx 6 5 4 7

Los clientes hacen sus respectivas labores, pidiendo prestamos de vez en cuando. En cierto momento, la situacin se muestra con en el inciso (b). este estado es seguro debido a que, con dos unidades restantes, el banquero puede retrasar cualquier peticin excepto la de C, con lo cual deja que C termine y libere sus cuatro recursos. Con estas unidades disponibles, el banquero puede dejar que D o B tengan las unidades necesarias. Considere lo que ocurrira si se otorga una peticin de B por una o ms unidades en el inciso (b). Tendramos la situacin del inciso (c), que es insegura. Si todos los clientes pidieran de manera repentina sus prstamos mximos, el banquero no podra satisfacer a ninguno de ellos, y tendramos un deadlock. Un estado inseguro no tiene que conducir a un deadlock, ya que un cliente tal vez no necesitara toda la lnea de crdito disponible, pero el banquero no podra contar con ese comportamiento. Este algoritmo considera cada peticin medida que va ocurriendo, y analiza si al otorgarla se produce un estado seguro. Si es as, se otorga la peticin; en caso contrario, se pospone hasta ms tarde.

Algoritmo del Banquero para varios recursos El algoritmo del banquero se puede generalizar para, manejar varios recursos, en la siguiente figura se muestran dos matrices, la de la izquierda muestra cuantas instancias de cada recurso estn asignadas a cada uno de los 5 procesos en un cierto momento. La matriz de la derecha muestra cuantos recursos sigue necesitando cada proceso para poder ser completado.

unidades de CD-ROM

unidades de CD-ROM

unidades de cinta

unidades de cinta

impresoras

impresoras

trazadores

trazadores

proceso

proceso

(E)xistentes= (6 3 4 2) (A)signados= (5 3 2 2) (D)isponibles=(1 0 2 0)

A 3 0 1 1 B 0 1 0 0 C 1 1 1 0 D 1 1 0 1 E 0 0 0 0 Recursos asignados

A 1 1 0 0 B 0 1 1 2 C 3 1 0 0 D 0 0 1 0 E 2 1 1 0 Recursos necesarios

Los recursos disponibles son la diferencia entre lo que tiene el sistema y lo que est en uso en un cierto momento. Los procesos deben declarar sus necesidades totales de recursos antes de ejecutarse, por lo que el sistema puede calcular la matriz de la derecha en cada instante.

En trminos sencillos el algoritmo para comprobar si un estado es seguro es el siguiente: 1. Buscar una fila R, cuyas necesidades de recursos no satisfechas sean menores o iguales que D. si no existe dicha fila, el sistema entrar en deadlock en un momento dado, debido a que ningn proceso se podr ejecutar hasta completarse (suponiendo que los procesos mantienen todos los recursos hasta que terminan. 2. Suponer que el proceso seleccionado de la fila solicita todos los recursos que necesita (lo que garantiza que es posible) y termina. Marcar este proceso como terminado y agregar todos sus recursos a D. 3. Repetir los pasos 1 y 2 hasta que todos los procesos se marquen como terminados (en cuyo caso el estado inicial era seguro) o hasta que no haya ningn proceso cuyas necesidades de recursos se puedan satisfacer (en cuyo caso hay un interbloqueo) Si consideramos que los procesos que no se pudieron realizar entran en una pila el orden sera D B CEA Si no se considera la pila y se evalan desde el primero haciendo uso de la marca de los terminados el orden seria D A B CE El algoritmo de una manera ms formal es el siguiente: Sea n el nmero de procesos en el sistema y m el nmero de tipos de recursos se necesita la siguiente estructura de datos: Pedidos ( i ) es el vector de requerimientos para el proceso pi Si Pedidos ( i ,j ) = k, entonces el proceso pi desea k instancias del recurso de tipo rj. Cuando un pedido de recursos es hecho por el proceso pi, se toman las siguientes acciones: 1.- Si Pedido ( i ) <= Necesidades ( i ) ir al paso 2. De lo contrario existe un error, ya que el proceso ha excedido su nmero de pedidos mximo. 2.- Si Pedido ( i ) <= Disponible, ir al paso 3. De lo contrario, los recursos no estn disponibles, y el proceso debe esperar. 3.- El sistema intenta asignar el pedido de recursos al proceso pi modificando el estado de la siguiente manera: Disponible:= Disponible - Pedido ( i ); Asignados ( i ) := Asignados ( i )+ Pedido ( i ); Necesidades ( i ) := Necesidades ( i ) Pedido ( i ); Disponibles: vector de longitud m indicando el nmero de recursos disponibles por cada tipo. Si Disponible ( j ) = k, existen k instancias del tipo de recurso rj disponibles. Mximos: matriz n x m que define la demanda mxima de cada proceso. Si Mximos ( i , j ) = k, entonces el proceso pi puede pedir a lo sumo k instancias del tipo de recurso rj. Asignados: matriz n x m que define el nmero de recursos de cada tipo actualmente asignados a cada proceso. Si Asignados ( i , j ) = k, entonces el proceso pi tiene asignado k instancias del tipo de recurso rj. Necesidades: matriz n x m que indica las necesidades remanentes de cada proceso. Si Necesidades ( i , j ) = k, entonces el proceso pi puede necesitar k instancias ms del tipo de recurso rj para completar su tarea. Podemos tratar cada fila de las matrices Asignados y Necesidades como vectores y referirnos como Asignados ( i ) y Necesidades ( i ) respectivamente. Asignados ( i ) especifican los recursos corrientemente asignados al proceso pi. Necesidades ( i ) especifican los recursos adicionales que el proceso pi puede an requerir con el fin de completar su tarea. Si la asignacin de recursos resultante es un estado seguro, se completa la transaccin y se le asigna los recursos a pi. Sin embargo, si el nuevo estado es inseguro, entonces pi debe esperar por Pedido ( i ) y se restaura la asignacin de recursos al estado anterior.

EL ALGORITMO DE DETECCIN Disponibles: vector de longitud m que indica el nmero de recursos disponibles de cada tipo. Asignados: matriz. de n x m, que define el nmero de recursos de cada tipo actualmente asignados a cada proceso. Pedidos matriz de n x m que indica los pedidos actuales de cada proceso. Si Pedido ( i , j ) = k, significa que el proceso pi est solicitando k ms instancias del recurso tipo rj. La relacin " < " entre 2 vectores se define igual que en la Seccin 8.4. Para simplificar la notacin, trataremos las filas de las matrices Asignados ( i ) y Pedidos ( i ) como vectores. El algoritmo de deteccin descrito lo idearon Shoshani y Coffman (1970), y simplemente investiga cada secuencia de asignacin posible para los procesos que restan finalizar su ejecucin. 1.- Sea Trabajo y Final vectores de longitud m y n, respectivamente. Inicializar Trabajo := Disponible. Para i = 1, 2, ... , n si Asignados ( i ) <> 0, luego Final ( i ) := falso; de lo contrario Final ( i ) := verdadero. 2.- Encontrar un ndice i, tal que: a.- Final ( i ) falso y b.- Pedidos ( i ) <= Trabajo. Si tal i no existe ir a paso 4. 3.- Trabajo := Trabajo + Asignacin ( i ) Final ( i ) = verdadero. Ir a paso 2. 4.- Si Final ( i ) = falso, para algn i, 1 <= i <= n, entonces el sistema est en deadlock. Si Final ( i ) = falso, entonces el proceso pi esta en deadlock. Puede surgir la duda de porque se reasignan recursos del proceso pi. Cuando se determina que Pedido ( i ) <= Trabajo. Sabemos que pi actualmente no est envuelto en deadlock. Por ende, tomamos una actitud optimista y suponemos que pi no requerir ms recursos para completar su tarea, y luego devolver todos sus recursos asignados cuando termine. Si esto no es as, un deadlock puede ocurrir ms tarde, el que ser detectado luego, al invocarse el algoritmo de deteccin la prxima vez. Ejemplo: Consideremos un sistema con 5 procesos ( p0, p1, p2, p3, p4 ) y 3 tipos de recursos ( A, B, C ). A = 7 instancias; B = 2 instancias y C = 6 instancias. Supongo que en tiempo T0, tenemos el siguiente estado de asignacin de recursos: Asignados A B C 0 1 0 2 0 0 3 0 2 2 1 1 0 0 2 Pedidos A B C 0 0 0 2 0 2 0 0 0 1 0 0 0 0 2 Disponible A B C 0 0 1

p0 p1 p2 p3 p4

Afirmamos que el Sistema no est en estado de deadlock. Efectivamente, si ejecutamos nuestro algoritmo, encontramos que la secuencia ( p0, p2, p3, p1, p4) resultara en FINAL (i) = verdadero para todo i. Supongamos modifica as: ahora que el proceso p2 hace un pedido adicional para una instancia del tipo C. La matriz Pedidos se Afirmamos que el sistema ahora est en deadlock. Aunque podamos recuperar los recursos de p0, el nmero de recursos disponibles no es suficiente para los pedidos de los dems procesos. Por ende, existe un deadlock, consistente con la secuencia p1, p2, p3 y p4.

p0 p1 p2 p3 p4

Pedidos A B C 0 0 0 2 0 2 0 0 1 1 0 0 0 0 2

Vous aimerez peut-être aussi