Compito di Sistemi Operativi, Prof. Mancini - 18 novembre 1998


1. (punti: -1,4)

Il comando delay(cond):

  1. e' eseguibile da un'unita' disco e determina fra l'altro la sospensione dell'operazione in corso e la calibrazione delle teste di lettura/scrittura;
  2. e' eseguibile da un'unita' disco ma non determina la sospensione dell'operazione in corso e la calibrazione delle teste di lettura/scrittura;
  3. e' eseguibile all'interno di un monitor e determina fra l'altro la sospensione del processo chiamante, e il rilascio della mutua esclusione;
  4. e' eseguibile all'interno di un monitor ma non determina la sospensione del processo chiamante, e il rilascio della mutua esclusione;
  5. non e' eseguibile all'interno di un monitor ma determina fra l'altro la sospensione del processo chiamante, e il rilascio della mutua esclusione;
  6. non e' eseguibile all'interno di un monitor e non determina la sospensione del processo chiamante, e il rilascio della mutua esclusione;
  7. nessuna delle affermazioni precedenti e' corretta.


2. (punti: -1,4)

Il comando seek:

  1. determina nel modello di comunicazione sincrono la sospensione del processo che la invoca se l'invio del messaggio non puo' avvenire immediatamente;
  2. determina nel modello di comunicazione asincrono la sospensione del processo che la invoca se l'invio del messaggio non puo' avvenire immediatamente;
  3. determina nella sua forma bloccante la sospensione del processo che la invoca se l'invio del messaggio non puo' avvenire immediatamente;
  4. determina nella sua forma non bloccante la sospensione del processo che la invoca se l'invio del messaggio non puo' avvenire immediatamente;
  5. e' eseguibile da un'unita' disco, gestisce il posizionamento delle teste di lettura/scrittura sul cilindro specificato come parametro, ed il completamento dell'operazione non viene segnalato con un'interruzione;
  6. e' eseguibile da un'unita' disco, gestisce il posizionamento delle teste di lettura/scrittura sul cilindro specificato come parametro, ed il completamento dell'operazione viene segnalato con un'interruzione;
  7. e' eseguibile da un'unita' disco, non gestisce il posizionamento delle teste di lettura/scrittura sul cilindro specificato come parametro, ed il completamento dell'operazione non viene segnalato con un'interruzione;
  8. e' eseguibile da un'unita' disco, non gestisce il posizionamento delle teste di lettura/scrittura sul cilindro specificato come parametro, ed il completamento dell'operazione viene segnalato con un'interruzione;
  9. nessuna delle affermazioni precedenti e' corretta.
3. (punti: -1,4)

Nella realizzazione dei meccanismi di protezione che regolano l'attribuzione dei diritti di accesso agli utenti:

  1. la struttura dati MatriceDiProtezione e' utilizzata in pratica grazie alla sua efficienza, dato che i diritti di accesso compresi in ogni dominio di protezione possono essere rappresentati in forma compressa;
  2. la struttura dati MatriceDiProtezione e' utilizzata in pratica grazie alla sua efficienza, dato che i diritti di accesso compresi in ogni dominio di protezione riguardano la gran parte degli oggetti esistenti;
  3. la struttura dati MatriceDiProtezione non e' praticamente utilizzabile a causa della sua scarsa efficienza, dato che i diritti di accesso compresi in ogni dominio di protezione riguardano una minima parte degli oggetti esistenti.
  4. la struttura dati MatriceDiProtezione non e' praticamente utilizzabile a causa della sua scarsa efficienza, dato che i diritti di accesso compresi in ogni dominio di protezione riguardano la gran parte degli oggetti esistenti.
  5. nessuna delle affermazioni precedenti e' corretta.
 4. (punti: -1,4)

Il fenomeno conosciuto sotto il nome di thrashing indica:

  1. che le pagine di un processo sono interamente caricate in memoria principale, le assegnazioni e i rilasci di pagine di memoria avvengono esclusivamente alla generazione e alla terminazione del processo;
  2. che le pagine di un processo sono interamente caricate in memoria principale, successivi rilasci e ri-assegnazioni di pagine di memoria possono essere eseguiti un numero indeterminato di volte durante l'esecuzione;
  3. che le pagine di un processo sono interamente caricate in memoria principale inizialmente, successivi rilasci di pagine di memoria possono essere eseguiti durante l'esecuzione;
  4. solo poche pagine del processo sono caricate in memoria principale inizialmente, le altre pagine sono allocate unicamente quando sono riferite la prima volta durante l'esecuzione;
  5. la frequente alternanza di caricamenti e scaricamenti di un ristretto numero di pagine durante l'esecuzione di un processo, questo contribuisce a ridurre la sua velocita' di avanzamento;
  6. la frequente alternanza di caricamenti e scaricamenti di un ristretto numero di pagine durante l'esecuzione di un processo, questo contribuisce ad aumentare la sua velocita' di avanzamento;
  7. la scarsa alternanza di caricamenti e scaricamenti di un ristretto numero di pagine durante l'esecuzione di un processo, questo contribuisce a ridurre la sua velocita' di avanzamento;
  8. la scarsa alternanza di caricamenti e scaricamenti di un ristretto numero di pagine durante l'esecuzione di un processo, questo contribuisce ad aumentare la sua velocita' di avanzamento;
  9. nessuna delle affermazioni precedenti e' corretta.
