Sistemi Operativi e Laboratorio, Prova del 5/4/2016

Documenti analoghi
Sistemi Operativi e Laboratorio, Prova del?/?/?

Sistemi Operativi e Laboratorio, Prova del?/?/?

Sistemi Operativi e Laboratorio, Prova del 10/4/2018 compito B

ESERCIZIO Cambio Di Contesto: System Call (1)

Sistemi Operativi e Laboratorio, Prova del 6/4/2017 versione A

Sistemi Operativi e Laboratorio, Prova del 6/4/2017 versione B

Sistemi Operativi e Laboratorio, Prova del 15/06/2016

Sistemi Operativi e Laboratorio, Prova del 15/01/2014

Sistemi Operativi e Laboratorio, Prova del 19/12/2014

Sistemi Operativi e Laboratorio, Prova del 9/9/2014

Sistemi Operativi e Laboratorio, Prova del 9/9/2016

Sistemi Operativi e Laboratorio, Prova del 05/02/2014

Sistemi Operativi e Laboratorio, Prova del 16/2/2015

TERMINA ESECUZIONE A B =85 85 C =90 90 D = E = INIZIA ESECUZIONE

ESERCIZIO SincrAmbGlob-1

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

SEMAFORI SEMAFORI. Sul semaforo sono ammesse solo due operazioni (primitive)

LABORATORIO DI SISTEMI OPERATIVI

Sistemi Operativi e Laboratorio, Prova del 16/1/2015

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Libreria Linux Threads. Threads nel S.O. Linux. Primitive per la gestione dei thread. Portabilità: libreria pthreads (Posix).

Il Concetto di Processo

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Il Concetto di Processo

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Il nucleo di un sistema a processi

Il nucleo di un sistema a processi

Processi e Thread. Meccanismi di IPC (1)

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sistemi operativi. Lez. 9: primitive per la concorrenza i semafori

Corso di Laboratorio di Sistemi Operativi

SOLUZIONE. ESERCIZIO PRODUTTORE CONSUMATORE (semafori)

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Le risorse. Alcune definizioni

Sistemi Operativi 1. Lezione IV: Processi e thread. Mattia Monga. 11 marzo 2008

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sistemi Operativi (modulo di Informatica II) I processi

Gestione dei Processi

Monitor. Le procedure entry sono le sole operazioni che possono essere utilizzate dai processi per accedere alle variabili comuni.

Chiamata di procedura remota

Sistemi Operativi Prova scritta per coloro che non hanno svolto le esercitazioni con valutazione 27 Febbraio 2008

Esercizi di utilizzo del semaforo semplice di competizione per l'uso di una risorsa comune

Concetto di Processo Scheduling dei Processi Operazioni sui Processi Processi cooperanti Comunicazione tra processi

NUCLEO DI UN SISTEMA A PROCESSI

Soluzioni ai problemi di Mutua Esclusione Primitive di sincronizzazione. Soluzioni ai problemi di Mutua EsclusionePrimitive di sincronizzazione

Bootstrap. Bootstrap. Shutdown. Struttura di un SO. Elementi principali di un SO:

Sistema operativo e processi. Il Sistema Operativo ed i Processi. Il sistema operativo. Il sistema operativo

Sistemi operativi - Concetti ed esempi -Settima edizione

Sistemi Operativi 1. Mattia Monga. 11 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

SEMAFORI. Semaforo. s--; Il valore di un semaforo s è legato al numero delle operazioni wait e signal eseguite su di esso dalla relazione:

Sistemi Operativi. Lezione 3 Processi e Thread

Processi e thread. Concetto di processo

Il Concetto di Processo

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Richiami sui Concetti Fondamentali dei Processi

Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 9 problema 2 6 problema 3 5 problema 4 10 totale 30

Capitolo 4: Processi

I Processi. Il Concetto di Processo

5 Thread. 5 Thread. 5 Thread. Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni:

Monitor [Hoare 74] Costrutto sintattico che associa un insieme di procedure/funzioni (entry) ad una struttura dati comune a più processi.

Monitor [Hoare 74] Uso del monitor

Java Thread. Thread. Un thread

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sistemi Operativi. La gestione delle risorse

IL SISTEMA OPERATIVO

Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri

I Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix.

UNIVERSITÀ DEGLI STUDI DI BERGAMO

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Processi e Thread. Concetto di processo

Sistemi Operativi T Processi e Thread

Programmazione Concorrente

