Sistemi operativi I Appello (versione A)

Documenti analoghi
Sistemi Operativi Esercizi File System. Docente: Claudio E. Palazzi

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

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

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

Cognome e nome: Matricola: Posto:

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

Cognome e nome: Matricola: Posto: Regole dell'esame.

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

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

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

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

Laboratorio di Sistemi Operativi Simulatori

L ordinamento dei processi. Ordinamento dei processi. Fasi di ordinamento. Attribuzione della CPU 1. Materiale preparato da: A.

Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica

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

Sistemi Operativi Esercizi Gestione Memoria

Sistemi Operativi Esercizi Ordinamento Processi

Ordinamento dei processi

Architettura degli elaboratori 2 appello recupero estivo (versione A)

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

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

il tipo di parallelismo dipende dal grado di cooperazione

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

LABORATORIO DI SISTEMI OPERATIVI

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

[1.B] Si consideri un sistema con un solo processo attivo, il quale sta eseguendo la seguente porzione di codice:

ACSO Programmazione di Sistema e Concorrente

[1.B] Si consideri un sistema con un solo processo attivo, il quale sta eseguendo la seguente porzione di codice:

E-1: Scheduling dei processi

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

Architettura degli elaboratori 2 II appello (versione A)

Il software. la parte contro cui si può solo imprecare. Funzioni principali del sistema operativo

Il software. la parte contro cui si può solo imprecare. (continua) Funzioni principali del sistema operativo. Gestione della memoria principale

Sistemi Operativi Da Unix a GNU/Linux (parte 2)

SISTEMI OPERATIVI E LABORATORIO (Indirizzo Sistemi e Reti) 20 dicembre 2005

Architettura degli elaboratori 2 II appello (versione A)

Il supporto al sistema operativo

Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica

Architettura degli Elaboratori 2. tipi di scheduling. scheduling della CPU (1) scheduling. First Come First Served. First Come First Served

C: panoramica. Violetta Lonati

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

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

ESERCIZIO M-1 Rilocazione statica con caricamento in partizioni fisse

Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica

System call per la gestione di processi

Architettura degli elaboratori 2 appello recupero estivo (versione A)

System call per la gestione di processi

Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica

Seconda Esercitazione. Gestione di processi in Unix Primitive Fork, Wait, Exec

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

I Processi. Il Concetto di Processo

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

Gestione della memoria 1

Corso di Laboratorio di Sistemi Operativi A.A

Esercitazione [1] Processi e Thread

Richiami sui Concetti Fondamentali dei Processi

Addendum alle chiamate di sistema per la gestione processi. E Mumolo

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

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

Sistemi Operativi Gestione della Memoria (parte 1)

Il Gestore della Memoria. Tecnica a Partizioni Fisse e a Partizioni Variabili

Memoria Virtuale. Alessandro A. Nacci ACSO 2014/2014

Terza Esercitazione. Gestione di segnali in Unix Primitive signal e kill!

Swapping 1. Swapping 2. Gestione della memoria. Strutture di gestione 1. Strutture di gestione 2. Strutture di gestione 3

Introduzione al Multithreading

LINUX: struttura generale

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

Seconda provetta di sistemi operativi, 2/12/2010 Soluzioni

Sistemi Operativi 13 Novembre 2015

Esercitazione [2] Processi e Thread

Il Sistema Operativo Ripasso

Sistemi operativi II appello (versione A)

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

Organizzazione di un SO monolitico

Esercitazione [01] Processi e Thread

i link Unix i link Unix gli hard link (link fisici)

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

Sistemi Operativi. Lezione 3 Processi e Thread

Pag. 1. modello di esecuzione parallela

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

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

Architettura di NTFS 1

Sistemi Operativi Esercizi Ricapitolazione. Docente: Claudio E. Palazzi

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

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

Esercizio: memoria virtuale

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

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

Il sistema operativo

Controllo dei Processi 1

Corso di Informatica

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

Obiettivo della multiprogrammazione: massimizzazione dell utilizzo della CPU. Scheduling della CPU: commuta l uso della CPU tra i vari processi.

Sistemi Operativi A.A. 2010/2011

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

Gestione della memoria

Sistemi di Calcolo (A.A ) Corso di Laurea in Ingegneria Informatica e Automatica Sapienza Università di Roma

Sistemi Operativi 9/05/2012 <C>

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

Transcript:

