-

Prova scritta di Sistemi Operativi, Prof. Mancini - 18 giugno 1998


1 (punti: -1.5,4)

Un sistema operativo a lotti con dispositivi virtuali:

  1. gestisce un numero di dispositivi logici superiore a quello dei dispositivi fisici connessi al sistema;
  2. permette che la somma delle dimensioni degli archivi memorizzati sui dispositivi possa essere superiore alla dimensione della memoria secondaria fisicamente disponibile;
  3. e' un sistema uniprogramato;
  4. e' un sistema multiprogrammato;
  5. esegue piu' attivita' che procedono concorrentemente, una sola di esse svolge un servizio di stretta pertinenza dell'utente;
  6. esegue piu' attivita' che procedono concorrentemente, piu' d'una di esse svolge un servizio di stretta pertinenza dell'utente;
  7. nessuna delle affermazioni precedenti e' corretta.
2 (punti: -1.5,4)

Un processo esterno:

  1. e' definito come l'attivita' svolta da un servente remoto in un sistema distribuito;
  2. e' la rappresentazione astratta dell'interazione di un processo locale con un servente remoto in un sistema distribuito;
  3. e' definito come l'attivita' che si svolge su un processore dedicato: il processore dedicato corrisponde alla struttura fisica di un dispositivo, mentre il processo esterno e' la rappresentazione astratta dell'attivita' del dispositivo;
  4. e' il processo con il quale e' vincolato ad interaggire un dispositivo;
  5. e' il processo che gestisce le interruzioni generate da un dato dispositivo fisico;
  6. non rappresenta un dispositivo nel modello concorrente;
  7. nessuna delle affermazioni precedenti e' corretta.
3 (punti: -1.5,4)

Il costrutto di sincronizzazione chiamato monitor:

  1. consiste di una variabile intera, una coda di descrittori di processo e di un insieme di procedure interne e garantisce la mutua esclusione fra l'esecuzione delle procedure interne;
  2. consiste di una variabile intera, una coda di descrittori di processo e di un insieme di procedure interne e non garantisce la mutua esclusione fra l'esecuzione delle procedure interne;
  3. consiste di un insieme di variabili permanenti, di un insieme di procedure interne e di un programma di inizializzazione e non garantisce la mutua esclusione fra l'esecuzione delle procedure interne;
  4. non rilascia la mutua esclusione se un processo si sospende su una variabile di tipo condizione;
  5. puo' essere realizzato utilizzando il meccanismo dei semafori;
  6. non puo' essere realizzato utilizzando il meccanismo dei semafori;
  7. nessuna delle affermazioni precedenti e' corretta.
4 (punti: -1.5,4)

L'algoritmo approssimato di sostituzione delle pagine in memoria principale, conosciuto come Second Chance:

  1. puo' essere considerato una approssimazione della tecnica FIFO;
  2. organizza le pagine accessibili in un vettore circolare, ed associa ad ognuna di queste pagine un indicatore booleano di pagina riferita;
  3. organizza le pagine accessibili in un vettore circolare ma non associa ad ognuna di queste pagine un indicatore booleano di pagina riferita;
  4. seleziona una pagina vittima che ha la proprieta' di essere stata riferita a partire dalla precedente scansione del vettore circolare;
  5. ad ogni invocazione, marca come non riferita ogni pagina scandita;
  6. ad ogni invocazione, marca come riferita ogni pagina scandita;
  7. nessuna delle affermazioni precedenti e' corretta.
5 (punti: -0.5, 0.6)

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

  1. (punti: 4) Assegnare questo insieme di processi ad un processore in base alla politica Round Robin considerando un quanto di tempo di 4 millisecondi.
  2. (punti: 2) Calcolare il valor medio del tempo di attesa dei processi.
  3. (punti: 2) Calcolare il valor medio del tempo di turnaround dei processi.
7. (punti: 5.4)

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.