Introduzione al Multithreading

TECN.PROG.SIST.INF. - Politiche di schedulazione del processore. Roberta Gerboni

Esercitazione [9] Riepilogo sui Semafori

Simulazione esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Elaborazione parallela

il Nucleo e la gestione dei processi

I THREAD O PROCESSI LEGGERI

Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 10 problema 2 5 problema 3 5 problema 4 10 totale 30

Informatica Generale 07 - Sistemi Operativi:Gestione dei processi

Sistemi Operativi T. Processi e Thread

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Corso di Linguaggi di Programmazione

Introduzione ai thread

Informatica II Sistemi Operativi DIGIP - a.a. 2015/16

Esercizi sui file. Esercizio 1. Soluzione. Domenico Cotroneo Dipartimento di Informatica e Sistemistica

Il monitor. Sistemi Operativi T AA

Comunicazione con sincronizzazione estesa

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Corso di Informatica Modulo T3 1-Nucleo e processi

Sistemi Operativi. Processi e Thread

Sistemi in tempo reale: applicazioni alla robotica. Sistemi in tempo reale: applicazioni alla robotica p.1/15

ESERCIZIO M-1 Rilocazione statica con caricamento in partizioni fisse

Transcript:

Nome: Cognome: Matricola: fila: posto: corso: Esercizio 1 (5 punti) Si consideri un processore che dispone dei registri speciali PC (program counter) e PS (program status), dello stack pointer SP e dei registri generali R1, R2, R3 e R4. In stato utente, ogni processo dispone di uno stack ad uso generale e di uno stack riservato per gestire le upcall chiamato Signal Stack (per semplicità assumiamo che ogni processo abbia un unico thread). Per predisporre all della upcall in un processo, il nucleo utilizza il Signal Stack per salvare il contesto del processo. La upcall si conclude con l istruzione RETU che ripristina la normale del processo. Al tempo t, il nucleo invia una upcall al processo P che è associata alla funzione di gestione che inizia all indirizzo 6000 (nello spazio di memoria del processo). Il signal stack del processo comincia alla locazione F0CA, il processo è in stato di pronto e il contenuto dei suoi registri speciali e generali è conservato nel suo descrittore come mostrato in tabella. DESCRITTORE DI P Stato Pronto PC 1010 PS 16F2 SP E0AA R1 3031 R2 3042 R3 3053 R4 3064 Mostrare: a) Il contenuto dei descrittori, dei registri generali e speciali, dello stack del nucleo e lo stato del processore durante la fase di estrazione della prima istruzione della funzione di gestione della upcall; b) Il contenuto dei descrittori, dei registri generali e speciali, dello stack del nucleo e lo stato del processore durante la fase di estrazione dell istruzione RETU con la quale termina la upcall; c) Il contenuto dei descrittori, dei registri generali e speciali, dello stack del nucleo e lo stato del processore durante la fase di estrazione dell istruzione eseguita subito dopo la RETU. a) Contenuto dei descrittori, dei registri generali e speciali, dello stack del nucleo e lo stato del processore durante la fase di estrazione della prima istruzione della funzione di gestione della upcall: DESCRITTORE DI P SIGNAL STACK DI P REGISTRI SP, R1,, R4 Stato Esecuzione F0CA 1010 SP F0C4 PC 1010 F0C9 E0AA R1?? PS 16F2 F0C8 3031 R2?? SP E0AA F0C7 3042 R3?? R1 3031 F0C6 3053 R4?? R2 3042 F0C5 3064 R3 3053 F0C4 R4 3064 F0C3 PROCESSORE: Registri speciali e stato PC 6000 PS 16F2 Stato Utente b) Contenuto dei descrittori, dei registri generali e speciali, dello stack del nucleo e lo stato del processore durante la fase di estrazione dell istruzione RETU con la quale termina la upcall: DESCRITTORE DI P SIGNAL STACK DI P REGISTRI SP, R1,, R4 Stato Esecuzione F0CA 1010 SP F0C8 PC 1010 F0C9 E0AA R1 3031 PS 16F2 F0C8 R2 3042 SP E0AA F0C7 R3 3053 R1 3031 F0C6 R4 3064 R2 3042 F0C5 R3 3053 F0C4 R4 3064 F0C3

