Diferencia entre revisiones de «Solución ejercicio 1»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
m
 
(No se muestran 20 ediciones intermedias de 12 usuarios)
Línea 2: Línea 2:
 
       X = El proceso pasa a estado bloqueado.
 
       X = El proceso pasa a estado bloqueado.
 
       / = El proceso pasa a estado preparado.
 
       / = El proceso pasa a estado preparado.
 +
      > = Fin de su ejecución.
  
  
 
+
       |  |  | #1| #2| #3| #4| #5| #1|  |  |  | #2| #3| #4|  | #5| #1|  |  |   |
       |  |  | #1| #2| #3| #4| #5| #1|  |  |  | #2| #3| #4|  |  |  | #5| fin de ejecucion
+
     p1|  |  |---|---|---|---|---|---|  |  |  |---|---|---|  |---|---|  |  |
     p1|  |  |---|---|---|---|---|---|  |  |  |---|---|---|  |   |  |---|  |  |
 
 
       |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
 
       |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
       | #1| #2|  |  |  |  |  |  | #3| #4| #1|  |  |  | #2| #3| #4| fin de ejecucion
+
       | #1| #2|  |  |  |  |  |  | #3| #4| #1|  |  |  | #2|  |  | #3| #4| #1|
     p2|---|---X  |  |  |  |  /  |---|---|---|  |  |  |---|---|---|   |  |  |
+
     p2|---|---X  |  |  |  |  /  |---|---|---|  |  |  |---X  /  |---|---|--->
 
       |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
 
       |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
 
       |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
 
       |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
       0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19 20
+
       0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19 20
 +
 
 +
 
 +
Observaciones:
 +
* El proceso P2 bloquea al hacer down sobre el semáforo s2 cuyo contador vale 0.
 +
* En el instante 15, el proceso P2 bloquea de nuevo pues hace down sobre el semáforo s2 cuyo contador vale 0.
 +
* En los semáforos no se vuelve a comprobar la condición que hizo que el proceso bloqueara, a diferencia de los cerrojos.
 +
 
 +
--[[Usuario:Pneira|Pneira]] 08:59 10 may 2011 (UTC)
 +
 
 +
 
 +
'''Duda sobre el ejercicio:'''
 +
 
 +
He realizado varias veces la traza de los procesos y en el instante 15 el semáforo de s2 me sale 1,no sé si me estaré pasando algún detalle por alto.S2 empieza en 0,en el instante 7 P1 realiza un up en s2 (valor s2=1), y se realiza un down en el instante 15 por lo que volvería a valer 0, ¿qué estoy pasando por alto? :S --[[Usuario:Josedelfer|Josedelfer]] 11:00 13 dic 2011 (UTC)
 +
 
 +
--[[Usuario:Albsolnog|Albsolnog]] 11:36 13 dic 2011 (UTC) Fijate que para t=6 p2 estaba bloqueado y por tanto almacenado en la lista, justo aqui p1 realiza un up(S2) '''en el instante 6 no en el 7''' lo que implica que p2 pasa a estado preparado pero su contador no se toca (mira el codigo de up())
 +
 
  
El proceso P2 comienza su ejecucion y al hacer el down al semaforo s2 que vale 0 bloquea , ya que los semaforo es un sincronizacion bloqueante, p1 comienza su ejecucion hasta que se hace up(s2) y agota su ventana de tiempo y p2 puede comenzar su ejecucion.
+
--[[Usuario:Josedelfer|Josedelfer]] 13:24 13 dic 2011 (UTC) Es cierto,cuando esta bloqueado al hacer el up no aumenta el contador,era el detalle que estaba pasando por alto. Gracias
  
--[[Usuario:DvS 013|DvS 013]] 15:09 9 may 2011 (UTC) : había conflicto cuando le he dado a subir así que pongo debajo lo que yo estaba editando antes de que se subiera nada
+
--[[Usuario:Josleamat|Josleamat]] 12:28 6 dic 2017 (UTC) Hola, en el instante 17, el proceso p1, debería de continuar con su quantum hasta agotarlo, donde se debe de bloquear en la linea de codigo 2, donde hace un down y pasa ha estado bloqueado.
p1: <source lang="c">
 