Quesito 1 (punti 5). Considerando i processi P1, P2, P3, P4, P5 e P6, in esecuzione su un elaboratore monoprocessore multiprogrammato, con l ordine di arrivo e di esecuzione mostrato in figura 1, si determini quale/i tra le seguenti politiche di ordinamento senza uso di priorità esplicite possa(no) essere stata/e utilizzata/e: 1. First-In First-Out: indicare solo Sì o No 2. Round Robin: in caso di risposta affermativa, indicare un ampiezza di quanto temporale concordante con l ordinamento mostrato in figura 1 3. Shortest Job First (nella variante Shortest Remaining Time Next, ovvero con prerilascio): indicare solo Sì o No. Figura 1: Ordine di arrivo e di esecuzione di sei processi su un elaboratore monoprocessore multiprogrammato. Quesito 2 (punti 6). Cinque processi batch, identificati dalle lettere A E rispettivamente, arrivano all elaboratore agli istanti 0, 1, 3, 7, 8 rispettivamente. Tali processi hanno un tempo di esecuzione stimato di 2, 7, 3, 4, 1 unità di tempo rispettivamente. Per ognuna delle seguenti politiche di ordinamento: 1. Round Robin (divisione di tempo, senza priorità e con quanto di tempo di ampiezza 3) 2. Shortest Job First (nella variante Shortest Remaining Time Next, ovvero con prerilascio) determinare, trascurando i ritardi dovuti allo scambio di contesto: (i) il tempo medio di risposta; (ii) il tempo medio di attesa; (iii) il tempo medio di turn-around. I risultati finali possono essere espressi come frazioni. Nel caso di arrivi simultanei di processi allo stato di pronto, si dia la precedenza ai processi usciti dallo stato di esecuzione rispetto a quelli appena arrivati. Nel caso della politica Round Robin si assuma inoltre che i processi appena arrivati al sistema vengano inseriti in fondo alla coda dei pronti. Quesito 3 (punti 5). Dato un sistema di swapping e una memoria con zone disponibili di ampiezza: 10, 6, 14, 15, 7, 18, 12, 5 KB, in questo ordine, indicare quale area venga prescelta a fronte della richiesta di caricamento di un segmento di ampiezza 5 KB dopo aver caricato un segmento ampio 11 KB, considerando le seguenti politiche di rimpiazzo: 1. First Fit 2. Next Fit 3. Best Fit 4. Worst Fit 13 dicembre 2007 Pagina: 1 di 5

Quesito 4 (punti 8). Il programma in linguaggio C riportato in figura 2, utilizzabile in ambiente GNU/Linux, mostra come un processo utente possa creare sia un processo figlio (tramite la chiamata fork() alla linea 9) che un thread (tramite la chiamata pthread create(...) alla linea 14). I flussi di controllo risultanti dall esecuzione del programma condividono la variabile value inizializzata a 0 alla linea 3. Lo studente indichi quale valore tale variabile avrà quando sarà stampato alle linee 8, 13, 17, 21, illustrando i meccanismi di livello di sistema operativo che intervengono per produrre tale effetto. 1: #include <pthread.h> 2: #include <stdio.h> 3: int value = 0; 4: void *troublemaker(void *param); 5: int main(int argc, char *argv[]) { 6: int pid; // id (intero) del processo creato da fork() 7: pthread_t tid; // id (strutturato) del thread creato da pthread_create(...) 8: printf("parent before: value = %d\n", value); 9: pid = fork(); 10: if (pid == 0) { // ramo del processo figlio 11: /* il processo figlio crea un thread nel suo proprio ambiente 12: e gli fa eseguire la procedura "troublemaker" */ 13: printf("child before: value = %d\n", value); 14: pthread_create(&tid,null,troublemaker,null); 15: // il processo figlio attende il completamento del thread 16: pthread_join(tid,null); 17: printf("child after: value = %d\n", value);} 18: else if (pid > 0) { // ramo del processo padre 19: // il processo padre aspetta la fine del processo figlio 20: waitpid(pid,0,0); 21: printf("parent after: value = %d\n", value);} 22: } 23: void *troublemaker(void *param) { 24: value = 42;} Figura 2: Codice sorgente del programma da analizzare. Quesito 5 (punti 8). Un utente operante in ambiente GNU/Linux crea nel proprio spazio di lavoro due file, denominandoli rispettivamente./parent/pippo.txt e./parent/child/pippo.txt. Dopo aver scritto diverse quantità di testo nei due file usando il proprio editore preferito, su consiglio dell amministratore del sistema, l utente usa il comando stat per ottenere informazioni sui due file e sul file system che li ospita e le riporta diligentemente in tabella 1. Lo studente discuta il significato di tutte le voci ivi indicate e la correlazione tra loro e poi spieghi, con precisione e concisione, le ragioni per le quali l editore di testo utilizzato non confonda i due file nonostante essi abbiano entrambi nome pippo.txt. Sul file system Namelength 255 Type... ext3 Block size 4096...... Blocks Total 13547642 Blocks Free 11640686 Blocks Available 10952502 Inodes Total 6884192 Inodes Free 6772305 Sui file./parent/pippo.txt./parent/child/pippo.txt Size 27 19 Blocks 16 8 Inode 2584677 2584676 Links 1 1 Access rights...... Access time 2007-12-11 10:15:10.... 2007-12-11 10:15:25.... Modify time 2007-12-11 10:15:07.... 2007-12-11 10:15:25.... Change time 2007-12-11 10:15:10.... 2007-12-11 10:15:25.... Tabella 1: Selezione di informazioni sui file e sul file system fornite dal comando stat nel caso in esame. 13 dicembre 2007 Pagina: 2 di 5

