semSignal
? e se si elimina una delle chiamate a semWait
?
0x000000a000
, qual è il numero massimo di elementi contenuti nella tabella delle pagine di un processo? Si supponga inoltre che tale tabella sia organizzata in 2 livelli, in modo tale che la page directory (primo livello) sia indirizzata da 10 bit. Quanti bit saranno usati per indirizzare il secondo livello? Quante entry ci saranno, al massimo, tra tutte le tabelle delle pagine (primo e secondo livello) di un processo?
Processo | Tempo di Arrivo | Tempo di esecuzione |
---|---|---|
P1 | 2 | 15 |
P2 | 5 | 10 |
P3 | 12 | 7 |
P4 | 9 | 5 |
P5 | 15 | 7 |
Pagina logica | 0 | 1 | 2 | 3 |
Frame | 5 | 7 | 1 | 2 |
P(0)
di arrivare fino ad assegnare 1 a bolt
senza interromperlo, allora il requisito base della mutua esclusione (sul numero massimo di processi nella sezione critica) è rispettatosemWait
, il requisito base della mutua esclusione (sul numero massimo di processi nella sezione critica) è rispettatosemWait
e semSignal
, il requisito base della mutua esclusione (sul numero massimo di processi nella sezione critica) non è rispettatosemWait(wsem)
, deve aspettare tutti e soli i lettori che attualmente hanno già eseguito semWait(rsem)
semWait(wsem)
, deve aspettare tutti e soli i lettori che attualmente stanno eseguendo READUNIT
semWait(wsem)
, deve aspettare tutti e soli i lettori che attualmente stanno eseguendo READUNIT
count > 0
, allora c'è un solo scrittore attivo (ovvero, che abbia completato l'esecuzione della receive
)count < 0
, allora c'è un solo lettore attivo (ovvero, che abbia completato l'esecuzione della receive
)"OK"
col messaggio nulloempty
e la ricezione del messaggio, lo scheduler potrebbe interrompere il controllore stesso. Tuttavia, la soluzione è correttawait(strettoia)
, e 2 macchine da destra in attesa (su quali semafori?). Si supponga che ora arrivino altre 2 macchine da sinistra. Descrivere come evolverà la situazione, supponendo che non ci siano altri arrivi.
Tempo | Evento |
---|---|
5 | P1 richiede una lettura al disco 3 |
15 | Finisce il quanto di tempo di P5 |
18 | P7 richiede una scrittura al disco 3 |
20 | P3 richiede una lettura al disco 2 |
24 | P5 richiede una scrittura al disco 3 |
28 | P5 viene sospeso |
33 | Il disco 2 comunica con un interrupt il completamento della richiesta di P3 |
36 | Il disco 3 comunica con un interrupt il completamento della richiesta di P1 |
38 | P8 termina |
40 | Il disco 3 comunica con un interrupt il completamento della richiesta di P5 |
44 | P5 torna in memoria |
48 | Il disco 3 comunica con un interrupt la fine della richiesta di P7 |
semSignal
? e se si elimina una delle chiamate a semWait
?
controller
. Aggiungere anche un opportuno main
.
empty
. Come si sarebbe dovuto riscrivere il controllore?while (var == 1) {/* non fare niente */;}
, ed implementa pertanto una forma di busy-waiting. Viene spesso usato dal kernel, in alternativa alla wait
su un semaforo, se c'è la ragionevole speranza che, in caso il lock sia già stato acquisito, esso venga rilasciato in breve tempo (risparmiando così sull'esecuzione, relativamente costosa se effettuata nel kernel, della wait
stessa). Discutere pregi e difetti di questa soluzione, tenendo conto che:
tty
(da teletype, appunto). Le telescriventi erano usate anche per trasmettere messaggi in remoto, ma questo uso non verrà considerato qui.turn
e blocked
? Supponendo di poter render una parte di questo codice atomica, qual è la porzione di codice più piccola da scegliere per far sì che la mutua esclusione non venga violata?
choosing
(e tutte le istruzioni che lo riguardano)?