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

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

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

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

SOLUZIONE Istruzioni: Indirizzo logico Legittimo? Indirizzo fisico SI NO SI Dati:

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

Esercizio FAT 1. Soluzione: 1. Capacità del disco: 2 24 blocchi (3 byte=24 bit) 2

ESERCIZIO Cambio Di Contesto: System Call (1)

Sistemi Operativi Appello del 10 luglio 2017 Versione Compito A Cognome e nome: Matricola: Posto:

ESERCIZIO SincrAmbGlob-1

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

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

Università degli Studi di Padova - Corso di Laurea in Informatica

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

Cognome e nome: Matricola: Posto:

YYY02 Esercizi per Teoria. Esercizi per preparazione alla prova scritta

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

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

Sistemi Operativi. Lezione 3 Processi e Thread

Sistemi Operativi Esercizi Ricapitolazione. Docente: Claudio E. Palazzi

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

il Nucleo e la gestione dei processi

Sistemi Operativi. Il file system Casi di studio. Sistemi Operativi. Corso di laurea in Informatica. AA 2002/03 Bruschi, Rosti

Lezione 16. Esercizio 2 (paginazione( di windows) di Linux) 1: soluzione. Esercitazione finale. 10 page faults 5 soft faults

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

2. Nucleo del sistema operativo (la gestione dei processi)

Gestione della memoria

Informatica Generale 07 - Sistemi Operativi:Gestione dei processi

Il supporto al sistema operativo

I THREAD O PROCESSI LEGGERI

Esercitazione E3 File System

Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina. Linguaggio Macchina ADD A,B ISTRUZIONE SUCCESSIVA

Processi. Descrittore di Processo (PCB) Context Switch Primitive per la creazione e terminazione dei processi. Il descrittore di processo (PCB)

Sistema operativo: Gestione dei processi

System call per la gestione di processi

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

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

Spazio di indirizzamento virtuale

FONDAMENTI DI INFORMATICA Lezione n. 11

Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento

Lezione XII: La gestione delle eccezioni in MINIX

Sistemi Operativi: Concetti Introduttivi

Nota: lo studente si ricordi di inizializzare i valori delle variabili semaforo usate nella sua soluzione.

Chiamata di procedura remota

Corso di laurea in ingegneria informatica Esame di sistemi operativi 21 gennaio 2009 SOLUZIONI

Università degli Studi di Padova - Corso di Laurea in Informatica

TEORIA DEI SISTEMI OPERATIVI. Sistemi monoprogrammatie multiprogrammati

SIMULAZIONE DELLA PROVA INTERMEDIA DEL CORSO DI CALCOLATORI ELETTRONICI

Il presente plico contiene 3 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