PROCESSORE: Registri speciali e stato PC 6000+?? PS 16F2 Stato Utente c) Contenuto dei descrittori, dei registri generali e speciali, dello stack del nucleo e lo stato del processore durante la fase di estrazione dell istruzione eseguita subito dopo la RETU. DESCRITTORE DI P SIGNAL STACK DI P REGISTRI SP, R1,, R4 Stato Esecuzione F0CA SP E0AA PC 1010 F0C9 R1 3031 PS 16F2 F0C8 R2 3042 SP E0AA F0C7 R3 3053 R1 3031 F0C6 R4 3064 R2 3042 F0C5 R3 3053 F0C4 R4 3064 F0C3 PROCESSORE: Registri speciali e stato PC 1010 PS 16F2 Stato Utente

Esercizio 2 (5 punti) Si consideri un processore che dispone dei seguenti registri: - i registri speciali PC (program counter) e PS (program status) e lo stack pointer SP - un banco di registri riservato allo stato utente, che comprende i registri generali R1, R2, R3, R4, - un ulteriore banco di registri riservato allo stato supervisore, che comprende i registri generali R 1, R 2, R 3, R 4. Il sistema riserva in memoria un area per il vettore di interruzione e per lo stack del nucleo. Inoltre, il processore ha un comportamento standard e salva automaticamente il minimo indispensabile sullo stack. Al tempo t il processo Pi in invoca una chiamata di sistema yield() che provoca una commutazione di contesto a favore del processo Pj, che viene messo in. Il vettore di interruzione associato alla chiamata di sistema ha il valore 0500 e la parola di stato del nucleo è 275E. Quando l interruzione viene riconosciuta, i registri del processore, i descrittori di Pi e Pj e lo stack del nucleo, che inizia alla locazione 8080, hanno i contenuti mostrati in figura. L interruzione determina l intervento del nucleo, che esegue una funzione di servizio comprendente lo scheduler. Si chiede: a) il contenuto dei descrittori, dei registri generali e speciali e dello stack del nucleo durante la fase di estrazione della prima istruzione della funzione di servizio; b) il contenuto dei descrittori, dei registri generali e speciali e dello stack del nucleo durante la fase di estrazione dell istruzione IRET con la quale termina la funzione di servizio; c) il contenuto dei descrittori, dei registri generali e speciali e dello stack del nucleo durante la fase di estrazione dell istruzione eseguita subito dopo la IRET. Stato Esec. Stato Pronto 8080 R1 1199 PC AA11 PC BAB0 8079 R2 1188 PS 26F2 PS 16F2 8078 R3 1177 SP DEC3 SP F1C0 8077 R4 1166 R1 1122 R1 2200 8076 R2 1133 R2 2211 8075 R3 1144 R3 2233 8074 REG. STATO SUPERV. R4 1155 R4 2244 8073 R 1 0012 R 2 00CC R 3 0045 PROCESSORE: Registri speciali R 4 0065 PC AB00 PS 36F2 SP DEC0 a) contenuto dei descrittori, dei registri generali e speciali e dello stack del nucleo durante la fase di estrazione della prima istruzione della funzione di servizio: Stato Esec. Stato Pronto 8080 AB00 R1 1199 PC AA11 PC BAB0 8079 36F2 R2 1188 PS 26F2 PS 16F2 8078 DEC0 R3 1177 SP DEC3 SP F1C0 8077 R4 1166 R1 1122 R1 2200 8076 R2 1133 R2 2211 8075 R3 1144 R3 2233 8074 REG. STATO SUPERV. R4 1155 R4 2244 8073 R 1 0012 R 2 00CC R 3 0045 PROCESSORE: Registri speciali R 4 0065 PC 0500 PS 275E SP 8077 b) contenuto dei descrittori, dei registri generali e speciali e dello stack del nucleo durante la fase di estrazione dell istruzione IRET con la quale termina la funzione di servizio; Stato Pronto Stato Esecuzione 8080 BAB0 R1 2200 PC AB00 PC BAB0 8079 16F2 R2 2211 PS 36F2 PS 16F2 8078 F1C0 R3 2233 SP DEC0 SP F1C0 8077 R4 2244 R1 1199 R1 2200 8076 R2 1188 R2 2211 8075