Soluzione 1 (punti 5). 1. FIFO: Sì 2. RR: Sì, con qualsiasi quanto temporale di ampiezza maggiore o uguale al massimo tempo di esecuzione fra i processi considerati, ovvero 10 u.t. (per P3) 3. SRTN: No. Soluzione 2 (punti 6). RR (con quanto di tempo di ampiezza 3) processo A AA LEGENDA DEI SIMBOLI processo B -bbbbbbbbbbbbbbb - non ancora arrivato processo C ---ccccc x (minuscolo) attesa processo D -------dddddddddd X (maiuscolo) esecuzione processo E --------eeeeeee. coda vuota CPU coda AABBBCCCBBBDDDEBD.b.ccbbbdddeeebd....deeebbbd.. processo tempo di risposta attesa turn-around A 0 0 0+2= 2 B 1 1+3+4= 8 8+7= 15 C 2 2 2+3= 5 D 4 4+2= 6 6+4= 10 E 6 6 6+1= 7 medie 2,60 4,40 7,80 SJF SRTN (ovvero con prerilascio) processo A AA LEGENDA DEI SIMBOLI processo B -bbbbbbbbbbbbbbbb - non ancora arrivato processo C ---CCC x (minuscolo) attesa processo D -------DdDDD X (maiuscolo) esecuzione processo E --------E. coda vuota CPU coda AABCCCBDEDDDBBBBB.b.bbb.bdbbb......b... processo tempo di risposta attesa turn-around A 0 0 0+2= 2 B 1 1+3+5= 9 9+7= 16 C 0 0 0+3= 3 D 0 1 1+4= 5 E 0 0 0+1= 1 medie 0,20 2,00 5,40 13 dicembre 2007 Pagina: 3 di 5

