Professional Documents
Culture Documents
Sistemas Operativos - Silberschatz Galvin - Cap7 - Bloqueos Mutuos PDF
Sistemas Operativos - Silberschatz Galvin - Cap7 - Bloqueos Mutuos PDF
esperara hasta que cualquiera de los otros procesos hubiera terminado y liberado sus recursos, podriamos haber evitado la situacion de bloqueo mutuo. Dado el concepto de estado seguro, podemos definir algoritmos de evitacién que aseguren que el sistema nunca entraré en un bloqueo mutuo. La idea es simplemen- te asegurar que el sistema siempre permaneceré en un estado seguro. Inicialmente, el sistema esta en un estado seguro. Cada vez que un proceso solicita un recurso que esta disponible, el sistema debe decidir si es posible asignar el recurso de inme- diato 0 si el proceso debe esperar. La solicitud s6lo se atiende si la asignacién deja el sistema en un estado seguro. Cabe sefalar que, en este esquema, si un proceso solicita un recurso que esté dispo- nile, cabe la posibilidad de que tenga que esperar. Por ello la utilizaciGn de recursos podria ser menor de lo que serfa sin un algoritmo de evitacién de bloqueos mutuos. 7.5.2 Algoritmo de grafo de asignacién de recursos Si tenemos un sistema de asignacion de recursos con un solo ejemplar de cada tipo de recursos, podlemos usar una variante del grafo de asignacion de recursos que de- finimos en la seccién 7.2.2 para evitar los bloqueos mutuos. ‘Ademés de las arstas de solicitud y asignacién, introduclmos un nuevo tipo de arista, llamada arista de eseroa, Una arista de reserva P; ~» R; indica que el proceso >; podria solicitar el recurso Rj en algtn instante futuro, Esta arista se parece a una de solicitud en cuanto a su direccién, pero se representa con una linea discontinua Cuando el proceso P; solicita el recurso R; la arsta de reserva P; -> R; se convier: te en una de solicitud. Asf mismo, cuando P; libera un recurso Rj la arista de asignacidn Rj — P; se vuelve a convertir en una arista de reserva Pj > Rj, Cabe se- falar que los recursos deben reservarse « priori en el sistema; es deci, ates que el proceso P; inicie su ejecucién todas sus arstas de reserva deberan aparecer ya en el grafo de asignacidn de recursos. Podemos relaja esta condicién permitiendo la adi- cin de una arsta de reserva P; > Rj al grafo solo si todas las arstas asociadas al proceso P; son aristas de reserva. Supongamos que el proceso P solicit el recurso R). La solicitud sélo puede satis facerse sila conversion de la arista de solcitue PR en «ina arista de asignacion Rj Pjno da pie a un ciclo en ol grafo de asignacién e recursos. Observe que ve- riticamos la seguridad empleando un algoritmo de deteccién de cilos. En un grafo de este tipo, semejante algoritmo requiere del orden de n? operaciones, donde n es el nero de procesos del sistema, Si no existe ningsin ciclo, la asignaciGn del recurso dejard el sistema en un esta- do seguro, Si se encuentra un ciclo, la asignacién llevard el sistema a un estado220 Capitulo 7 Bloqueos mutuos A Figura 75 Grafo de asignacisn de recursos para evitacién de bloqueos mutuos. inseguro, En tal caso, el proceso P; tendria que esperar para recibir los recursos que solicits, Para ilustrar este algoritmo, consideremos el grafo de asignacién de recursos de la figura 7.5. Supongamos que P, solicita Ry. Aunque Rz de momento esta libre, no podemos asignarselo a Rp porque tal accién erearfa un ciclo en el grafo (Fig. 7.6). Un ciclo indica que el sistema estd en un estado inseguro. Si P} solicita Ry, y P soli Ry, ocurrira un blogueo mutuo. 7.5.3 Algoritmo del banquero El grafo de asignacidn de recursos no puede aplicarse a un sistema de asignacién de re- ‘cursos con multiples ejemplares de cada tipo de recursos. E]algoritmo de evitacion de recursos que describiremos a continuacion puede aplicarse a tal sistema, pero es me- nos eficiente que el esquema de grafo de asignacion de recursos. Dicho algoritmo se ‘conoce como algoritmo del bauer, Se escogid este nombre porque el algoritmo podria tsarse en an sistema bancario para asegurar que el banco nunca asigne su efective dis- ponible de tal manera que ya no pueda satisfacer las necesidads de todos sus clientes. Cuando un proceso nuevo ingresa en el sistema, debe declarar el ntimero maxi- mo de ejemplares de cada tipo de recursos que podria necesitar. Este mimero no puede exceder el total de recursos del sistema, Cuando un usuario solicita un con- junto de recursos, el sistema debe determinar si la asignacién de esos recursos dejaria el sistema en un estado seguro. $i asf es, los recursos se asignan; sino, el pro- eso deberd esperar hasta que otro libere los recursos suficientes. Hay que mantener varias estructuras de datos para implementar el algoritmo del banquero. Dichas estructuras codifican el estado del sistema de asignacién de recur- sos, Sea ir el ntimero de procesos del sistema, y m, el ntimero de tipos de recursos. Necesitamos las siguientes estructuras de datos: ‘+ Disponible: Un vector de longitud 1 indica el numero de recursos disponibles de cada tipo. $i Disponible|j] = k, hay k ejemplares disponibles del tipo de recur 808 Rj 75. Evitacién de bloqueos mutuos 221 % Figura 7.6 Estado inseguro en un grafo de asignacidn de recursos ‘+ Mx: Una matriz. X mm define la demanda maxima de cada proceso. Si Mit 4, el proceso P; puede solicitar cuando més k ejemplares del tipo de recursos R * Asignacign: Una matriz.n x m define el ntimero de recursos de cada tipo que se han asignado actualmente a cada proceso. Si Asignacigni] =k, el proceso P; tie- ne asignados actualmente k ejemplares del tipo de recursos R * Necesidad: Una matriz.1 X m indica los recursos que todavia lé hacen falta a cada proceso. Si Necessad|i,] = k, el proceso P; podria necesitar k ejemplares més del tipo de recursos Rj para llevar a cabo Su tarea, Observe que Necesidadlij] = Madi - Asignacigily) Las estructuras de datos anteriores varfan con el tiempo, tanto en tamaito como en valor. Para simplificar la presentacién del algoritmo del banquero, establezcamos una notacién. Sean X y ¥ vectores con longitud n. Decimos que X< Y si y s6lo si Xil = Yi) para toda i= 1, 2, .. n. Por ejemplo, si X = (1,732) y Y = (0.3.2.1), entonces Y EX. YeXsi¥ « ky VeX. Podemos tratar cada fila de las matrices Asignacign y Necesidad como vectores y referimos a ellas como Asignacién; y Necesidad;, respectivamente. El vector Asign= Cin expecitia los recursos que actualmente extn aignados al proceso Pel vector Necesidad; especitica los recursos adlicionales que el proceso P; todavia podria soli- citar para llevar a cabo su tarea, 7.53.1 Algoritmo de seguridad El algoritmo para averiguar si un sistema ests o no en un estado seguro se puede describir como sigue: 1, Sean Trabajo y Fin vectores con longitud m y n, respectivamente. Asignar los va- lores iniciales Trabajo == Disponible y Fini] = fase parai= 1.2. me 2. Buscar una i tal que a. Fini] = false, y b. Necesidad; = Trabajo222 Capitulo 7 Bloqueos mutuos Si no existe tal j, continuar con el paso 4 3, Trabajo := Trabajo + Asignacién Finfi] = true ir al paso 2 4. Si Fin[i] = true para toda i el sistema estd en un estado seguro. Este algoritmo podria requerir del orden dem x 1? operaciones para decidir si un estado es seguro 0 no. 7.5.3.2 Algoritmo de solicitud de recursos Sea Solicitud; el vector de solicitudes del proceso Pi; Si Solicitud] =k, el proceso P; quiere k ejemplares del tipo de recursos Rj, Cuando P; solicita recursos, se empren- Gen las aeciones siguientes: 1. Si Solicitud; < Necesidad;, ie al paso 2. En caso contrario, indicar una condicién de error, pues el proceso ha excedido su reserva maxima. 2. Si Solicitud, < Disponible, ir al paso 3. En caso contrario, P; deberd esperar, ya que los recursos no estén disponibles, 3, Hacer que el sistema simule haber asignado al proceso P; los recursos que solici- t6 modificando el estado como sigue’ Disponible := Disponible - Solicitud; Asignacion; == Asignacién; + Solicitud: Necesicad; != Necesidad; ~ Solicitud ‘ es fn se Tle- Si el estado de asignacién de recursos resultante es seguro, la transacci varé a cabo y se asignaran los recursos al proceso Pj; pero si el nuevo estado es inseguro, P, tendra que esperar Solicitud, y se restaurard el antiguo estado de asignacién de recursos. 7.53.3 Ejemplo ilustrativo Consideremos un sistema con cinco procesos, Py a Py y tres tipos de recursos A, By C. El tipo de recursos A tiene 10 ejemplares, & tiene 5 ejemplares y C tiene 7 ejempla- Asiguacién Mix Disponible Qc. ABC | AnG Py (010-753-332 P, 200 322 P, 302 902 P, 211 222 Py 002 433 7.6 DetecciOn de bloqueos mutuos 223, res, Supongamos que, en el instante Ty, se toms la siguiente instantnea del sistema El contenido de la matriz Necesidad se define como Mx ~ Asignacién y es Necesidad ABC Py 743 PL 122 Pp 600 P; 011 Py 431 Decimos que el sistema esta en un estado seguro, Efectivamente, la secuencia
satisface los criterios de seguridad. Supongamos ahora que el proceso P solicita un ejemplar adicionat del tipo de recursos A y dos ejemplares del tipo de recursos C, de modo que Solicitud; = (10,2). Para decidir siesta solicitud se puede satisfacer de inmediato, primero verificamos que Solicitud, = Disponible (esto es, que (1,0,2) = (3,3,2)), lo cual es cierto. Ahora si mulamos que la solicitud se atendi6, y Hegamos al estado nuevo siguiente: Asignaciin Necesidad Disponible ABC ABC ABC Po 010 743 230 302 020 P, 302 600 P3241 oul Py 0026 | ai Debemos determinar si este nuevo estado del sistema es seguro, Para ello, eiecu- tamos nuestro algoritmo de seguridad y averiguamos que la secuencia
> satisface nuestro requisito de seguridad, Por consiguiente, podemos aten.
der de inmediato la solicitud del proceso P,
No obstante, debe quedar claro que cuando el sistema esté en el estado anterior,
1no es posible satisfacer una solicitud (3,3,0) hecha por Py, ya que los recursos no es.
‘én disponibles. Tampoco puede atenderse una solicitud (0,2,0) hecha por Pa pesar
de que los recursos estan disponibles, porque el estado resullante no es seguro.
7.6 = Deteccién de bloqueos mutuos
Si un sistema no emplea un algoritmo de prevencién de bloqueos mutuos, ni uno
de evitacién de bloqueos mutuos, podria presentarse una situacién de bloqueo mu-
tuo. En un entorno asf, el sistema debe ofrecer:224 Capitulo7 Bloqueos mutuos
= Unalgoritmo que examine el estado del sistema y determine si ha ocurrido un
bloqueo mutuo
+ Unalgoritmo para recuperarse del bloqueo mutuo)
En la explicacién que sigue examinaremos mas de cerca estos dos requisitos y su
importancia en sistemas que tienen tanto un solo ejemplar de cada tipo de recursos
como varios ejemplazes de cada tipo de recursos, pero antes de hacerlo debemos se-
falar que un esquema de deteccién y recuperacion requiere un gasto extra que
inclaye no sélo los costos en tiempo de ejecucidn de mantener la informacién nece~
saria y ejecutar el algoritmo de deteccién, sino también las pérdidas potenciales
inherentes a la recuperacién después de un bloqueo mutuo.
7.6.1 Un solo ejemplar de cada tipo de recursos
Si todos los tipos de recursos tienen tinicamente un ejemplar, podemos definir un
algoritmo de deteccién de bloqueos mutuos que utiliza una variante del grafo de
asignacidn de recursos, llamada grafo de espera. Obtenemos este grafo a partir del
sgrafo de asignacién de recursos eliminanda los nodos de tipo de recursos y unien-
do las aristas apropiadas.
En términos mas precisos, una arista de Pj a P; en un grafo de espera implica que
el proceso Pesta esperando que el proceso P; libere un recurso que P; necesita. Hay
tuna arista P; > Pjen un grafo de espera si y Sélo si el grafo de asignacién de recur-
sos correspondiente contiene dos aristas Pj > Ry y Rg ~> P; para algtin recurso Ry,
Por ejemplo, en la figura 7.7 presentamos un grafo de asignacidn de recursos y ¢
grafo de espera correspondiente.
Igual que antes, existe un bloqueo mutuo en el sistema si y s6lo si el grafo de espe-
+a contiene un ciclo, Para detectar los bloqueos mutuos, el sistema necesita mantener el
grafo de espera e invocar periédicamente un algoritmo que busque ciclos en el grafo.
Un algoritmo para detectar un ciclo en un grafo requiere del orden de 1? opera-
ciones, donde 1 es el ntimero de vértices del grafo.
7.6.2 Varios ejemplares de un tipo de recursos
Elesquema de grafos de espera no es aplicable a un sistema de asignacién de recur-
sos en el que hay mltiples ejemplares de cada tipo de recursos. El algoritmo de
deteccién de bloqueos mutuos que deseribimos a continuacién puede aplicarse
esta clase de sistemas, y utiliza varias estructuras de datos que Varian con el tiem-
po, similares a las empleadas en el algoritmo del banquero (Sec. 7.5.3):
‘Disponible: Un vector de longitud m indica el nimero de recursos disponibles de
cada tipo,
rsneznorsre
PAGINA *
pocumer i
MONYEVIDE:
76 Deteccién de bloqueos mutuos 225
Q —-O—®
% FI ey
Figura 7,7 (a) Grafo de asignacién de recursos. (6) Grafo de espera correspondiente.
‘+ Asignaciéw: Una matriz.n x m define el mimero de recursos de cada tipo que ya
ian asignado a cada proceso. pst
* Solicitud: Una matriz n * m indica la solicitud actual de cada proceso. Si Solicitu-
ali] = k, el proceso P; esta solictando k ejemplares adicionales del tipo de
La relacion “menor que” (<) entre dos vectores se define igual que en la see-
cin 7.53. Para simplifcar la notacidn, trataremos otra vez las files. de las
matrices Asignacién y Solicitud como vectores, y nos referiremos a ellos como
Asignacion;y Solicitud respectivamente, El algoritmo de deteccién que describ,
fos agusimplement investiga todas fs poibles ecuencis de sgnacin para
jos procesos que todavia no se llevan a cabo, Compare este algoritmo con el de!
banquero (See. 7.5.3) ° ai -
1. Sean Trabajo y Fin vectores con longitud m y 1, respectivamente. Asignese Trba-
1 Diol Para) =1,2.0 m0 Again ot enone ol =a 0
Busque un indice ital que
a. Fini] = fib, y
b. Solicitud = Trabj.
Si no existe tal ir al paso 4
3. Trabajo := Trabajo + Asignacion,
Fini) == true
iral paso2.226 Capitulo7 Bloqueos mutuos
4. $i Fini = false, para alguna i, 1< <1, el sistema esta en estado de bloqueo mu-
tuo. Es mds, si Fiali] » false, el proceso P; ests en bloqueo mutuo.
Este algoritmo requiere del orden de m Xn? operaciones para detectar si el ss
ma estd en bloqueo mutuo 0 no.
lector tal vez se pregunte por qué recuperamos los recursos del proceso P (en
el paso 3) tan pronto como determinamos que Solicitud; < Trabajo (en el paso 20).
Sabemos que P; actualmente no esté implicado en un bloqueo mutuo (ya que Soli:
cit, = Taiaj). Por tanto, adoptames una actitud optimista y suponemos que P;
‘no necesitard mas recursos para llevar a cabo su tarea, y pronto devolverd al siste-
rma todos los recursos que tiene asignados. Si nuestro supuesto es incorrecto, podria
ccurrir un bloqueo mutuo posteriormente. Ese bloqueo mutuo se detectard la pré-
xima vez que se invoque el algoritmo de deteccién de bloqueos mutuos.
Para ilustrar este algoritmo, consideremos un sistema con cinco procesos, Py a Py,
{tes tipos de recursos, A, B y C. El tipo de recursos A tiene 7 ejemplares, B iene 2
ejemplares y C tiene 6 ejemplares. Supongamos que, en el instante Ty, tenemos el
estado de asignacién de recursos siguiente:
Asignaciin Solicitud — Disponible
ABC ABC ABC
Py 010 000 000
PL 200 © 202
P, 303 © 000
Py 211 100
P, 002 002
Decimos que el sistema no esté en estado de blogueo mutuo. Efectivamente, si eje
cutamos nuestro algoritmo, veremos que la secuencia You might also like