1. Le componenti principali di un sistema operativo sono: interfaccia con l utente (interprete dei comandi e/o interfaccia

Operazioni di I/O. Schema di collegamento fra dispositivi periferici e CPU

ACSO Programmazione di Sistema e Concorrente

2. Nucleo del sistema operativo (la gestione dei processi)

Corso di Laboratorio di Sistemi Operativi

Le risorse. Alcune definizioni

Livelli del sottosistema di I/O

Funzioni, Stack e Visibilità delle Variabili in C

Sistemi Operativi. Lezione 4 I processi: implementazioni

5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche

Verso i puntatori: Cosa è una variabile?

Organizzazione di un SO monolitico

Università degli Studi di Padova - Facoltà di Scienze MM.FF.NN. - Corso di Laurea in Informatica

Sistemi Operativi (modulo di Informatica II) I processi

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

Università Ca' Foscari Venezia - Corso di Laurea in Informatica Sistemi Operativi prof. Augusto Celentano. Domande di riepilogo

LA GESTIONE DELLA I/O

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

Il Sistema Operativo

Il Sistema Operativo. Informatica Sistema Operativo 1

Prova in itinere 7 Giugno 2016 Università di Salerno

Si può simulare una struttura di directory a multilivelli con una struttura di directory a singolo livello?"

Sistemi Operativi Il Sistema Operativo Windows (parte 2)

Corso di Informatica

Università degli Studi di Cassino

Elementi di Architettura e Sistemi Operativi

Basi di Dati e Sistemi Informativi. Organizzazione fisica dei dati. Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale

Esercitazione 2: Java Thread

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread:

Il Concetto di Processo

Nel microprocessore 8086 abbiamo una gran quantità di registri

Struttura Logica del S.O:

Memoria Virtuale. Alessandro A. Nacci ACSO 2014/2014

Modi di esecuzione user / kernel

1. Che cos è un sistema multiprogrammato? Si può realizzare la multiprogrammazione

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

Informatica 3. LEZIONE 20: Ordinamento esterno. Modulo 1: Organizzazione della memoria Modulo 2: Ordinamento esterno

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

14 Struttura della memoria secondaria Struttura del disco Struttura del disco

Compito di Informatica Grafica 4 appello 27/06/2011. Nome e Cognome Numero di Matricola

Sistemi Operativi Esercizi Ricapitolazione. Docente: Claudio E. Palazzi

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Perché il linguaggio C?

Introduzione Definizioni

Sistemi Operativi 9/05/2012 <C>

il tipo di parallelismo dipende dal grado di cooperazione

Architettura degli elaboratori Docente:

Gestione della Memoria

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

SIMULAZIONE DELLA PRIMA PROVA INTERMEDIA DEL MODULO DI. CORSO DI LAUREA IN INGEGNERIA ELETTRICA ED ELETTRONICA, INGEGNERIA BIOMEDICA 21 Aprile 2015

I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore.

Transcript:

Cognome e nome: Matricola: Corso [A/B] : fila: posto: Esercizio 1 (4 punti) Un ufficio postale è dotato di un unico sportello e di un distributore di numeri per gestire un afflusso ordinato allo sportello stesso. Un generico utente che arriva all'ufficio, prende un numero di ordine di servizio (realizzato mediante la variabile intera turno inizializzata a 0). Se non c'è nessun altro utente in attesa (e quindi se il numero di turno che ha preso è uguale al valore della variabile intera stiamoservendo), attiva l'impiegato (eventualmente sospeso sulla variabile di condizione Impiegato) e si avvia allo sportello. Altrimenti, si sospende sulla condizione CodaUtenti in attesa di essere riattivato dall'impiegato. Se non ci sono utenti da servire, l impiegato si sospende sulla variabile di condizione Impiegato. Altrimenti, serve l'utente che aveva preso il numero di prenotazione uguale a stiamoservendo, ed incrementa di uno il valore di tale variabile. Quindi, passa a servire il prossimo utente (quello il cui numero di prenotazione è uguale al valore attuale di stiamoservendo). Gli utenti e l'impiegato sono thread di uno stesso processo. Per la soluzione del problema, si utilizzano i seguenti dati condivisi dai thread: turno: intero non negativo; valore iniziale 0; stiamoservendo: intero non negativo; valore iniziale 0; utentiinattesa: intero non negativo; valore iniziale 0. Contiene il numero di utenti in attesa di essere serviti allo sportello. Per gli studenti che sostengono la prova di verifica intermedia: Si chiede di completare la soluzione proposta utilizzando i meccanismi delle variabili di condizione (visti a lezione e sul libro), con la variabile MutexPosta, di tipo mutex e le variabili CodaUtenti e Impiegato, di tipo condition, il cui utilizzo è descritto sopra. Per tutti gli altri studenti: Si chiede di completare la soluzione proposta utilizzando i meccanismi della libreria pthread, con la variabile MutexPosta, di tipo mutex e le variabili CodaUtenti e Impiegato, di tipo condition, il cui utilizzo è descritto sopra. //codice dell'utente int x=turno; turno ++; utentiinattesa ++; while x>stiamoservendo //l'utente si mette in attesa // <va allo sportello per il servizio e alla fine esce> } //codice dell'impiegato while true while utentiinattesa ==0 //l'impiegato si mette in attesa // utentiinattesa --; < serve l'utente> stiamoservendo++; }

- Per gli studenti che sostengono la prova di verifica intermedia //codice dell'utente MutexPosta. Acquire(); int x=turno; turno ++; utentiinattesa ++; while x>stiamoservendo CodaUtenti.wait(&MutexPosta); //l'utente si mette in attesa // Impiegato.signal(&MutexPosta); MutexPosta. Release(); <va allo sportello per il servizio e alla fine esce> } //codice dell'impiegato while true MutexPosta. Acquire(); while utentiinattesa ==0 Impiegato.wait(&MutexPosta); //l'impiegato si mette in attesa // utentiinattesa --; MutexPosta. Release(); < serve l'utente> MutexPosta. Acquire(); stiamoservendo++; codautenti.broadcast(&mutexposta); MutexPosta. Release(); } - Per gli altri studenti //codice dell'utente pthread_mutex_lock(&mutexposta); int x=turno; turno ++; utentiinattesa ++; while x>stiamoservendo pthread_cond_wait(&codautenti,&mutexposta); //l'utente si mette in attesa // pthread_cond_signal(&impiegato); pthread_mutex_unlock(&mutexposta); <va allo sportello per il servizio e alla fine esce> } //codice dell'impiegato while true pthread_mutex_lock(&mutexposta); while utentiinattesa ==0 pthread_cond_wait(&impiegato,&mutexposta); //l'impiegato si mette in attesa // utentiinattesa --; pthread_mutex_unlock(&mutexposta); < serve l'utente> pthread_mutex_lock(&mutexposta); stiamoservendo++; pthread_cond_broadcast(&codautenti); pthread_mutex_unlock(&mutexposta); }

Esercizio 2 (4 punti) Si consideri un processore che dispone dei registri speciali PC (program counter), PS (program status) e SP (stack pointer), e di un banco di registri generali, utilizzati sia in stato utente, sia in stato supervisore, che comprende i registri R1, R2 e R3. Inoltre, il nucleo dispone di un proprio stack, che inizia all indirizzo 2020 e si espande verso il basso. Al riconoscimento di un interruzione, il processore salva sullo stack del nucleo i soli registri speciali. Il sistema operativo realizza i thread a livello del nucleo e lo schedulatore gestisce esclusivamente i thread. La politica di scheduling è a priorità e con prerilascio (un valore maggiore della priorità corrisponde a priorità maggiore). Al tempo t sono presenti nel sistema il thread T i1 del processo P i, che si trova in stato di esecuzione, e il thread T j1 del processo P j, che è in stato di attesa sul semaforo sem. In questo istante di tempo, thread T i1 invoca la chiamata di sistema: V(sem) per gli studenti che sostengono la prova di verifica intermedia; signal(sem) per tutti gli altri studenti. Immediatamente dopo il riconoscimento della chiamata di sistema, i registri del processore, i descrittori di T i1 e T j1 hanno i contenuti mostrati in tabella. Lo stack del nucleo è vuoto. Supponendo che il vettore di interruzione associato all interruzione sia 3500 e che la parola di stato del nucleo sia 376A, 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 procedura di gestione della chiamata di sistema; 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 procedura di gestione dell interruzione; 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 Attesa 2020 Priorità 5 Priorità 4 2019 SP F000 PC E000 PC A0AA 2018 R1 3001 PS 1683 PS 1688 2017 R2 3011 SP F010 SP C0CC 2016 R3 3013 R1 3000 R1 2200 2015 R2 0300 R2 2020 2014 R3 0030 R3 2002 2013 PC E0E0 PS 1682 UTENTE a) contenuto dei descrittori, dei registri generali e speciali e dello stack del nucleo durante la fase di estrazione della prima istruzione della procedura di gestione dell interruzione: Stato Stato 2020 Priorità Priorità 2019 SP PC PC 2018 R1 PS PS 2017 R2 SP SP 2016 R3 R1 R1 2015 R2 R2 2014 R3 R3 2013 PC PS 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 procedura di gestione dell interruzione; Stato Stato 2020 Priorità Priorità 2019 SP PC PC 2018 R1 PS PS 2017 R2 SP SP 2016 R3 R1 R1 2015 R2 R2 2014 R3 R3 2013

