Esercizio 1:
Dire quali delle seguenti operazioni possono essere permesse in modalità utente:
1. disabilitazione delle interruzioni
2. Invio di un comando ad un dispositivo
3. invocazione di una system call
Motivare la risposta.
Soluzione:
1. La disabilitazione delle interruzioni non può
essere permessa in modalità utente, altrimenti un processo potrebbe
impedire il riconoscimento delle interruzioni del timer e di conseguenza
potrebbe impedire l'attivazione dello scheduler, monopolizzando in tal
modo il processore.
2. No, i processi utente potrebbero inviare comandi contradditori o sbagliati impedendo ad altri processi di utilizzare correttamente il dispositivo.
3. certamente si, l'invocazione delle system call
permette ai processi utente di accedere alle funzioni del sistema operativo.
Esercizio 2:
Fare un esempio di codice del sistema operativo che non può essere scritto in linguaggi ad alto livello (quali C) e spiegare il perchè.
Soluzione:
All'atto della commutazione di contesto, il salvataggio
dei registri generali deve essere scritto in linguaggio macchina perchè
i linguaggi ad alto livello non permettono di indirizzare i singoli registri
del processore.
Esercizio 3:
Si considerino 7 job che arrivano in sequenza ad un sistema batch, con tempi di esecuzione rispettivamente di 15, 24, 13, 6, 21, 32, 15 (in minuti). Si schedulino i job in ordine FIFO (First In First Out -- cioe' in ordine di arrivo) e SJF, e si valuti il tempo di turnaround e il throughput.
Soluzione:
Il tempo di turnaround e' il tempo medio di permanenza dei job nel sistema, il throughput del sistema e' il numero medio di job eseguiti in un'ora, quindi
Scheduling FIFO: 15, 24, 13, 6, 21, 32, 15
Turnaround: (15*7+24*6+13*5+6*4+21*3+32*2+15*1)/7=68,571
Throughput:
Tempo totale di esecuzione: 126 minuti per 7 job
numero medio di job completati in un'ora è dato dalla proporzione:
126: 7 = 60 : x
da cui il throughput è : 3,333
Scheduling SJF: 6, 13, 15, 15, 21, 24, 32
Turnaround: (6*7+13*6+15*5+15*4+21*3+24*2+32)/7=56,857
Throughput: lo stesso che per lo scheduling
FIFO
Esercizio 4:
Si considerino 3 processi (A, B e C) che vengono attivati contemporaneamente, con tempi di esecuzione rispettivamente di 30, 20, 10 (millisecondi). Valutare il turnaround time dei tre processi nell'ipotesi di schedulazione round-robin, con un quanto di tempo di 10 ms, trascurando il tempo necessario per la commutazione di contesto e supponendo che passi in esecuzione prima il processo A, poi B e infine C.
Soluzione:
l'ordine con cui vengono eseguiti i processi è
il seguente:
A (per 10 ms), B (per 10 ms), C (per 10 ms), A (per 10 ms), B (per 10 ms), A (per 10 ms)
per cui C termina in 30 ms, B termina in 50 ms e A termina in 60 ms.
Quindi il turnaround time è:
(30+50+60)/3=46,666 ms
Esercizio 5:
Elencare le condizioni necessarie affinché si verifichi lo stallo, e motivare la risposta
Soluzione:
Le condizioni sono:
1. risorse seriali
2. risorse non prerilasciabili
3. condizione hold&wait
4. attesa circolare di un insieme di processi
Se la condizione 1 non fosse verificata, sarebbe possibile assegnare la stessa risorsa a più processi, quindi sarebbe possibile assegnare ad ogni processo tutte le risorse di cui ha bisogno per terminare
Se la condizione 2 non fosse verificata, sarebbe possibile forzare il prerilascio di tutte le risorse acquisite dai processi in stallo. A questo punto sarebbe quindi possibile far terminare tutti i processi in stallo assegnando di volta in volta ad ognuno dei processi in stallo tutte le risorse delle quali necessita per terminare.
Se la condizione hold&wait non fosse verificata i processi bloccati in stallo non potrebbero vincolare le risorse acquisite. In tal caso le risorse sarebbero libere e potrebbero essere assegnate di volta in volta ad ognuno dei processi bloccati per farlo terminare.
Le condizioni 1,2 e 3 da sole non sono sufficienti
per garantire il verificarsi dello stallo, infatti se i processi fossero
eseguiti in ordine strettamente sequenziale potrebbero terminare tutti.
La condizione di attesa circolare è quindi necessaria in quanto
garantisce che ogni processo non possa proseguire perché in attesa
delle risorse vincolate dagli altri processi in stallo.