Diferencia entre revisiones de «Solución Ejercicio 1»
De Wiki de Sistemas Operativos
(Solucion Ej1 (Ej5, 2º parcial)) |
(→Ejecutados = [P3,P2,P1] / Disponibles = [ 3 2 2 ]: añadir enlace a la transcripción no corregida por pablo.) |
||
Línea 80: | Línea 80: | ||
Es una configuración de estado seguro ya que se ejecutan los 3 procesos sin dar lugar a interbloqueos. | Es una configuración de estado seguro ya que se ejecutan los 3 procesos sin dar lugar a interbloqueos. | ||
+ | |||
+ | |||
+ | He transcrito el texto anterior a modo tablas. // [[Usuario:Migoligon|Migoligon]] 15:19 27 nov 2011 (UTC) | ||
+ | |||
+ | [[Discusión:Solución_Ejercicio_1|POSIBLE TRANSCRIPCIÓN --NO CONFIRMADA POR PABLO--]] |
Revisión del 16:19 27 nov 2011
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
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:
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.
R1: recAsig=0 recDisp=1 --> recAsig + recDisp = 1 / recMax=1 ¿recAsig+recDisp >= recMax? 1>=1 --> ok
Ejecutados = [P1] / 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.
He transcrito el texto anterior a modo tablas. // Migoligon 15:19 27 nov 2011 (UTC)