PC Sistemi Operativi e Laboratorio, Prova del 05/02/2014 PS 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 Stato 2020 Priorità Priorità 2019 SP PC PC 2018 R1 PS PS 2017 R2 SP SP 2016 R3 R1 R1 2015 R2 R2 2014 R3 R3 2013 PC PS a) contenuto dei descrittori, dei registri generali e speciali e dello stack del nucleo durante la fase di estrazione della prima istruzione della procedura di gestione dell interruzione: Stato Esec Stato Attesa 2020 E0E0 Priorità 5 Priorità 4 2019 1682 SP 2017 PC E000 PC A0AA 2018 F000 R1 3001 PS 1683 PS 1688 2017 R2 3011 SP F010 SP C0CC 2016 R3 3013 R1 3000 R1 2200 2015 R2 0300 R2 2020 2014 R3 0030 R3 2002 2013 PC 3500 PS 376A SUPERVISORE 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 procedura di gestione dell interruzione; Stato Esec Stato Pronto 2020 E0E0 Priorità 5 Priorità 4 2019 1682 SP 2017 PC E000 PC A0AA 2018 F000 R1 3001 PS 1683 PS 1688 2017 R2 3011 SP F010 SP C0CC 2016 R3 3013 R1 3000 R1 2200 2015 R2 0300 R2 2020 2014 R3 0030 R3 2002 2013 PC 3500+?? PS 376A SUPERVISORE 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 Esec Stato Pronto 2020 Priorità 5 Priorità 4 2019 SP F000 PC E000 PC A0AA 2018 R1 3001 PS 1683 PS 1688 2017 R2 3011 SP F010 SP C0CC 2016 R3 3013 R1 3000 R1 2200 2015 R2 0300 R2 2020 2014 R3 0030 R3 2002 2013

