Diferencia entre revisiones de «Solución Ejercicio 1»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
(ya está revisado el modo visual)
(Ejecutados = [P3] / Disponibles = [ 2 1 1 ])
 
(No se muestran 2 ediciones intermedias de 2 usuarios)
Línea 26: Línea 26:
 
           ¿recAsig+recDisp >= recMax?  1>=1 --> ok
 
           ¿recAsig+recDisp >= recMax?  1>=1 --> ok
  
       R1: recAsig=0 recDisp=1 --> recAsig + recDisp = 1 / recMax=2       
+
       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.   
  
       R1: recAsig=0 recDisp=1 --> recAsig + recDisp = 1 / recMax=1       
+
       R3: recAsig=0 recDisp=1 --> recAsig + recDisp = 1 / recMax=1       
 
           ¿recAsig+recDisp >= recMax?  1>=1 --> ok  
 
           ¿recAsig+recDisp >= recMax?  1>=1 --> ok  
 
                    
 
                    
===== Ejecutados = [P1]  / Disponibles = [ 2 1 1 ] =====
+
===== 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 58: Línea 58:
 
           ¿recAsig+recDisp >= recMax?  2>=1 --> ok
 
           ¿recAsig+recDisp >= recMax?  2>=1 --> ok
  
       R1: recAsig=0 recDisp=1 --> recAsig + recDisp = 1 / recMax=2       
+
       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 69: Línea 69:
 
           ¿recAsig+recDisp >= recMax?  1>=1 --> ok                          se puede ejecutar.
 
           ¿recAsig+recDisp >= recMax?  1>=1 --> ok                          se puede ejecutar.
  
       R2: recAsig=1 recDisp=1 --> recAsig + recDisp = 2 / recMax=1       
+
       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

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.