Discusión:Solución ejercicio 1

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

No estoy del todo seguro de la solución dada. Teniendo en cuenta los valores en cada momento de semáforos(justo después de ejecutar la instrucción y antes de que lo haga el planificador):

     X = El proceso pasa a estado bloqueado.
     / = El proceso pasa a estado preparado.
     > = Fin del proceso

             |   |   | #1| #2| #3| #4| #5| #1|   | #2|   |   |   | #3| #4| #5| #1|   |   |   |
           p1|   |   |---|---|---|---|---|---|   |---X   /   |   |---|---|---|--->   |   |   |
             |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
             | #1| #2|   |   |   |   |   |   | #3|   | #4| #1| #2|   |   |   |   | #3| #4| #1|
           p2|---|---X   |   |   |   |   /   |---|   |---|---|---|   |   |   /   |---|---|--->
             |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
             |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
             0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19 20
             *********************************************************************************
s1.cont      | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 | 2 | 2 |
             |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
s1.prlist    |   |   |   |   |   |   |   |   |   |p1 |   |   |   |   |   |   |   |   |   |   |
             |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
s2.cont      | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
             |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
s2.prlist    |   |p2 |p2 |p2 |p2 |p2 |   |   |   |   |   |   | p2| p2| p2|   |   |   |   |   |
             |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
p1.quantum   | 3 | 3 | 2 | 1 | 0 | 2 | 1 | 0 | 3 | 2 | 2 | 2 | 2 | 1 | 0 | 3 | 2 | nc| nc| nc|
             |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
p2.quantum   | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 3 | 2 | 1 | 0 | 3 | 3 | 3 | 3 | 2 | 1 | 0 |
             |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
                              (2)             (1)                     (2)

(1) A p2 solo le quedaba una unidad de tiempo de su quantum, así que solo ejecuta una línea y no 3. Aquí cabría preguntarse si al pasar a estado bloqueado un nuevo quantum le es asignado

(2) pese a que p1 agota su quantum, como p2 está bloqueado y p1 es el único proceso se le asigna un nuevo quantum

Duda del ejercicio del Tema 7.

En el ejercicio 1 del Tema 7, en el instante 14, se produce la instrucción Down(s2), cuando el valor de s2 es igual a 1, y en el ejemplo, bloquea al proceso 2. Es correcto esa ejecución¿? Al ser el valor del contador de s2 igual a 1, debería de seguir con la siguiente instrucción.

El resultado final, ¿puede ser de esta forma?


     X = El proceso pasa a estado bloqueado.
     / = El proceso pasa a estado preparado.
     |   |   | #1| #2| #3| #4| #5| #1|   |   |   | #2| #3| #4|   |   |   | #5|#1 |   |
   p1|   |   |---|---|---|---|---|---|   |   |   |---|---|---|   |   |   |---|--->   
     |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
     | #1| #2|   |   |   |   |   |   | #3| #4| #1|   |   |   | #2| #3| #4|   |   | #1|
   p2|---|---X   |   |   |   |   /   |---|---|---|   |   |   |---|---|---|   |   |--->
     |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
     |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
     0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19 20