PC E0E0 PS 1682 UTENTE Esercizio 3 (4 punti) In un file system UNIX i blocchi del disco hanno ampiezza di 1Kbyte e i puntatori ai blocchi sono a 16 bit. Gli i-node contengono, oltre agli altri attributi, 10 puntatori diretti e 3 puntatori indiretti. Il primo blocco del disco ha indice logico 0. Si chiede: 1. il numero di puntatori che possono essere contenuti in un blocco indiretto; 2. l indice logico del primo blocco e dell ultimo blocco indirizzabili con puntatori diretti; 3. l indice logico del primo blocco e dell ultimo blocco indirizzabili con indirizzamento indiretto semplice; 4. Si consideri un file aperto (il cui i-node è caricato in memoria principale), la cui lunghezza corrente (in byte) è 498.600 e il cui i-node contiene i seguenti puntatori a blocchi: Puntatore 0 1 2 3 4 5 6 7 8 9 10 11 12 Valore del puntatore 900 901 942 940 971 941 972 973 974 961 800 -- -- dove il blocco indiretto 800 ha il seguente contenuto parziale: Indice di elemento nel blocco 0 1 2 3 4 5 6 7 Valore del puntatore 702 703 704 677 678 705 700 679 Dire la dimensione in blocchi del file e a quali blocchi del disco bisogna accedere per leggere 2000 bytes del file a partire dal byte 13.400. 1. Numero di puntatori che possono essere contenuti in un blocco indiretto: ; 2. Il primo e l ultimo blocco indirizzabili con puntatori diretti hanno rispettivamente indici logici: ; 3. Il primo e l ultimo blocco indirizzabili con indirizzamento indiretto semplice hanno rispettivamente indici logici: ; 4. L ultimo carattere del file è contenuto nel blocco ; quindi il file è composto da blocchi; Il primo carattere da leggere è il 13.400, ed è contenuto nel blocco di indice logico: L ultimo carattere da leggere è il numero, che è contenuto nel blocco di indice logico:. Quindi i blocchi logici da leggere sono:. I blocchi logici da leggere sono allocati nei blocchi fisici:. I blocchi fisici da leggere sono:. 1. Un indirizzo occupa 16 bit=2 bytes. Pertanto, il numero di puntatori che possono essere contenuti in un blocco indiretto è dato da 2^10/2= 512; 2. il primo e l ultimo blocco indirizzabili con puntatori diretti hanno rispettivamente indici logici 0 e 9; 3. il primo e l ultimo blocco indirizzabili con indirizzamento indiretto semplice hanno rispettivamente indici logici 10 e (10+ 512) - 1= 521; 4. l ultimo carattere del file è contenuto nel blocco (498.600-1) div 2^10= 486; quindi il file è composto da 487 blocchi; il primo carattere da leggere è il 13.400, sul quale è posizionato il puntatore di lettura, è contenuto nel blocco di indice logico: 13.400 div 2^10= 13. L ultimo carattere da leggere è il numero 13.400+2.000-1 = 15.399, che è contenuto nel blocco di indice logico: 15.399 div 2^10= 15. Quindi i blocchi logici da leggere sono il 13, 14 e 15, che rientrano nell indirizzamento indiretto singolo. Nella sequenza dei blocchi indirizzati dall indirizzamento indiretto singolo, Il puntatore corrispondente al blocco logico 13 occupa la posizione 13-10=3 del blocco fisico 800. Quindi il file system deve leggere il blocco indice di primo livello 800. All interno di questo blocco individua gli elementi 3, 4 e 5 che contengono i puntatori ai blocchi 677, 678 e 705 che devono essere letti. I blocchi da leggere sono quindi 800, 677, 678, 705

Esercizio 4 (4 punti) Un sistema simile a Windows gestisce la memoria con paginazione a domanda mediante un Working Set Manager. A un certo tempo, lo stato di occupazione della memoria (senza considerare i blocchi riservati al sistema operativo) è quello descritto nella seguente Core Map, i cui elementi hanno valore nullo se il blocco è libero, o altrimenti identificano il processo e la pagina a cui il blocco è assegnato. B,6 A,4 A,2 B,4 C,2 A,8 C,5 B,1 C,6 B,2 C,7 B,5 A,7 C,9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Nel sistema sono presenti i processi A, B e C, le cui tabelle delle pagine sono le seguenti (il campo TempoRif registra il tempo virtuale del processo al quale è avvenuto l ultimo riferimento alla pagina): Pagina Blocco TempoRif Pagina Blocco TempoRif Pagina Blocco TempoRif 0 0 0 1 1 21 4 1 2 15 8 2 23 7 2 17 3 3 3 3 4 13 9 4 16 5 4 5 5 26 9 5 20 9 6 6 10 1 6 22 11 7 27 5 7 7 25 5 8 19 4 8 8 9 9 9 28 6 Processo A - 5 Processo B - 4 Processo C - 6 A ogni processo è assegnato un WorkingSet Ammissibile di 4 pagine. Per ogni pagina riferita da un processo che avanza, si procede nel modo seguente: Se la pagina è presente in memoria, si scrive il valore attuale del tempo virtuale del processo nel campo TempoRif della tabella delle pagine. Se si verifica un PageFault, la pagina riferita viene caricata in un blocco disponibile (anche se il numero di pagine caricate, o insieme residente, supera la dimensione del Working Set Ammissibile), registrando il valore attuale del tempo virtuale del processo nel campo TermpoRif. I blocchi disponibili vengono assegnati in ordine crescente di indice. Il Working Set Manager viene attivato quando il numero di blocchi disponibili si riduce a 2, e si comporta nel modo seguente: - considera i soli processi la cui dimensione dell insieme residente (numero di pagine caricate in memoria) superi quello del WorkingSet Ammissibile (che è 4 per tutti i processi) e per questi processi ordina globalmente le pagine per valori decrescenti del parametro TempoVirtuale- TempoRif, dove TempoVirtuale è il valore attuale del tempo virtuale del processo; - scarica dalla memoria le pagine secondo questo ordinamento, fino a quando il numero di blocchi disponibili diventa uguale a 8. In caso di parità tra due o più pagine si considera l ordine alfabetico dei processi. A partire dal tempo considerato il sistema evolve nel modo seguente: 1. Avanza il processo C, che ai tempi virtuali 12, 13, 14 e 15 riferisce rispettivamente le pagine 1, 2, 0, e 9 2. Avanza il processo B, che ai tempi virtuali 10, 11, 12, 13 e 14 riferisce rispettivamente le pagine 6, 5, 0, 6 e 8. Si chiede la configurazione della CoreMap e delle tabelle delle pagine dei 3 processi al termine dei punti 1 e 2. Nei casi nei quali viene eseguito il Working Set Manager indicare anche il tempo virtuale dei processi al momento dell esecuzione del Working Set Manager, e quante e quali pagine vengono rimosse. 1) Configurazione della CoreMap e delle tabelle delle pagine al termine del punto 1: Vengono caricate le pagine: Viene quindi eseguito il Working Set Manager [SI/NO]? Se SI: il Working Set Manager rimuove le pagine: Core Map e tabelle delle pagine al termine del punto 1: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Pagina Blocco TempoRif Pagina Blocco TempoRif Pagina Blocco TempoRif 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6