5. (punti: 6)

Illustrare in al piu' 60 parole come puo' avvenire la migrazione in un diverso dominio di protezione di un processo Unix.
 
 

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
10
9
P3
3
11
P4
13
6
P5
7
8

a (punti: 4)

Assegnare questo insieme di processi ad un processore in base alla politica Round Robin considerando un quanto di tempo di 4 millisecondi.

b (punti: 2)

Calcolare il valore medio del tempo di attesa dei processi.

c (punti: 2)

Calcolare il valore medio del tempo di turnaround dei processi;
 
 

7. Considerare la seguente stringa di riferimenti di un processo alla memoria in un sistema con memoria virtuale

S = 1 3 5 4 6 5 1 7 4 6 3 7 6 2 4 3 1 6 3 7

a (punti: 3)

Illustrare il comportamento dell'algoritmo Second Chance di sostituzione delle pagine per una memoria fisica di 5 blocchi. Calcolare il numero di page fault che si verificano.

b (punti: 3)

Illustrare il comportamento dell'algoritmo LRU di sostituzione delle pagine per una memoria fisica di 5 blocchi. Calcolare il numero di page fault che si verificano.

8. (punti: 10)

Utilizzare le primitive P e V definite sui semafori per garantire la consistenza di un insieme condiviso di dati fra processi lettori e processi scrittori.
 
 

9. (punti: 8)

Realizzare un Perl script efficiente che riceve dalla linea di comando una sequenza di coppie di pattern, il nome di un archivio in ingresso preceduto dall'opzione -i ed il nome di un archivio in uscita preceduto dall'opzione -o. Il programma restituisce una copia modificata dell'archivio di ingresso in quello di uscita, dove ciascuna occorrenza del primo elemento della coppia di pattern viene sostituita dal secondo elemento della coppia.
 
 
 
 


Risultati della prova


1.c
2.f
3.c
4.e

5. (dal Maestrini pag. 532, 65 parole).

Per ogni processo P, la coppia (GruppoEffettivo, NomeEffettivo)* assume normalmente il valore (GruppoReale, NomeReale). P puo' richiedere esplicitamente l'assegnazione di un valore diverso a (*) con una chiamata di sistema oppure eseguire un programma contenuto nell'archivio Fi: In questo caso l'exec assegna a (*) il valore corrispondente al proprietario di Fi, ricavato dal descrittore di Fi, se e' vera la variabile SetUId nel descrittore.


6.

a) Algoritmo Round Robin con quanto = 4 millisecondi:
 
P1
P3
P1
P5
P3
P2
P1
P4
P5
P3
P2
P1
P4
P2
0-4
4-8
8-12
12-16
16-20
20-24
24-28
28-32
32-36
36-40
40-43
43-46
46-48
48-49

b) media tempo di attesa dei processi: 136/5
c) valore medio del tempo di turnaround dei processi: 185/5


7.

a) Algoritmo Second Chance (pag. 473 del Maestrini):
 
 
TurnoMS

TurnoMS e' inizializzato a 4.
 
 
1
3
5
4
6
5
1
7
4
6
3
7
6
2
4
3
1
6
3
7
0
11
11
11
11
11
11
11
71
71
71
71
71
71
71
71
71
70
70
70
71
1
 
31
31
31
31
31
31
30
30
30
31
31
31
30
30
31
30
30
31
31
2
   
51
51
51
51
51
50
50
50
50
50
50
21
21
21
20
20
20
20
3
     
41
41
41
41
40
41
41
41
41
41
41
41
41
11
11
11
11
4
       
61
61
61
60
60
61
61
61
61
61
61
61
60
61
61
61
 
p
p
p
p
p
   
p
         
p
   
p
     

  Numero di page fault: 5+3

b. Algoritmo LRU (pag. 469 del Maestrini):
 
 
Pagina riferita
 
1
3
5
4
6
5
1
7
4
6
3
7
6
2
4
3
1
6
3
7
0
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
7
1
 
3
3
3
3
3
3
7
7
7
7
7
7
7
7
7
1
1
1
1
2
   
5
5
5
5
5
5
5
5
3
3
3
3
3
3
3
3
3
3
3
     
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
       
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
 
p
p
p
p
p
   
p
   
p
   
p
   
p
   
p

  Numero di page fault: 5+5


8.

semaphore mutex=1, db=1;
int rc=0;

void Lettore()
   {
   P(mutex);
   rc++;
   if (rc==1) P(db);
   V(mutex);
   LetturaDB();
   P(mutex);
   rc--;
   if (rc==0) V(db);
   V(mutex);
   }

void Scrittore()
   {
   P(db);
   ScritturaDB();
   V(db);
   }

9.

per esercizio...


- 18 novembre 1998






Si ringraziano i volenterosi studenti Alessandro Cagnetti e Daniele Giabbai.