Diferencia entre revisiones de «Práctica Semáforos (Sistemas Operativos)»

De Cuba-Wiki
Sin resumen de edición
 
(No se muestran 29 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
{{Back|Sistemas Operativos}}
==Ejercicio 01[*]:==
==Ejercicio 01[*]:==
<br>a)
<br>a)ABCABC..
<pre>
<pre>
A B C   
A       B       C   
P( A )  P( B )  P( C )   
P( A )  P( B )  P( C )   
... ... ...   
...     ...     ...   
V( B )  V( C )  V( A )   
V( B )  V( C )  V( A )   


Línea 13: Línea 15:
</pre>   
</pre>   


<br>b)
<br>b)ABACABAC..
<pre>
<pre>
A B C   
A       B       C   
P( A ) P( B ) P( C )   
P( A )   P( B )   P( C )   
P( msg ) P( msg )   
        P( msg ) P( msg )   
... ... ...   
...     ...     ...   
V( A ) V( A )   
        V( A )   V( A )   
V( msg ) V( C ) V( B )   
V( msg ) V( C )   V( B )   


Inicio
Inicio
A = n > 0   
A = n > 0   
msg = 0 
B = 1   
B = 1   
C = 0   
C = 0   
msg = 0 
</pre>
</pre>


<br>c)
<br>c)(AoB)C(AoB)C..
<pre>
<pre>
A B C   
A       B       C   
P( A )  P( A )  P( C )   
P( A )  P( A )  P( C )   
... ... ...   
...     ...     ...   
V( C )  V( C )  V( A )   
V( C )  V( C )  V( A )   


Línea 42: Línea 44:


==Ejercicio 02:==
==Ejercicio 02:==
A(BoC)A(BoC)..
<pre>
A      B      C 
P( X )  P( Y )  P( Y ) 
...    ...    ... 
V( Y )  V( X )  V( X ) 
Inicio
X = 1
Y = 0 
</pre>
==Ejercicio 03:==
==Ejercicio 03:==
<br>a)
<br>a)
Línea 48: Línea 62:
==Ejercicio 05[*]:==
==Ejercicio 05[*]:==
<br>a) Hay un deadlock, porque Z espera que se incremente B, y B nunca se va a incrementar, porque eso lo hace Y (que no se va a ejecutar)
<br>a) Hay un deadlock, porque Z espera que se incremente B, y B nunca se va a incrementar, porque eso lo hace Y (que no se va a ejecutar)
<br>b) Se podrian invertir los primeros dos P's de Y y Z
<br>b) Se podrian invertir los primeros dos P's, tanto en Y como en Z
<br>c) Me parece que anda bien (por algo lo di como solucion del b :P)
<br>c) Me parece que anda bien (por algo lo di como solucion del b :P)
<br>d)
<br>d)
Línea 54: Línea 68:
==Ejercicio 06[*]:==
==Ejercicio 06[*]:==
<br>a)
<br>a)
<pre>
S  R  B  C  Signal  Wait
1  0  0  1   
0  1  0  1    R          X
0  1 -1  1            B    Z
1  0  0  0    B      B    Y
1 -1  0  0            B    Y
1 -1  0 -1          B/C  X
0  0  0 -1    B    B/C  X
1  0  0  0    C      C
0 -1  0  0            C
-1 -1  0  0          C/S
</pre>
??
<br>b)
<br>b)


==Ejercicio 07[*]:==
==Ejercicio 07[*]:==
MMMM. a que apunta este ejercicio??
Al ejecutarse V(T) se produce un signal de T, entonces el PT selecciona un proceso que requiere T que se encuentra en la cola de bloqueados y lo coloca en la de listos. Luego se ejecuta V(S) y sucede lo mismo y luego V(R). En la ejecucion de V(R) no se produce ningun signal


==Ejercicio 08:==
==Ejercicio 08:==
Existe un caso en el cual tiene bastante sentido que el procesador se quede ciclando sobre un semáforo, y no que se produzca un Wait. Este es el caso en el cual se tiene, por ejemplo, dos procesadores que quieren acceder a la cola de listos para seleccionar el próximo proceso a ejecutar. En un momento dado está uno de ellos seleccionando por tanto se está ejecutando el planificador de procesos, y en ese mismo instante, también en el otro procesador se quiere ejecutar el planificador de procesos. Uno de los procesadores justamente tiene que ir a la cola de listos para seleccionar el proceso que tiene que ejecutar. Pero el otro está haciendo la selección y tiene el recurso (cola de listos) tomado. Si no puede elegir, no tiene sentido que se espere nada, porque lo que quiere hacer es justamente tomar un proceso para continuar la ejecución. Este sería un caso en el cual uno de los procesadores se quedará loopeando en la pregunta esta de ver cuándo cambia el valor del semáforo. Esos semáforos reciben el nombre de SPIN.
==Ejercicio 09:==
==Ejercicio 09:==
YXZQYXZQ...
==Ejercicio 10:==
==Ejercicio 10:==
==Ejercicio 11[*]:==
==Ejercicio 11[*]:==
Es muy pedorra esta solucion????
La secuencia equivale a A(BoC)(BoC)A(BoC)(BoC)..
 
<pre>
<pre>
A B C   
A         B         C   
P( A ) P( msg )  P( msg )   
P( A )   P( msg )  P( msg )   
P( A )  
P( A )  
... ... ...   
...       ...       ...   
V( msg )  V( A ) V( A )   
V( msg )  V( A )   V( A )   
V( msg )     
V( msg )     


Línea 79: Línea 111:


==Ejercicio 12[*]:==
==Ejercicio 12[*]:==
ABB AC ABB AC..
<pre>
<pre>
A B C   
A       B     C   
  P( exc )
P(X)     P(Y)   P(Z)   
P( A ) P( B )  P( C )
P(X)     P(SP(Z)
  P( C )
...     ...   ...
   V( exc )
V(Y)    V(X)  P(Y)
... ... ...
V(Y)            P(Y)
V( B ) V( C ) V( A )
V(Z)            V(X)
V( B)  
                V(X)
                V(S)
                V(S)


Inicio
Inicio
A=1  
X=2  
B=0
Y=0
C=0
Z=0
S=2
</pre>
</pre>


==Ejercicio 13[*]:==
==Ejercicio 13[*]:==
ABBCBBABBCBB..
<pre>
A      B      C 
P(X)  P(b)  P(Y) 
P(s)          P(s)
P(s)          P(s)
...    ...    ... 
V(Y)  V(s)  V(X) 
V(b)          V(b) 
V(b)          V(b)
Inicio
X=1 
Y=0
s=2
b=0
</pre>
[[Category:Prácticas]]

Revisión actual - 20:22 17 jul 2016

Plantilla:Back

Ejercicio 01[*]:[editar]


a)ABCABC..

A       B       C  
P( A )  P( B )  P( C )  
...     ...     ...  
V( B )  V( C )  V( A )  

Inicio
A = n > 0  
B = 0  
C = 0


b)ABACABAC..

A        B        C  
P( A )   P( B )   P( C )  
         P( msg ) P( msg )  
...      ...      ...  
         V( A )   V( A )  
V( msg ) V( C )   V( B )  

Inicio
A = n > 0  
B = 1  
C = 0  
msg = 0  


c)(AoB)C(AoB)C..

A       B       C  
P( A )  P( A )  P( C )  
...     ...     ...  
V( C )  V( C )  V( A )  

Inicio
A = n > 0  
C = 0  

Ejercicio 02:[editar]

A(BoC)A(BoC)..

A       B       C  
P( X )  P( Y )  P( Y )  
...     ...     ...  
V( Y )  V( X )  V( X )  

Inicio
X = 1
Y = 0  

Ejercicio 03:[editar]


a)
b)

Ejercicio 04:[editar]

Ejercicio 05[*]:[editar]


a) Hay un deadlock, porque Z espera que se incremente B, y B nunca se va a incrementar, porque eso lo hace Y (que no se va a ejecutar)
b) Se podrian invertir los primeros dos P's, tanto en Y como en Z
c) Me parece que anda bien (por algo lo di como solucion del b :P)
d)

Ejercicio 06[*]:[editar]


a)

 S  R  B  C   Signal  Wait
 1  0  0  1     
 0  1  0  1     R           X
 0  1 -1  1            B    Z
 1  0  0  0     B      B    Y
 1 -1  0  0            B    Y
 1 -1  0 -1           B/C   X
 0  0  0 -1     B     B/C   X
 1  0  0  0     C      C
 0 -1  0  0            C
-1 -1  0  0           C/S

??
b)

Ejercicio 07[*]:[editar]

Al ejecutarse V(T) se produce un signal de T, entonces el PT selecciona un proceso que requiere T que se encuentra en la cola de bloqueados y lo coloca en la de listos. Luego se ejecuta V(S) y sucede lo mismo y luego V(R). En la ejecucion de V(R) no se produce ningun signal

Ejercicio 08:[editar]

Existe un caso en el cual tiene bastante sentido que el procesador se quede ciclando sobre un semáforo, y no que se produzca un Wait. Este es el caso en el cual se tiene, por ejemplo, dos procesadores que quieren acceder a la cola de listos para seleccionar el próximo proceso a ejecutar. En un momento dado está uno de ellos seleccionando por tanto se está ejecutando el planificador de procesos, y en ese mismo instante, también en el otro procesador se quiere ejecutar el planificador de procesos. Uno de los procesadores justamente tiene que ir a la cola de listos para seleccionar el proceso que tiene que ejecutar. Pero el otro está haciendo la selección y tiene el recurso (cola de listos) tomado. Si no puede elegir, no tiene sentido que se espere nada, porque lo que quiere hacer es justamente tomar un proceso para continuar la ejecución. Este sería un caso en el cual uno de los procesadores se quedará loopeando en la pregunta esta de ver cuándo cambia el valor del semáforo. Esos semáforos reciben el nombre de SPIN.

Ejercicio 09:[editar]

YXZQYXZQ...

Ejercicio 10:[editar]

Ejercicio 11[*]:[editar]

La secuencia equivale a A(BoC)(BoC)A(BoC)(BoC)..

A         B         C  
P( A )    P( msg )  P( msg )  
P( A ) 
...       ...       ...  
V( msg )  V( A )    V( A )  
V( msg )    

Inicio
A=2  
msg=0  

Ejercicio 12[*]:[editar]

ABB AC ABB AC..

A        B      C  
P(X)     P(Y)   P(Z)  
P(X)     P(S)   P(Z)
...      ...    ...
V(Y)     V(X)   P(Y)
V(Y)            P(Y)
V(Z)            V(X)
                V(X)
                V(S)
                V(S)

Inicio
X=2  
Y=0
Z=0
S=2

Ejercicio 13[*]:[editar]

ABBCBBABBCBB..

A      B      C  
P(X)   P(b)   P(Y)   
P(s)          P(s)
P(s)          P(s)
...    ...    ...  
V(Y)   V(s)   V(X)   
V(b)          V(b)   
V(b)          V(b)

Inicio
X=1  
Y=0
s=2
b=0