7 7 7 8 8 8 9 9 9 Processo A Processo B Processo C 2) Configurazione della CoreMap e delle tabelle delle pagine al termine del punto 2: Vengono caricate le pagine: Viene quindi eseguito il Working Set Manager [SI/NO]? Se SI: il Working Set Manager rimuove le pagine: Core Map e tabelle delle pagine al termine del punto 2: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Pagina Blocco TempoRif Pagina Blocco TempoRif Pagina Blocco TempoRif 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 Processo A Processo B Processo C 1) Configurazione della CoreMap e delle tabelle delle pagine al termine del punto 1: B,6 C,1 C,0 A,4 A,2 B,4 C,2 A,8 C,5 B,1 C,6 B,2 C,7 B,5 A,7 C,9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Pagina Blocco TempoRif Pagina Blocco TempoRif Pagina Blocco TempoRif 0 0 0 12 14 1 1 21 4 1 11 12 2 15 8 2 23 7 2 17 13 3 3 3 4 13 9 4 16 5 4 5 5 26 9 5 20 9 6 6 10 1 6 22 11 7 27 5 7 7 25 5 8 19 4 8 8 9 9 9 28 15 Processo A - 5 Processo B - 4 Processo C - 6 Non è stato eseguito il Working Set Manager 2) Configurazione della CoreMap e delle tabelle delle pagine al termine del punto 2: B,6 C,1 C,0 A,4 B,0 A,2 B,4 C,2 B,8 A,8 C,5 B,1 C,6 B,2 C,7 B,5 A,7 C,9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Pagina Blocco TempoRif Pagina Blocco TempoRif Pagina Blocco TempoRif 0 0 14 12 0 12 14 1 1 21 4 1 11 12 2 15 8 2 23 7 2 17 13 3 3 3 4 13 9 4 16 5 4 5 5 26 11 5 20 9 6 6 10 13 6 22 11

