vuoi
o PayPal
tutte le volte che vuoi
Gestione dei Processi
2. Per ciascuna delle transizioni di stato sotto indicate si dia un esempio di evento che può averle
prodotte. →
(a) READY RUN
Solution: Lo scheduler, in base alle sue politiche, ha selezionato un processo e lo ha
mandato in esecuzione.
→
(b) RUN READY
Solution: Il processo in esecuzione (RUN) ha raggiunto il tempo massimo consentito
per la “uninterrupted execution”.
→
(c) BLOCKED READY
Solution: L’evento per il quale il processo è stato bloccato (BLOCKED) si verifica
ed è pronto (READY) per riprendere l’esecuzione.
→
(d) RUN BLOCKED
Solution: In generale, un processo viene messo nello stato BLOCKED se richiede
qualcosa per cui deve attendere. Tipicamente chiamata dal processo in esecuzione a
una procedura del sistema operativo. Ad esempio, un processo può richiedere un file
che non è immediatamente disponibile. Oppure il processo può iniziare un’azione,
come un’operazione di I/O, che deve essere completata prima che il processo possa
continuare. 2
Sincronizzazione
3. Si consideri il seguente programma:
n = 0;
int s1 = {1};
semaphore s2 = {1};
semaphore mutex = {1};
semaphore
A() {
void i;
int {
for(i=1;i<3;i++)
wait(s1);
wait(mutex);
n+=i;
signal(mutex);
signal(s2);
}
} B() {
void j;
int {
for(j=2;j<4;j++)
wait(s2);
wait(mutex);
n*=j;
signal(mutex);
signal(s1);
}
} main() {
void
parbegin(A(),B());
}
(a) Al termine del programma, quali sono i valori possibili della variabile condivisa Si
n?
giustifichino le risposte date.
Solution: Dato che:
• i due cicli for ammettono solo due esecuzioni di A e due di B;
• la presenza dei semafori esclude tracce aventi AA e BB come prefissi.
Le uniche tracce possibili sono:
→ n = 8
• ABBA 3
→ n = 12
• ABAB → n = 9
• BAAB → n = 5
• BABA
(b) È possibile che i processi A o B restino bloccati indefinitamente? Scrivere l’eventuale
traccia di esecuzione.
Solution:
No! 4