Solución Ejercicio 1

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar

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.