R3 1177 R3 2233 8074 REG. STATO SUPERV. R4 1166 R4 2244 8073 R 1?? R 2?? R 3?? PROCESSORE: Registri speciali R 4?? PC 0500+?? PS 275E SP 8077 c) contenuto dei descrittori, dei registri generali e speciali e dello stack del nucleo durante la fase di estrazione dell istruzione eseguita subito dopo la IRET. Stato Pronto Stato Esecuzione 8080 R1 2200 PC AB00 PC BAB0 8079 R2 2211 PS 36F2 PS 16F2 8078 R3 2233 SP DEC0 SP F1C0 8077 R4 2244 R1 1199 R1 2200 8076 R2 1188 R2 2211 8075 R3 1177 R3 2233 8074 REG. STATO SUPERV. R4 1166 R4 2244 8073 R 1?? R 2?? R 3?? PROCESSORE: Registri speciali R 4?? PC BAB0 PS 16F2 SP F1C0 Esercizio 3 (5 punti) In un sistema che implementa i thread a livello del nucleo, un processo comprende due gruppi di thread cooperanti: S1,..,Sn e T1,,Tn. I thread cooperano tramite due buffer (buffer1 e buffer2) entrambi a 10 posizioni ed utilizzati secondo il paradigma produttore consumatore. In particolare: - i thread S1,,Sn agiscono da consumatori nei confronti di buffer1, e agiscono da produttori nei confronti di buffer2. - i thread T1,,Tn agiscono da produttori nei confronti di buffer1, e agiscono da consumatori nei confronti di buffer2. Per la sincronizzazione sui due buffer condivisi si usano i seguenti semafori: - Buffer1Pieno, inizializzato al valore 10, (il valore esprime il numero di elementi disponibili nel buffer) - Buffer1Vuoto, inizializzato al valore 0, (il valore esprime il numero di elementi occupati nel buffer) - Buffer2Pieno, inizializzato al valore 10, (il valore esprime il numero di elementi disponibili nel buffer) - Buffer2Vuoto, inizializzato al valore 0, (il valore esprime il numero di elementi occupati nel buffer) Inoltre i thread utilizzano i semafori di mutua esclusione necessari per interagire correttamente. A meno delle operazioni sui semafori, il codice eseguito dai thread S1,..,Sn e dai thread T1,,Tm è riportato nello schema di soluzione. Si chiede di definire i necessari semafori di mutua esclusione e di completare lo pseudo-codice dei thread aggiungendo le chiamate alle primitive P e V necessarie per garantire un uso corretto delle strutture dati e una corretta sincronizzazione tra i thread. Si utilizza/utilizzano il/i seguente/i semaforo/i di mutua esclusione: per per per Thread S1,,Sn: Legge v da buffer1 d=fun1(v); Thread T1,,Tn: d= ; Scrive d su buffer1

Scrive d su buffer2 Legge v da buffer2 d=fun2(v); Si utilizzano i seguenti semafori di mutua esclusione: MutexBuf1 per buffer1 MutexBuf2 per buffer2 Thread S1,,Sn: P(Buffer1Vuoto); P(MutexBuf1); Legge v da buffer1 V(MutexBuf1); V(Buffer1Pieno); d=fun1(v); P(Buffer2Pieno); P(MutexBuf2); Scrive d su buffer2 V(MutexBuf2); V(Buffer2Vuoto); Thread T1,,Tn: d= ; P(Buffer1Pieno); P(MutexBuf1); Scrive d su buffer1 V(MutexBuf1); V(Buffer1Vuoto); P(Buffer2Vuoto); P(MutexBuf2); Legge v da buffer2 V(MutexBuf2); V(Buffer2Pieno); d=fun2(v); Esercizio 4 (6 punti) In una banca vi sono 10 sportelli per il servizio ai clienti, situati in una sala d aspetto. I clienti entrano nella sala d aspetto, attendono che vi sia uno sportello libero e, quando si verifica questo evento, lo individuano, lo raggiungono e ottengono il servizio voluto. Quindi liberano lo sportello e tornano in sala d aspetto per uscire dalla banca. Si consideri una formalizzazione del problema nel quale i clienti sono thread di uno stesso processo, realizzati a livello del nucleo, che si sincronizzano mediante la variabile lock per la mutua esclusione (sulla quale sono definite le operazioni lock.acquire() e lock.release()), e la variabile di condizione SportelloLibero (sulla quale sono definite le operazioni SportelloLibero.wait(lock) e sportellolibero.signal()). I thread utilizzano inoltre la variabile SportelliLiberi, di tipo intero e inizializzata al valore 10. Si chiede di completare il seguente schema di soluzione e di indicare inoltre quale thread viene riattivato quando uno sportello viene liberato. <il cliente entra nella sala d aspetto> while () //esiste uno sportello libero: il cliente lo individua e lo raggiunge// SportelliLiberi --; <il cliente ottiene il servizio richiesto> <il cliente lascia lo sportello e torna in sala d aspetto> SportelliLiberi ++; <il cliente lascia la sala d aspetto>