7 27 5 7 7 25 5 8 19 4 8 8 9 9 18 14 9 28 15 Processo A - 5 Processo B - 4 Processo C - 6 Viene quindi eseguito il Working Set Manager che rimuove 6 pagine dei soli processi B e C. Il tempo attuale del processo B è: 15 Il tempo attuale del processo C è: 16 TempoVirtuale- TempoRif delle pagine dei processi B e C: B0 3; B1 11; B2 8; B4 10; B5 4; B6 2; B9 1; C0 2; C1 4; C2 3; C5 7; C6 5; C7 11; C9 1; Vengono quindi rimosse le pagine: B1, C7, B4, B2, C5, C6 B,6 C,1 C,0 A,4 B,0 A,2 C,2 B,8 A,8 B,5 A,7 C,9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Pagina Blocco TempoRif Pagina Blocco TempoRif Pagina Blocco TempoRif 0 0 14 12 0 12 14 1 1 1 11 12 2 15 8 2 2 17 13 3 3 3 4 13 9 4 4 5 5 26 11 5 6 6 10 13 6 7 27 5 7 7 8 19 4 8 8 9 9 18 14 9 28 15 Processo A - 5 Processo B - 4 Processo C - 6 Esercizio 5 (3 punti) Si consideri un File System simile a NTFS che alloca i file in sequenze contigue (nel seguito chiamate run) individuate mediante coppie del tipo (inizio, lunghezza), dove inizio è l indice del primo blocco fisico del run e lunghezza esprime il numero di blocchi che la compongono. Ogni file è descritto da un MFT record che contiene, oltre ad altri attributi, una o più coppie (inizio, lunghezza). Il File System è ospitato da un disco con 2 facce, NTracce = 50 tracce per faccia e NSettori = 100 settori per traccia. Il tempo necessario per percorrere un settore è di 0,1 msec, conseguentemente il tempo di rotazione del disco è pari a 10 msec. Il tempo medio di esecuzione di un operazione di seek per posizionare la testina del disco da una traccia ad una adiacente è di 4 msec. Dopo un operazione di seek, il disco impiega in media un tempo pari alla metà del tempo rotazionale per posizionare la testina sul settore da leggere o scrivere. Assumiamo per semplicità che ogni blocco del file system sia allocato in un settore e si assuma che, dato un indice di blocco B, questo sia allocato nel settore individuato dalla terna <Faccia, Traccia, Settore>: Faccia = B div (NTracce x NSettori) Traccia = (B mod (NTracce x NSettori)) div NSettori Settore = (B mod (NTracce x NSettori)) mod NSettori dove div è la divisione intera e mod restituisce il resto della divisione. Si consideri il file Stromboli, il cui MFT record definisce, nell ordine, i seguenti run contigui: 1. (4000, 20), che contiene i blocchi fisici corrispondenti ai blocchi logici di indici compresi in [0,20) 2. (2000, 15), che contiene i blocchi fisici corrispondenti ai blocchi logici di indici compresi in [20,35) Si calcoli il tempo necessario per leggere l intero file Stromboli, supponendo che le teste di lettura/scrittura siano inizialmente posizionate sulla traccia 2 e che il tempo di esecuzione delle eventuali operazioni di seek sia sempre uguale a quello medio. Il primo blocco da leggere nel run 1 si trova nel blocco fisico 4000, che è allocato nel settore: L ultimo blocco da leggere nel run 1 si trova nel blocco fisico 4019, che è allocato nel settore: Operazioni sul run 1: Numero di blocchi estratti dal run 1: blocchi Tempo necessario per estrarre i blocchi dal run 1: Il primo blocco da leggere nel run 2 si trova nel blocco fisico 2000, che è allocato nel settore:

L ultimo blocco da leggere nel run 2 si trova nel blocco fisico 2014, che è allocato nel settore: Operazioni sul run 2: Numero di blocchi estratti dal run 2: blocchi Tempo necessario per estrarre i blocchi dal run 1: Tempo totale impiegato: Il primo blocco da leggere nel run 1 si trova nel blocco fisico 4000, che è allocato nel settore: <0, 40, 0> L ultimo blocco da leggere nel run 1 si trova nel blocco fisico 4019, che è allocato nel settore: <0, 40, 19> Operazioni sul run 1: Numero di blocchi estratti dal run 1: 20 blocchi Tempo necessario per estrarre i blocchi dal run 1: 4 msec (seek)+ 5 msec (metà tempo rotazionale) + 20* 0,1 (lettura settori) = 11 msec Il primo blocco da leggere nel run 2 si trova nel blocco fisico 2000, che è allocato nel settore: <0, 20, 0> L ultimo blocco da leggere nel run 2 si trova nel blocco fisico 2014, che è allocato nel settore: <0, 20, 14> Operazioni sul run 2: Numero di blocchi estratti dal run 2: 15 blocchi Tempo necessario per estrarre i blocchi dal run 1: 4 msec (seek)+ 5 msec (metà tempo rotazionale) + 15* 0,1 (lettura settori) = 10,5 msec Tempo totale impiegato: 21,5 msec Esercizio 6 (3 punti) Un sistema con 4 processi A, B, C, D e risorse dei tipi R1, R2, R3, R4, rispettivamente di molteplicità [5, 6, 3, 6] adotta nei confronti dello stallo la politica di riconoscimento ed eliminazione. Ad un dato istante di tempo t tutti i processi sono sospesi e si è raggiunto uno stallo, come mostrato nelle tabelle seguenti. Assegnazione attuale Esigenza Massima Esigenza residua (esclusa l assegnazione attuale) Molteplicità R1 R2 R3 R4 R1 R2 R3 R4 R1 R2 R3 R4 R1 R2 R3 R4 A 2 3 A 4 4 A 2 0 0 1 5 6 3 6 B 1 1 B 5 6 3 B 4 5 3 0 C 2 1 C 2 3 C 0 0 0 2 Disponibilità D 3 2 D 1 3 6 D 1 0 0 4 2 2 1 0 Dire quali delle seguenti azioni (da considerarsi in alternativa) elimina lo stallo: a) il processo A viene forzato a rilasciare 1 risorsa di tipo R1 b) il processo C viene forzato a rilasciare 1 risorsa di tipo R4 Ipotesi a): Stato raggiunto dopo il rilascio di un istanza di R1 da parte di A: Assegnazione attuale Esigenza Massima Esigenza residua (esclusa l assegnazione attuale) Molteplicità R1 R2 R3 R4 R1 R2 R3 R4 R1 R2 R3 R4 R1 R2 R3 R4 A A A 5 6 3 6 B B B C C C Disponibilità D D D Verifica dello stato sicuro: 1) Il processo può terminare [SI/NO] la disponibilità di R1, R2, R3, R4} diviene } 2) Il processo può terminare [SI/NO] la disponibilità di R1, R2, R3, R4} diviene } 3) Il processo può terminare [SI/NO] la disponibilità di R1, R2, R3, R4} diviene }

