Diferencia entre revisiones de «Solución Ejercicio 1»
De Wiki de Sistemas Operativos
(Solucion Ej1 (Ej5, 2º parcial)) |
(→Ejecutados = [P3] / Disponibles = [ 2 1 1 ]) |
||
(No se muestran 4 ediciones intermedias de 3 usuarios) | |||
Línea 1: | Línea 1: | ||
+ | =Solucion= | ||
+ | |||
+ | ==Solucion Visual== | ||
+ | |||
+ | |||
+ | [[Discusión:Solución_Ejercicio_1|Solución con tablas]] // [[Usuario:Migoligon|Migoligon]] 15:19 27 nov 2011 (UTC) | ||
+ | |||
+ | |||
+ | ==Solución Texto== | ||
Se sigue el algoritmo visto en clase: | Se sigue el algoritmo visto en clase: | ||
Línea 17: | 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 36: | 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 | ||
− | ===== Ejecutados = [ | + | ===== Ejecutados = [P3] / Disponibles = [ 2 1 1 ] ===== |
Comprobamos si se puede ejecutar P1 (Hay nuevos recursos disponibles,los liberados por P3): | Comprobamos si se puede ejecutar P1 (Hay nuevos recursos disponibles,los liberados por P3): | ||
Línea 49: | Línea 58: | ||
¿recAsig+recDisp >= recMax? 2>=1 --> ok | ¿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 | ¿recAsig+recDisp >= recMax? 1<2 --> No se puede ejecutar | ||
Línea 60: | Línea 69: | ||
¿recAsig+recDisp >= recMax? 1>=1 --> ok se puede ejecutar. | ¿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 | ¿recAsig+recDisp >= recMax? 2>=1 --> ok | ||
− | + | ||
===== Ejecutados = [P3,P2] / Disponibles = [ 2 1 2 ]===== | ===== Ejecutados = [P3,P2] / Disponibles = [ 2 1 2 ]===== | ||
Revisión actual del 21:07 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
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.