Soluzione 3 (punti 5). Politica First Fit Next Fit Best Fit Worst Fit Area scelta 10 KB 15 KB 5 KB 15 KB Tabella 2: Riepilogo delle aree scelte dalle politiche indicate nel quesito. Soluzione 4 (punti 8). L esecuzione del programma mostrato in figura 2 richiede l intervento del sistema operativo a vari livelli. Esaminiamoli seguendo il numero d ordine della linea di programma che li chiama in gioco, assumendo una memoria virtuale paginata. linee 5 : questo è il punto di inizio del processo P risultante dall invocazione dell eseguibile prodotto dal comando di compilazione del programma (gcc -g thread.c -o thread -lpthread, dove thread.c è il nome arbitrario del file contenente il sorgente); in questo momento il S/O ha creato un singolo processo, assegnandogli la sua memoria virtuale in modalità paging-on-demand ; naturalmente, trattandosi di un programma estremamente ridotto, tutti i segmenti del suo eseguibile sono agevolmente contenuti, separatamente, in una singola pagina; poiché siamo in ambiente GNU/Linux, al processo P è stato implicitamente assegnato un thread T P che ne rappresenta il flusso di controllo linee 6-8 : in questa fase è in esecuzione il solo thread T P per conto del processo P ; alla linea 8 T P stampa su stout (il terminale di invocazione del programma) la stringa PARENT before: value = 0 linea 9 : l invocazione di fork() duplica il processo P creando un clone identico C, ma non comprensivo dei thread interni, e in modalità copy-on-write; come per P viene creato implicitamente un thread T C1 il cui PC (program counter viene posizionato alla stessa linea 9 del programma, al punto in cui la variabile pid viene assegnata; in virtù della condivisione copy-on-write, T c1 legge una copia diversa della variabile pid, che vale 0 (un valore fittizio) per T c1 e un valore positivo (vero) per T P linea 13 : qui è in esecuzione T C1, che legge la variabile value dalla copia di T P e dunque stampa sullo stesso stout di T P la stringa CHILD before: value = 0 linee 14-16 : T C1 prima crea un nuovo thread T c2, con il quale condivide tutte le risorse fisiche e logiche, e lo incarica di eseguire la procedura troublemaker e poi si pone in attesa del suo completamento linea 24 : questa è la sola istruzione eseguita da T C2, che opera sulla stessa variabile value di T C1, cui dunque viene assegnato il valore 42; in virtù della modalità di lavoro copy-on-write questa modifica non ha effetto sulla copia in possesso del processo P ; T C2 termina subito dopo l assegnamento a value linea 17 : quando T C1 riprende l esecuzione T C2 è terminato e dunque value vale 42, ragion per cui T C1 stampa su stout la stringa CHILD after: value = 42 e poi termina linee 20-21 : la terminazione di T C1 comporta anche la terminazione del processo C che non ha altri thread in esecuzione; a questo punto T P può riprendere l esecuzione, non trovando alcuna modifica nella propria copia di value, stampando dunque su stout la stringa PARENT after: value = 0 Soluzione 5 (punti 8). Esaminiamo per prima la parte di tabella 1 che concerne il file system. Si tratta di un file system di tipo ext3, molto diffuso in ambiente GNU/Linux e, in quanto derivato del mondo UNIX, a struttura di allocazione a lista indicizzata basata su i-node. La dimensione del blocco è quella classica, ossia 4 KB. Conoscendo il numero totali di blocchi (per la cui indirizzazione servono 24 dei 32 bit della parola di architettura) possiamo facilmente derivare la dimensione della partizione, che è ampia 51,6 GB, occupata solo per il 14,1%. Risulta inoltre che 688.184 blocchi tra quelli liberi sono riservati dal Sistema Operativo per uso interno (per esempio per contenere puntatori a blocchi per gli inode con indici di prima, seconda e terza indirezione) e non sono dunque disponibili per i dati di utente. Il numero di inode rappresentabili nella partizione (6.884.192, esprimibile su 24 bit) deriviamo anche il massimo numero di file rappresentabili nella partizione (un inode per file). Dal numero di indici di inode liberi deriviamo anche che la partizione attualmente contiene 111.887 file. 13 dicembre 2007 Pagina: 4 di 5

Passiamo ora alle considerazioni concernenti i due file creati dall utente evocato nel quesito. Si tratta di due file piuttosto piccoli quanto a contenuto: il primo consta di soli 27 B e il secondo 19 B. È importante però notare che, in ragione dell algoritmo di assegnazione noto come Buddy algorithm, di blocchi contigui aggregati in gruppi chiamati regioni, al primo sono stati assegnati 16 = 2 4 blocchi e al secondo 8 = 2 3, in quantità notevolmente superiore al bisogno immediato, ma dimensionati sulle aspettivative presumibili di tipici file di utente. Ci viene fornito anche il numero d ordine dell inode corrispondente ai due file, che notiamo essere consecutivo. Questo può ragionevolmente suggerire che i due file siano stati creati l uno appresso all altro. Il campo informativo Links ci dice che entrambi i file hanno un solo collegamento diretto tra directory e inode corrispondente (ossia non sono attualmente riferiti da alcun link di tipo hard). Infine notiamo la differenza concettuale tra l informazione relativa alla modifica, che concerne i dati utente del file, e al cambiamento, che invece concerne i metadati (che includono gli attributi e che ext3 salva prima nel journal e solo successivamente riflette nel file vero e proprio). Per concludere, osserviamo che l editore non può in alcun modo confondere i due file perché essi, essendo rappresentati da inode diversi, risultano al sistema come assolutamente diversi. Servirà infine osservare che la collocazione dei due file in directory diversi non ha alcuna influenza sulla garanzia di diversa identità tra essi, visto il file system in questione permette di creare link tra file ponendoli in posizioni qualunque nel file system. 13 dicembre 2007 Pagina: 5 di 5