4) Il processo può terminare [SI/NO] la disponibilità di R1, R2, R3, R4} diviene } Di conseguenza: stallo eliminato? [SI/NO] b) Stato raggiunto dopo il rilascio di un istanza di R4 da parte di C: Assegnazione attuale Esigenza Massima Esigenza residua (esclusa l assegnazione attuale) Molteplicità R1 R2 R3 R4 R1 R2 R3 R4 R1 R2 R3 R4 R1 R2 R3 R4 A A A 5 6 3 6 B B B C C C Disponibilità D D D Verifica dello stato sicuro: 1) Il processo può terminare [SI/NO] la disponibilità di R1, R2, R3, R4} diviene } 2) Il processo può terminare [SI/NO] la disponibilità di R1, R2, R3, R4} diviene } 3) Il processo può terminare [SI/NO] la disponibilità di R1, R2, R3, R4} diviene } 4) Il processo può terminare [SI/NO] la disponibilità di R1, R2, R3, R4} diviene } Di conseguenza: stallo eliminato? [SI/NO] Ipotesi a): Stato raggiunto dopo il rilascio di un istanza di R1 da parte di A: Assegnazione attuale Esigenza Massima Esigenza residua (esclusa l assegnazione attuale) Molteplicità R1 R2 R3 R4 R1 R2 R3 R4 R1 R2 R3 R4 R1 R2 R3 R4 A 1 3 A 4 4 A 3 0 0 1 5 6 3 6 B 1 1 B 5 6 3 B 4 5 3 0 C 2 1 C 2 3 C 0 0 0 2 Disponibilità D 3 2 D 1 3 6 D 1 0 0 4 3 2 1 0 Per la verifica dello stato sicuro: Nessun processo può terminare Di conseguenza: stallo eliminato? NO b) Stato raggiunto dopo il rilascio di un istanza di R4 da parte di C: Assegnazione attuale Esigenza Massima Esigenza residua (esclusa l assegnazione attuale) Molteplicità R1 R2 R3 R4 R1 R2 R3 R4 R1 R2 R3 R4 R1 R2 R3 R4 A 2 3 A 4 4 A 2 0 0 1 5 6 3 6 B 1 1 B 5 6 3 B 4 5 3 0 C 2 C 2 3 C 0 0 0 3 Disponibilità D 3 2 D 1 3 6 D 1 0 0 4 2 2 1 1 Per la verifica dello stato sicuro: 1) Il processo A può terminare La disponibilità di R1, R2, R3, R4} diviene 4,2,1,4} 2) Il processo C può terminare La disponibilità di R1, R2, R3, R4} diviene 4,2,3,4} 3) Il processo D può terminare La disponibilità di R1, R2, R3, R4} diviene 4,5,3,6} 4) Il processo B può terminare La disponibilità di R1, R2, R3, R4} diviene 5,6,3,6} Di conseguenza: stallo eliminato? SI

Esercizio 7 (2 punti) Si consideri un sistema che gestisce il processore con politica Round Robin, con quanto di tempo di 5 msec. Lo scheduler del processore è attivato dai seguenti eventi (che possono anche verificarsi contemporaneamente): il processo in esecuzione esaurisce il quanto di tempo; il processo in esecuzione si sospende; il processo in esecuzione termina. Nel sistema sono presenti i seguenti processi, che terminano dopo aver utilizzato il processore per la durata specificata in tabella: Proc Tempo di Durata Comportamento arrivo (msec) A 1 38 Avanza fino alla terminazione senza sospendersi B 3 60 Si sospende dopo aver utilizzato il processore per 12 msec; viene riattivato dopo 3 msec C 4 15 Avanza fino alla terminazione senza sospendersi D 5 20 Si sospende dopo aver utilizzato il processore per 8 msec; viene riattivato dopo 4 msec Utilizzando la seguente tabella per seguire l evoluzione dei processi, si chiede di determinare il tempo di terminazione del processo D, Tempo evento In esec Coda pronti 0 Arriva A A Il processo D termina all istante: Tempo evento In esecuzione Coda pronti 0 A B,C,D 5 Scade qdt B C,D,A 10 Scade qdt C D,A,B 15 Scade qdt D A,B,C 20 Scade qdt A B,C,D 25 Scade qdt B C,D,A 30 Scade qdt C D,A,B 35 Scade qdt D A,B,C 38 D si sospende * A B,C 43 Scade qdt B C,D,A 45 B si sospende * C D,A 50 Termina C D A,B 55 Scade qdt A B,D 60 Scade qdt B D,A 65 Scade qdt D A,B 70 Scade qdt A B,D 75 Scade qdt B D,A 80 Scade qdt D A,B 82 Termina D A B

