Disciplinas del Interbloqueo: prevención, detección, eliminación y recuperación.
Las estrategias de prevención de interbloqueo son muy conservadoras; resuelven el problema limitando el acceso a recursos e imponiendo restricciones sobre los procesos. En cambio, las estrategias de detección de interbloqueo, no limitan el acceso a recursos ni restringen las acciones del proceso. La detección del interbloqueo es el proceso de determinar si realmente existe un interbloqueo e identificar los procesos y recursos implicados en él. Una posibilidad detectar un interbloqueo es monitorear cada cierto tiempo el estado de los recursos. Cada vez que se solicita o se devuelve un recurso, se actualiza el estado de los recursos y se hace una verificación para observar si existe algún ciclo.Este método está basado en suponer que un interbloqueo no ser presente y que los recursos del sistema que han sido asignados, se liberarán en el momento que otro proceso lo requiera.
Una comprobación para interbloqueo puede hacerse con igual o menor frecuencia que cada solicitud de recursos, dependiendo de que tan probable es que ocurra un interbloqueo. Comprobar cada solicitud de recursos tiene dos ventajas: Conduce a la detección temprana y el algoritmo es simple, de
manera relativa porque se basa en cambios crecientes al estado del sistema. Además, las comprobaciones frecuentes consumen un tiempo considerable de procesador.
Un solo Tipo
Usaremos una variante del grafo de asignación de recursos, llamado grafo de espera. Podemos obtener este grafo a partir del grafo de asignación de recursos, eliminando los nodos correspondientes al recurso y uniendo los arcos de forma que habrá un arco del proceso Pi al proceso Pj, si Pj tiene un recurso que Pi ha solicitado. Existirá un interbloqueo si y solo si hay un ciclo en el grafo resultante.Para detectar un interbloqueo, el sistema necesita mantener el grafo de espera y periódicamente invocar un algoritmo que busque un ciclo en el grafo.
Varios tipos de recursos
Este algoritmo de detección emplea estructuras de datos que varían con el tiempo, muy similares a las que se usan en el algoritmo del banquero:
Variable Contenido
Disponible [m] Número de recursos disponible de cada tipo
Asignado [n,m] Cantidad de recursos asignados a los procesos
Petición [n,m] Petición o solicitud actual de cada proceso
Estructuras de datos auxiliares:
Trabajo [m]: Acumula los recursos de los procesos que pueden evolucionar
Acabado[n]: Booleano que indica cuando un proceso ha acabado
Algoritmo:
Función Detección retorna Booleano
Trabajo:=Disponible
Para todo i
Sí Asignado [i] m<>0 Entonces
Acabado[i]:=False
Sino
Acabado[i]:= true
Fin Si
Fin Para
Mientras haya un i tal que Acabado [i]:=False y Petición [i]<=Trabajo
Trabajo:=Trabajo+Asignado[i]
Acabado[i]:= True
Fin Mientras
Si hay un i tal que Acabado [i]= False Entonces
Detección:=True
Sino
Detección:=False
Fin Si
El algoritmo de detección escrito se limita a investigar cada una de las
posibles secuencias de asignación para los procesos que quedan por
terminar. Aquellos procesos para los que Acabado[i] tengan un valor de
falso, formarán parte de un interbloqueo.
Recuperación de Interbloqueo
Cuando se ha detectado que existe un interbloqueo, podemos actuar de
varias formas. Una posibilidad es informar al operador que ha ocurrido un
interbloqueo y dejar que el operador se ocupe de él manualmente. La otra
posibilidad es dejar que el sistema se recupere automáticamente del
interbloqueo. Dentro de esta recuperación automática tenemos dos opciones
para romper el interbloqueo: Una consiste en abortar uno o más procesos
hasta romper la espera circular, y la segunda es apropiar algunos recursos
de uno o más de los procesos bloqueados.
La recuperación después de un interbloqueo se complica porque puede no
estar claro que el sistema se haya bloqueado.
Los procesos pueden eliminarse de acuerdo con algún orden de prioridad,
aunque es posible que no existan prioridades entre los procesos
bloqueados, de modo que el operador necesita tomar una decisión arbitraria
para decidir que procesos se eliminarán.
Recuperación Manual
Está forma de recuperación consiste en avisarle al administrador o al
operador del sistema que se ha presentado un interbloqueo, y será elEstá forma de recuperación consiste en avisarle al administrador o al
administrador el que solucione dicho problema de la manera más
conveniente posible, de modo que su decisión no afecte demasiado a al
usuario del proceso en conflicto, y sobre todo que no afecte a los demás
usuarios del sistema.
Abortar los Procesos
Para eliminar interbloqueos abortando un proceso, tenemos dos métodos;
en ambos, el sistema recupera todos los recursos asignados a los procesos
terminados.
- Abortar todos los procesos interbloqueados. Esta es una de las soluciones más comunes, adoptada por Sistemas Operativos. Este método romperá definitivamente el ciclo de interbloqueo pero con un costo muy elevado, ya que estos procesos efectuaron cálculos durante mucho tiempo y habrá que descartar los resultados de estos cálculos parciales, para quizá tener que volver a calcularlos más tarde.
- Abortar un proceso en cada ocasión hasta eliminar el ciclo de interbloqueo. El orden en que se seleccionan los procesos para abortarlos debe basarse en algún criterio de costo mínimo. Después de cada aborto, debe solicitarse de nuevo el algoritmo de detección, para ver si todavía existe el interbloqueo. Este método cae en mucho tiempo de procesamiento adicional.
Si se utiliza el método de terminación parcial, entonces, dado un conjunto de procesos bloqueados, debemos determinar cuál proceso o procesos debe terminarse para intentar romper el interbloqueo. Se trata sobre todo de una cuestión económica, debemos abortar los procesos que nos representen el menor costo posible. Existen muchos factores que determinan el proceso que se seleccionará, siendo los principales los
siguientes:
- La prioridad del proceso. Se elimina el proceso de menor prioridad.
- Tiempo de procesador usado. Se abortará aquel proceso que haya utilizado menos tiempo el procesador, ya que se pierde menos trabajo y será más fácil recuperarlo más tarde.
- Tipos de recursos utilizados. Si los recursos son muy necesarios y escasos será preferible liberarlos cuanto antes.
- Cuántos recursos más necesita el proceso. Es conveniente eliminar a aquellos procesos que necesitan un gran número de recursos.
- Facilidad de suspensión / reanudación.Se eliminarán aquellos procesos cuyo trabajo perdido sea más fácil de recuperar.Apropiación de Recursos
Apropiación de recursos
Para eliminar interbloqueos utilizando la apropiación de recursos, vamos quitando sucesivamente recursos de los procesos y los asignamos a otros hasta romper el ciclo de interbloqueo. Si se utiliza la apropiación de recursos para tratar los interbloqueos, hay que considerar tres aspectos:
- Selección de la víctima
- Retroceso
- Bloqueo indefinido
No hay comentarios:
Publicar un comentario