Prova scritta di Sistemi Operativi, Prof. Mancini - 18 giugno 1998
1 (punti: -1.5,4)
Un sistema operativo a lotti con dispositivi virtuali:
Un processo esterno:
Il costrutto di sincronizzazione chiamato monitor:
L'algoritmo approssimato di sostituzione delle pagine in memoria principale, conosciuto come Second Chance:
Un processo esegue il comando:
fd = creat("/users/studenti/file1", RDONLY);
L'operazione ha successo. Quali delle seguenti strutture dati sono state
sicuramente modificate e quali sono rimaste sicuramente invariate durante
l'esecuzione di questo comando? (Indicare M per sicuramente Modificate,
I per sicuramente Invariate e lasciare in bianco altrimenti.)
Struttura dati |
Modificata/Invariata |
a) il super-block |
|
b) l'i-node bitmap |
|
c) la block bitmap |
|
d) l'i-node di "file1" |
|
e) la tabella FILP |
|
f) la tabella degli i-node |
|
g) la tabella dei processi |
|
h) il root-directory |
|
i) il direttorio "studenti" |
|
6. Considerare un insieme di cinque processi P1, P2, P3, P4,
P5 con i seguenti tempi di arrivo e tempi di esecuzione in millisecondi:
Processo |
Tempo di arrivo |
Tempo di esecuzione |
P1 |
0 |
15 |
P2 |
4 |
10 |
P3 |
9 |
7 |
P4 |
13 |
6 |
P5 |
7 |
7 |
Illustrare in al piu' 80 parole il concetto di stato sicuro introdotto nell'algoritmo del banchiere.
8. (punti: 10)
Realizzare il processo di controllo di un dispositivo lettore a caratteri illustrare l'uso delle primitive hP ed hV.
9. (punti: 6)
Estendere il comando grep di Unix realizzando un Perl script efficiente
che riceve dalla linea di comando un nome di file ed una sequenza di stringhe
separate da uno spazio e restituisce in STDOUT le linee di file che contengono
almeno due fra le stringhe passate come argomento.
Risultati della prova
1. c,e 2. c 3. e 4. b,e
5.
Struttura dati |
Modificata/Invariata |
a) il super-block |
I |
b) l'i-node bitmap |
file potrebbe esistere |
c) la block bitmap |
file potrebbe esistere |
d) l'i-node di "file1" |
M |
e) la tabella FILP |
M |
f) la tabella degli i-node |
M |
g) la tabella dei processi |
M |
h) il root-directory |
I |
i) il direttorio "studenti" |
file potrebbe esistere |
6.
P1 |
P1 |
P2 |
P5 |
P1 |
P3 |
P2 |
P4 |
P5 |
P1 |
P3 |
P2 |
P4 |
0-4 |
4-8 |
8-12 |
12-16 |
16-20 |
20-24 |
24-48 |
28-32 |
32-35 |
35-38 |
38-41 |
41-43 |
43-45 |
Tempo di attesa medio = 124 / 5 Turnaround medio = 169 / 5
7. Uno stato definito con la terna (D,E,A) si dice sicuro se partendo da questo esiste almeno una sequenza di richieste di assegnazioni e rilasci tale che tutti i processi possono terminare. D = disponibilità E = esigenza A = assegnazione
8.Si veda Maestrini pp 141 e 315.
program ControlloLettore; const UscitaLettore:=.....; IngressoLettore:=.....; Lready:=.....; var m: TipoMessaggio; comando char; mittente: IndiceDiProcesso; risposta: StatoDispositivo; errore: boolean; begin inizializzazione; hP(Lready); repeat ReceiveAll(m,mittente); comando:=carattere; ScritturaComando(UscitaLettore,comando); hP(Dready); RispostaDelDispositivo(IngressoLettore,risposta); errore:=AnalisiRisposta(risposta); if errore then GestioneErrore(risposta) else begin m.carattere:=EstrazioneDaRisposta(risposta); send(m,mittente); end until false end;
9. #!/usr/bin/perl die "Argomenti insufficienti!" if scalar(@ARGV) < 2; open(IN,shift @ARGV) || die $!; while (<>) { $Count = 0; foreach $Pattern (@ARGV) { next if ($_ !~ /$Pattern/o); if (++$Count == 2) { print $_; last; } } }
- 18 giugno 1998 -
Si ringraziano i volenterosi studenti Alessandro Cagnetti e Daniele Giabbai.