Compito di Sistemi Operativi, Prof. Mancini - 4 giugno 1998
1. (punti: -1.5, 4)
Nella realizzazione di processi concorrenti:
Fra le trasformazioni subite dai programmi prima dell'esecuzione c'e' la rilocazione. In particolare,
Assumendo in ogni caso un comportamento bloccante per la primitiva receive:
Una struttura dati "i-node" del sistema di archiviazione di Unix e' associata ad un archivio F. Il campo "link" (collegamenti) di questo i-node contiene:
Un processo esegue il comando:
fd = open("/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:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S = 2 3 6 1 8 3 0 5 1 4 2 8 6 2 4 1 5 8 3 2
Scrivere le procedure send e receive per la comunicazione tra processi secondo il modello sincrono utilizzando i semafori.
9. (punti: 6)
Estendere il comando grep di Unix realizzando un Perl script efficiente che riceve dalla linea di comando tre argomenti (una stringa, un numero k e un nome di file) e restituisce in STDOUT per ogni linea di file che contiene stringa anche le k linee precedenti
.
Risultati della prova
1. d
2. a,e
3. a,d,e
4. g
5.
Struttura dati | Modificata/Invariata |
a) il super- block | I |
b) l'i- node bitmap | I |
c) la block bitmap | I |
d) l'i- node di "file1" | I |
e) la tabella FILP | M |
f) la tabella degli i- node | |
g) la tabella dei processi | M |
h) il root- directory | I |
i) il direttorio "studenti" | I |
6.
P1 |
P3 |
P3 |
P4 |
P4 |
P5 |
P2 |
P1 |
0-4 |
4-7 |
7-11 |
11-15 |
15-17 |
17-24 |
24-34 |
34-35 |
Tempo medio di turnaround = 101/5
7.
(a) Algoritmo ottimo:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
Numero di page fault: 5+5
(b) Algoritmo LRU (pag 469 del Maestrini):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Numero di page fault: 5+10
8.
Per questo esercizio sono considerate errate tutte le soluzioni che non considerano la gestione dei nomi mittente e destinatario e il ripristino e la sospensione dei processi coinvolti nella comunicazione.
vedere Maestrini alla pagina 195, oppure la soluzione del compito dell' 11 febbraio 1998.
9.
Bisogna mantenere in memoria un buffer di k linee del file. La linea in esame viene aggiunta al buffer sovrascrivendo quella più vecchia ad ogni passo. Se la linea in esame contiene "stringa", allora si restituisce il contenuto del buffer lungo k e la linea in esame.
($Pattern, $k) = ($ARGV[0], $ARGV[1]); for (0..$k) { $buff [$_] = ""; } # inizializzazione vettore... $i = -1; open (INPUT, "$ARGV[2]") || die $!; while ( <INPUT> ) { $i = (++$i) % ($k+1); $buff[$i] = $_; if ( /$Pattern/o ) { print "Match trovato: $_"; for (1..$k) { print $buff[ ($_+$i) % ($k+1) ]; } } }Il programma e' stato testato con il Perl 5.003 per Windows 95.
- 4 giugno 1998 -
Si ringraziano i volenterosi studenti Alessandro Cagnetti e Daniele Giabbai.