Viene riattivato il thread: <il cliente entra nella sala d aspetto> lock.acquire(); while (SportelliLiberi == 0) SportelloLibero.wait(lock); //esiste uno sportello libero: il cliente lo individua e lo raggiunge// SportelliLiberi --; lock.release(); <il cliente ottiene il servizio richiesto> lock.acquire(); <il cliente lascia lo sportello e torna in sala d aspetto> SportelliLiberi ++; SportelloLibero.signal(); lock.release(); <il cliente lascia la sala d aspetto> Viene riattivato il thread: uno a caso tra quelli in attesa. Se nessun thread è in attesa la signal non ha effetto. Esercizio 5 (3 punti) In un sistema con thread realizzati a livello kernel, dove l unità schedulabile è il thread, sono presenti i processi P1 con thread T11, T12, T13, e P2 con thread T21 e T22. Il processore viene gestito in time sharing con quanti di tempo e coda pronti gestita in modo FIFO (politica Round Robin). Immediatamente prima del tempo t è in il thread T13, il thread T21 è sospeso sul semaforo Sem1 e i rimanenti thread sono pronti, con il seguente ordinamento nella coda pronti: (primo) T22->T12->T11 (ultimo). Inoltre nel sistema è presente il semaforo Sem2 con valore 2. Riempire la seguente tabella indicando quale thread è in se dal tempo t si verificano (in sequenza) i seguenti eventi: (a) Il thread in esegue P(Sem1) (b) Il thread in esegue V(Sem2) (c) Scade il quanto di tempo (d) Il thread in esegue P(Sem2) Valore di Sem1 / Sem1 Valore di Sem2 / Sem2 Valore di Sem1 / Sem1 (a) Il thread in esegue P(Sem1) T22 0 / T21, T13 2 / - (b) Il thread in esegue V(Sem2) T22 0 / T21, T13 3 / - (c) Scade il quanto di tempo T12 0 / T21, T13 3 / - (d) Il thread in esegue P(Sem2) T12 0 / T21, T13 2 / - Valore di Sem2 e Sem2 Esercizio 6 (3 punti) Si consideri il seguente frammento di codice: printf( A ); a = fork();

if (a!=0) { b=fork(); if (b!= 0) { printf( B ); exit(0); else printf( C ); else printf( D ); printf( E ); Il processo che esegue l intero frammento è quello che esegue le due fork, cioè il padre. Il processo generato con la prima fork è il primo figlio. Il processo generato con la seconda fork è il secondo figlio. Dire cosa stampa il padre e i due figli nel caso in cui entrambe le fork abbiano successo. Il padre stampa: Il primo figlio stampa: Il secondo figlio stampa: _ Il padre stampa: AB. Il primo figlio stampa: DE. Il secondo figlio stampa: CE. Esercizio 7 (3 punti) In un sistema con thread realizzati a livello kernel, dove l unità schedulabile è il thread, sono presenti i processi P1 con thread T11, T12, T13, e P2 con thread T21 e T22. Il processore viene gestito in time sharing con quanti di tempo e coda pronti gestita in modo FIFO (politica Round Robin).. Ad un certo istante di tempo è in il thread T11, il thread T21 è sospeso sulla variabile di condizione Cond (legata alla variabile mutex lock) e i rimanenti thread sono pronti, con il seguente ordinamento nella coda pronti: (primo) T22->T12->T13 (ultimo). Infine, le variabili di condizione sono realizzate con semantica MESA. Dire come evolve lo stato del sistema se si verificano in sequenza i seguenti eventi: thread sospesi su Cond Stato di lock / thread sospesi su lock (a) Il thread in esegue lock.release() (b) Scade il quanto di tempo (c) Il thread in esegue lock.acquire() (d) Il thread in esegue cond.wait(lock) thread sospesi su Cond Stato di lock / thread sospesi su lock (a) Il thread in esegue lock.release() T11 T21 Libero / - (b) Scade il quanto di tempo T22 T21 Libero / - (c) Il thread in esegue lock.acquire() T22 T21 Bloccato / - (d) Il thread in esegue cond.wait(lock) T12 T21, T22 Libero / -