UTNianos

Versión completa: [SO] Algoritmo de detección de deadlock
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas, estoy preparando el final de operativos y estoy por la parte de deadlock.

El algoritmo del banquero lo entendí bien pero tengo algunas dudas con el de detección.

Comento como lo estoy haciendo a ver si estoy metiendo la pata en algo.

Tengo la matriz de asignados, la de actuales y el vector de disponibles.

Primero me fijo si con los recursos disponibles puedo satisfacer los pedidos de algún proceso.
Si satisface alguno, liberó los recursos del proceso, se los sumo al vector de disponibles y descarto ese proceso.

Sigo haciendo esto, hasta que no pueda satisfacer ningún pedido más.

Después para ver quienes quedaron en deadlock, descarto los que pudieron satisfacer sus pedidos y los que no tienen ningún recurso asignado.

Estoy en lo correcto?
Creo que es así como lo decis, aquellos procesos que no estan involucrados en el DL son:
1) aquellos que no tienen recursos asignados, no hay retención.
2) aquellos que pueden satisfacerse sus solicitudes porque se dispone de recursos para atender sus pedidos, por lo que no forman parte de la espera circular.

Saludos!!
Exactamente como dice reLlene, amplio un poco su respuesta:
  • Si el proceso pudo satisfacer su pedido de recursos, entonces el proceso no esta en deadlock.
  • En cambio, si se encuentra en una espera circular con otro(s), entonces sí esta en deadlock.
  • Y en el caso final, en el que un proceso no pueda acceder a los recursos para satisfacer su pedido, pero no se encuentra en espera circular con otro, se dice que tiene inanicion

Saludos!
Adriano, en clase, dijo, no escribió:Y, chicos, otra cosa: las personas mueren de inanición, no los procesos. Los procesos sufren inanición, no mueren.
URLs de referencia