Sistemes Operatius

Anuncio
Sistemes Operatius - Seminari 2
1. Si el valor de la variable X es inicialmente 10, que valores puede tener X al final de
la ejecución del siguiente programa con dos procesos.
X:=10
Process P1
…
X:=X+2;
…
end
Process P2
…
X:=X*2;
…
end
2. Explica cuales son las condiciones que debe satisfacer el problema del productor
consumidor.
3. Explica porque el programa siguiente no soluciona el problema del productor
consumidor (bouded-buffer problem)
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
int counter = 0;
Producer;
while (1) {
while (counter == BUFFER_SIZE) ; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
counter++;
}
Consumer;
while (1) {
while (counter == 0)
; /* do nothing */
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
counter--;
}
4. Explica cuales son las 3 condiciones que debe satisficer el problema de la sección
crítica.
5. Los dos procesos, P0 y P1, comparten las variables turn_0 y turn_1 (inicialmente con
valor false). La estructura del proceso Pi (i=0 o 1) se muestra a continuación; el otro
proceso es Pj (j=1 o 0).¿El algoritmo satisface los tres requisitos del problema de la
sección crítica?
Process Pi
repeat
turn_i := true;
while turn_j do no-op;
critical section
turn_i := false;
remainder section
until false;
6. Asume turn=0 inicialmente. El siguiente programa con dos procesos P0 y P1
satisface los requisites del problema de la sección crítica?.
Process Pi
repeat
while turn ≠ i do no-op;
critical section
turn := j ;
remainder section
until false;
7. Misma pregunta que 6.
Process Pi
repeat
flag [i] := true;
turn := j ;
while (flag [j] and turn = j) do no-op;
critical section
flag [i] := false;
remainder section
until false;
8. (a) Explica cómo puede servir desactivar interrupciones para implementar
primitivas de sincronización. (b) Explica por qué esta solución no resulta apropiada
en un sistema monoprocesador si hay que usar las primitivas de sincronización en
programas de nivel de usuario.
9. Exlica por qué los bloqueos mediante bucle sin fin (spinlocks) no son apropiados
para sistemas monoprocesador, aunque se usen con frecuencia en los sistemas
multiprocesador.
Descargar