Diferencia entre revisiones de «Solución ejercicio 1»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
Línea 15: Línea 15:
  
 
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.
 
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: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
 +
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 del 17:09 9 may 2011

     X = El proceso pasa a estado bloqueado.
     / = El proceso pasa a estado preparado.


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

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.

--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

p1:
 for (int i=0; i<2; i++) {  #1
    down(s1);               #2
    f1();                   #3
    if (get(s1) == 0)       #4
        up(s2);             #5
 }
P2:
 for (int i=0; i<2; i++) {   #1
    down(s2);               #2
    f2();                   #3
    up(s1);                 #4
 }
             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