Solución Ejercicio 1
De Wiki de Sistemas Operativos
Contenido
Solucion
Solucion Visual
Solución con tablas // Migoligon 15:19 27 nov 2011 (UTC)
Solución Texto
Se sigue el algoritmo visto en clase:
1.Buscar un proceso cuya suma recAsig + recDisp >= recMax 2.Suponemos que se asignan dichos recursos y el proceso termina su ejecución. Sumamos sus recursos al vector recDisp y añadimos el proceso a la lista de finalizados. 3.Repetir primer paso hasta terminar todos los procesos (siendo un estado estable) o bien hasta el punto en el que no sea posible ninguna asignación de recursos, existiendo pues interbloqueo.
Comprobamos si se puede ejecutar P1:
R1: recAsig=1 recDisp=1 --> recAsig + recDisp = 2 / recMax=1 ¿recAsig+recDisp >= recMax? 2>=1 --> ok
R2: recAsig=1 recDisp=0 --> recAsig + recDisp = 1 / recMax=1 ¿recAsig+recDisp >= recMax? 1>=1 --> ok
R3: recAsig=0 recDisp=1 --> recAsig + recDisp = 1 / recMax=2 ¿recAsig+recDisp >= recMax? 1<2 --> No se puede ejecutar
Comprobamos si se puede ejecutar P2:
R1: recAsig=0 recDisp=1 --> recAsig + recDisp = 1 / recMax=0 ¿recAsig+recDisp >= recMax? 1>=0 --> ok
R2: recAsig=0 recDisp=0 --> recAsig + recDisp = 0 / recMax=1 ¿recAsig+recDisp >= recMax? 0<1 --> No se puede ejecutar
Comprobamos si se puede ejecutar P3:
R1: recAsig=1 recDisp=1 --> recAsig + recDisp = 2 / recMax=1 ¿recAsig+recDisp >= recMax? 2>=1 --> ok
R2: recAsig=1 recDisp=0 --> recAsig + recDisp = 1 / recMax=1 ==> Dispone de los 3 recursos necesarios, por tanto ¿recAsig+recDisp >= recMax? 1>=1 --> ok se puede ejecutar.
R3: recAsig=0 recDisp=1 --> recAsig + recDisp = 1 / recMax=1 ¿recAsig+recDisp >= recMax? 1>=1 --> ok
Ejecutados = [P3] / Disponibles = [ 2 1 1 ]
Comprobamos si se puede ejecutar P1 (Hay nuevos recursos disponibles,los liberados por P3):
R1: recAsig=1 recDisp=2 --> recAsig + recDisp = 3 / recMax=1 ¿recAsig+recDisp >= recMax? 3>=1 --> ok
R2: recAsig=1 recDisp=1 --> recAsig + recDisp = 2 / recMax=1 ¿recAsig+recDisp >= recMax? 2>=1 --> ok
R3: recAsig=0 recDisp=1 --> recAsig + recDisp = 1 / recMax=2 ¿recAsig+recDisp >= recMax? 1<2 --> No se puede ejecutar
Comprobamos si se puede ejecutar P2 (Hay nuevos recursos disponibles,los liberados por P3):
R1: recAsig=0 recDisp=2 --> recAsig + recDisp = 2 / recMax=0 ¿recAsig+recDisp >= recMax? 2>=0 --> ok
R2: recAsig=0 recDisp=1 --> recAsig + recDisp = 1 / recMax=1 ==> Dispone de los 3 recursos necesarios,por tanto ¿recAsig+recDisp >= recMax? 1>=1 --> ok se puede ejecutar.
R3: recAsig=1 recDisp=1 --> recAsig + recDisp = 2 / recMax=1 ¿recAsig+recDisp >= recMax? 2>=1 --> ok
Ejecutados = [P3,P2] / Disponibles = [ 2 1 2 ]
Comprobamos si se puede ejecutar P1 (Hay nuevos recursos disponibles,los liberados por P2):
R1: recAsig=1 recDisp=2 --> recAsig + recDisp = 3 / recMax=1 ¿recAsig+recDisp >= recMax? 3>=1 --> ok
R2: recAsig=1 recDisp=1 --> recAsig + recDisp = 2 / recMax=1 ==> Dispone de los 3 recursos necesarios,por tanto ¿recAsig+recDisp >= recMax? 2>=1 --> ok se puede ejecutar.
R1: recAsig=0 recDisp=2 --> recAsig + recDisp = 2 / recMax=2 ¿recAsig+recDisp >= recMax? 2>=2 --> ok
Ejecutados = [P3,P2,P1] / Disponibles = [ 3 2 2 ]
Es una configuración de estado seguro ya que se ejecutan los 3 procesos sin dar lugar a interbloqueos.