* dato che i processi B e D restano sospesi meno di un quanto di tempo, quando vengono riattivati la coda pronti non è cambiata e quindi mantengono la loro posizione in coda. Il processo D termina all istante 82 Esercizio 8 (2 punti) Si consideri un sistema nel quale sono definiti il semaforo sem e i processi P1, P2 e P3. Lo scheduling avviene con una politica round robin, e la politica applicata al semaforo è FIFO. Al tempo t il processo P1 è in esecuzione e il processo P2 è in coda pronti. Inoltre il semaforo sem ha valore 0 e la coda associata al semaforo contiene il processo P3. Dopo il tempo t, si verificano in sequenza i seguenti di eventi: 1) P1 esegue V(sem) P1 esegue signal(sem) per gli studenti degli anni accademici precedenti l A.A. 2013/14 2) il processo in esecuzione esegue V(sem) esegue signal(sem) per gli studenti degli anni accademici precedenti l A.A. 2013/14 3) scade il quanto di tempo scade il quanto di tempo 4) il processo in esecuzione esegue P(sem) esegue wait(sem) per gli studenti degli anni accademici precedenti l A.A. 2013/14 Si chiede di specificare quale processo è in esecuzione subito dopo ogni evento e inoltre come si modificano il valore e la coda del semaforo sem e la CodaPronti. Sequenza di eventi In Esecuzione Coda Pronti Valore di sem Coda di sem 1) P1 esegue V(sem) (o, equivalentemente, signal(sem) 2) il processo in esecuzione esegue V(sem) (o, equivalentemente, signal(sem)) 3) scade il quanto di tempo 4) Il processo in esecuzione esegue P(sem) (o, equivalentemente, wait(sem)) Sequenza di eventi In Esecuzione Coda Pronti Valore di sem Coda di sem 1) P1 esegue V(sem) (o, equivalentemente, signal(sem) 2) il processo in esecuzione esegue V(sem) (o, equivalentemente, signal(sem)) P1 P2, P3 0 - P1 P2, P3 1-3) scade il quanto di tempo P2 P3, P1 1-4) Il processo in esecuzione esegue P(sem) (o, equivalentemente, wait(sem)) P2 P3, P1 0 - Esercizio 9 (2 punti) In un sistema tipo Unix che adotta una politica di schedulazione round robin, sono definiti il semaforo sem e i processi P1 e P2. Al tempo t il processo P1 è in esecuzione, la coda pronti contiene il processo P2 e il semaforo sem ha valore 0. Dopo il tempo t si verifica la seguente sequenza di eventi: 1) P1 esegue la chiamata di sistema fork() che genera il processo P3; 2) Scade il quanto di tempo; 3) Il processo in esecuzione esegue P(sem) per gli studenti che NON fanno la prova di verifica intermedia wait(sem); 4) Il processo in esecuzione esegue V(sem) - per gli studenti che NON fanno la prova di verifica intermedia signal(sem); Si chiede di specificare quale processo è in esecuzione dopo ogni evento e inoltre come si modificano le code dei processi pronti e il valore e la coda del semaforo sem. Sequenza di eventi In Esecuzione Coda pronti Valore di sem Coda di sem

1) P1 esegue fork() Sistemi Operativi e Laboratorio, Prova del 05/02/2014 2) Scade il quanto di tempo; 3) il processo in esecuzione esegue P(sem) (wait(sem)) 4) Il processo in esecuzione esegue V(sem) (signal(sem)) Sequenza di eventi In Esecuzione Coda pronti Valore di sem Coda di sem 1) P1 esegue fork() P1 P2, P3 0-2) Scade il quanto di tempo; P2 P3, P1 0-3) il processo in esecuzione esegue P(sem) (wait(sem)) 4) Il processo in esecuzione esegue V(sem) (signal(sem)) P3 P1 0 P2 P3 P1, P2 0 - Esercizio 10 (2 punti) In un sistema il cui nucleo riconosce i processi come unica l unità di schedulazione, i thread sono realizzati a livello utente. In questo sistema, quali delle seguenti operazioni richiedono la transizione in stato supervisore? Operazione Necessario stato supervisore? (SI/NO) Eseguire un istruzione SVC per invocare una chiamata di sistema Modificare la priorità di un thread Effettuare la commutazione di contesto tra due thread dello stesso processo Effettuare la commutazione di contesto tra due processi Operazione Necessario stato supervisore? (SI/NO) Eseguire un istruzione SVC per invocare una chiamata di sistema NO Modificare la priorità di un thread NO Effettuare la commutazione di contesto tra due thread dello stesso processo NO Effettuare la commutazione di contesto tra due processi SI