Sei sulla pagina 1di 4

SISTEMI OPERATIVI NUOVO ORDINAMENTO Soluzioni del III appello 2012

Cognome: Matricola: Nome:

1. Ricordate che non potete usare calcolatrici o materiale didattico. 2. Ricordate che potete consegnare al massimo tre prove scritte per anno accademico.

ESERCIZI RELATIVI ALLA PARTE DI TEORIA DEL CORSO (15 punti)


ESERCIZIO 1 (5 punti) Processi (1.1) Completare lo schema di soluzione al problema classico di sincronizzazione dei lettori-scrittori: semafori, variabili significative e loro inizializzazione: sem mutex = 1 sem scrittura = 1 int num_lettori = 0 Processo Scrittore: forever { P(scrittura); <scrive> V(scrittura); } Processo Lettore: forever { P(mutex); numlettori++; if (numlettori == 1) P(scrittura); V(mutex); <legge> P(mutex); numlettori--; if (numlettori == 0) V(scrittura); V(mutex); } (1.2) Indicare se le seguenti definizioni sono corrette o sbagliate motivando le risposte: per le risposte ritenute corrette aggiungere qualche dettaglio a supporto, per quelle ritenute errate spiegare il motivo dell'errore. NB: nel caso non venga fornita alcuna motivazione ad una risposta, la risposta verr considerata sbagliata. 1

(a) Modalit kernel : un possibile stato dei thread. falso [X ] Spiegazione/Motivazione: una delle due modalit di esecuzione previste dal dual mode. Un processo passa in modalit kernel durante l'esecuzione di una system call. (b) Vettore delle interruzioni : una pila contenente gli interrupt ancora da gestire (normalmente contenuta in memoria bassa). falso [X ] Spiegazione/Motivazione: l'array dei riferimenti agli interrupt handler (gestori delle interruzioni). (c) Scheduling a lungo termine : un meccanismo che si attiva al termine dell'esecuzione di un processo. Sceglie uno dei processi in memoria secondaria e lo carica in RAM per consentirne l'esecuzione. vero [X] Spiegazione/Motivazione: viene utilizzato quando il numero e la dimensione dei processi tale da non riuscire a mantenerli tutti in RAM. (d) TLB : un insieme di registri di CPU che contiene una porzione di tabella delle pagine. falso [X] Spiegazione/Motivazione: quella tramite registri solo una delle possibili implementazioni del TLB, utilizzabile quando questo ha piccole dimensioni. ESERCIZIO 2 (3 punti) Memoria Secondaria Illustrare (tramite un disegno corredato di opportune spiegazioni) il meccanismo di traduzione di indirizzi logici in indirizzi fisici nel caso in cui la RAM sia gestita tramite paginazione multilivello e la tabella delle pagine sia a due livelli: si veda lo schema della lezione del 3/11/11 ESERCIZIO 3 (4 punti) RAM e Memoria Virtuale (3.1) Fare un esempio che illustri il meccanismo noto come copiatura su scrittura: Si considerino un processo padre e uno dei suoi figli. Per default essi condividono le pagine in RAM. Se per il processo padre esegue un assegnamento su di una variabile globale X, la pagina di RAM contenente tale variabile non potr pi essere condivisa dai due processi. Ne verr quindi fatta una copia e mentre il processo figlio continuer ad utilizzare la pagina precedente, quello padre utilizzer la nuova pagina. (3.2) Supponiamo che il processo P abbia a disposizione 3 frame di RAM e che esegua la seguente sequenza di richieste di accesso a proprie pagine. Supponiamo inoltre che l'algoritmo di sostituzione sia LRU. Simulare l'esecuzione degli accessi richiesti, mostrando come varia il contenuto dei tre frame e calcolando il numero di page fault che si generano: sequenza accessi richiesti: 1 1 1 2 3 2 1 1 2 4 4 5 5 2 Inizio a contare il tempo da T1 2

11123211244552 1 2 3
T3 T4 T5

1 2 3

T8 T9 T5

1 2 4

T8 T9 T11

5 2 4

T12 T9 T11

2 5 4

T14 T13 T11

numero dei page fault: 5 (i primi cinque sottolineati nella sequenza) ESERCIZIO 4 (3 punti) File system, Memoria secondaria e Device (4.1) Spiegare la differenza fra device driver e device controller: Device driver e device controller sono rispettivamente le interfacce software e hardware di un device. Permettono al SO di interagire con il device stesso. (4.2) Spiegare la differenza fra inode e in-core inode: L'inode il descrittore di un file in memoria secondaria (o terziaria). Quando il file in uso da parte di qualche processo se informazioni che lo riguardano sono caricate in RAM. L'in-core inode il descrittore in RAM. Contiene informazioni extra oltre a quelle contenute nell'inode (es. se lockato). (4.3) Cos' e a che cosa serve l'algoritmo namei ? Namei permette di tradurre un path in un inode. ESERCIZI RELATIVI ALLA PARTE DI UNIX (6 punti) ESERCIZIO 1 (2 punti) (1.1) Qual l'effetto di una semop se applicata a un semaforo che non stato allocato? Restituisce -1 (1.2) In quali circostanze la terminazione di un processo produce uno zombie? Quando il processo che ha termine ha un padre che sta eseguendo del codice diverso da una wait (o waitpid). ESERCIZIO 2 (2 punti) Spiegare dettagliatamente cosa fanno e quale sar l'effetto dei seguenti comandi: (2.1) make prog1 prog2 -f mak1 make cercher le regole relative ai target prog1 e prog2 nel makefile avente nome mak1 e, se qualche dipendenza risulta essere stata aggiornata, (ri)gener prog1 e prog2. (2.2) ipcs > status riversa l'output del comando ipcs nel file status, che se non esiste viene creato e se esiste viene sovrascritto. Ipcs restituisce informazioni sulle strutture di IPC attualmente allocate. ESERCIZIO 3 (2 punti) 3

(3.1) Utilizzando le system call di IPC studiate nel modulo di laboratorio, implementare la funzione int zero(int s, int num) che realizza l'attesa dello zero sul semaforo specificato dai parametri della funzione medesima. La funzione restituisce all'ambiente chiamante -1 in caso di errore, 0 in caso di successo: #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> int zero (int s, int num) { struct sembuf cmd; cmd.sem_num = num; cmd.sem_op = 0; return semop(s, &cmd, 1); } ESERCIZI RELATIVI ALLA PARTE DI C (6 punti) ....