Diferencia entre revisiones de «Solución Ejercicio 1»
De Wiki de Sistemas Operativos
(→Solución Texto) |
(→Solución Texto) |
||
Línea 26: | Línea 26: | ||
¿recAsig+recDisp >= recMax? 1>=1 --> ok | ¿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 | ¿recAsig+recDisp >= recMax? 1<2 --> No se puede ejecutar | ||
Línea 45: | Línea 45: | ||
¿recAsig+recDisp >= recMax? 1>=1 --> ok se puede ejecutar. | ¿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 | ¿recAsig+recDisp >= recMax? 1>=1 --> ok | ||
Revisión del 20:29 14 dic 2011
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
R1: 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.
R2: 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.