for (int i=0; i<2; i++) {  #1
 
    down(s1);              #2
 
    f1();                  #3
 
    if (get(s1) == 0)      #4
 
        up(s2);            #5
 
} </source>
 
P2: <source lang="c">
 
for (int i=0; i<2; i++) {  #1
 
    down(s2);              #2
 
    f2();                  #3
 
    up(s1);                #4
 
} </source>
 
 
              X : se ejecuta el planificador
 
              > : fin del proceso
 
            #nº : número de insturcción
 
 
        |i2=0      |i1=0      |    i2=1  |    i1=1  |          |      i2=2|i1=2  |
 
        |  |  |  | #1| #2| #3|  |  |  | #4| #1| #2| #3| #4| #5|  |  |  | #1|  |
 
P1    |  |  |  |---|---|---|  |  |  |---|---|---|---|---|---|  |  |  |--->  |
 
s1    | 1            | 0    | 1                | 0                | 1        |  |
 
        | #1| #2| #3|  |  |  | #4| #1| #2|  |  |  |  |  |  | #3| #4| #1|  |  |
 
P2    |---|---|---|  |  |  |---|---|---|  |  |  |  |  |  |---|---|--->  |  |
 
s2    | 1 | 0                                                | 0 |  |  |  |  |  |
 
planif X  |  |  X  |  |  X  |  |  X  |  |  X  |  |  X  |  |  X  X  |
 
        |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
 
        0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20
 

Revisión actual del 12:50 7 dic 2017

     X = El proceso pasa a estado bloqueado.
     / = El proceso pasa a estado preparado.
     > = Fin de su ejecución.


     |   |   | #1| #2| #3| #4| #5| #1|   |   |   | #2| #3| #4|   | #5| #1|   |   |   |
   p1|   |   |---|---|---|---|---|---|   |   |   |---|---|---|   |---|--->   |   |   |
     |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
     | #1| #2|   |   |   |   |   |   | #3| #4| #1|   |   |   | #2|   |   | #3| #4| #1|
   p2|---|---X   |   |   |   |   /   |---|---|---|   |   |   |---X   /   |---|---|--->
     |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
     |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
     0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19 20


Observaciones:

  • El proceso P2 bloquea al hacer down sobre el semáforo s2 cuyo contador vale 0.
  • En el instante 15, el proceso P2 bloquea de nuevo pues hace down sobre el semáforo s2 cuyo contador vale 0.
  • En los semáforos no se vuelve a comprobar la condición que hizo que el proceso bloqueara, a diferencia de los cerrojos.

--Pneira 08:59 10 may 2011 (UTC)


Duda sobre el ejercicio:

He realizado varias veces la traza de los procesos y en el instante 15 el semáforo de s2 me sale 1,no sé si me estaré pasando algún detalle por alto.S2 empieza en 0,en el instante 7 P1 realiza un up en s2 (valor s2=1), y se realiza un down en el instante 15 por lo que volvería a valer 0, ¿qué estoy pasando por alto? :S --Josedelfer 11:00 13 dic 2011 (UTC)

--Albsolnog 11:36 13 dic 2011 (UTC) Fijate que para t=6 p2 estaba bloqueado y por tanto almacenado en la lista, justo aqui p1 realiza un up(S2) en el instante 6 no en el 7 lo que implica que p2 pasa a estado preparado pero su contador no se toca (mira el codigo de up())


--Josedelfer 13:24 13 dic 2011 (UTC) Es cierto,cuando esta bloqueado al hacer el up no aumenta el contador,era el detalle que estaba pasando por alto. Gracias

--Josleamat 12:28 6 dic 2017 (UTC) Hola, en el instante 17, el proceso p1, debería de continuar con su quantum hasta agotarlo, donde se debe de bloquear en la linea de codigo 2, donde hace un down y pasa ha estado bloqueado.