Descrivere le caratteristiche di un sistema operativo di tipo batch multiprogrammato



Documenti analoghi
Esercitazione E6 Esercizi d esame

Scheduling della CPU:

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

Sistemi Operativi SCHEDULING DELLA CPU

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

GESTIONE DELLA MEMORIA CENTRALE

Scheduling della CPU

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

Sistemi Operativi Kernel

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

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Algoritmi di scheduling

Lo scheduling. Tipici schedulatori

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

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

SISTEMI OPERATIVI. Gestione della memoria Domande di verifica. Luca Orrù Centro Multimediale Montiferru 18/06/2007

I processi Unix. Entry della tabella dei processi

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

12. Implementazione di un File System Struttura a livelli Allocazione contigua

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco

Capitolo Silberschatz

Sistemi Operativi. 5 Gestione della memoria

Sistemi Operativi Il Sistema Operativo Windows (parte 3)

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Corso di Informatica

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

Sistemi Operativi (modulo di Informatica II) I processi

Gestione della Memoria

Gestione della memoria centrale

J. Assfalg Appunti di Sistemi Operativi

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

Laboratorio di Informatica

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

Modello dei processi. Riedizione delle slide della Prof. Di Stefano

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

scheduling Riedizione modifi cata delle slide della Prof. DI Stefano

GESTIONE DEI PROCESSI

La Gestione delle risorse Renato Agati

Corso di Sistemi di Elaborazione delle informazioni

Sistemi Operativi II Corso di Laurea in Ingegneria Informatica

Memoria Virtuale. Anche la memoria principale ha una dimensione limitata. memoria principale (memoria fisica) memoria secondaria (memoria virtuale)

SCHEDULATORI DI PROCESSO

Un sistema operativo è un insieme di programmi che consentono ad un utente di

File system II. Sistemi Operativi Lez. 20

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Il File System. Il file system

Processi e Thread. Scheduling (Schedulazione)

Scheduling della CPU

Il Sistema Operativo

Lo scheduler di UNIX (1)

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Definizione di processo. Un processo è un programma (o una parte di una programma) in corso di esecuzione

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

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

Secondo biennio Articolazione Informatica TPSIT Prova Quarta

Memoria secondaria. Struttura del disco. Scheduling del disco. Gestione dell unità a disco. Affidabilità dei dischi: RAID

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Pronto Esecuzione Attesa Terminazione

Il memory manager. Gestione della memoria centrale

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Scheduling della CPU. Concetti fondamentali. Concetti fondamentali. Concetti fondamentali. Dispatcher. Scheduler della CPU

Il file system. meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate. in memoria di massa

Approccio stratificato

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale

Sistemi Operativi 1. Mattia Monga. a.a. 2008/09. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.

ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file.

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Concetti di base. Scheduling della CPU. Diagramma della durata dei CPU-burst. Sequenza Alternata di CPU Burst e I/O Burst

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

Scheduling della CPU Simulazione in linguaggio Java

FONDAMENTI di INFORMATICA L. Mezzalira

Il sistema operativo. Sistema operativo. Multiprogrammazione. Il sistema operativo. Gestione della CPU

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Scheduling. Lo scheduler è la parte del SO che si occupa di

Il supporto al Sistema Operativo

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Cognome: Nome: Matricola: Sistemi Operativi A.A , prova scritta del 7 luglio 2006

Altri metodi di indicizzazione

Il Sistema Operativo. Funzionalità. Sistema operativo. Sistema Operativo (Software di base)

Pag. 1. Introduzione allo scheduling. Concetti fondamentali. Scheduling della CPU. Concetti fondamentali. Concetti fondamentali. Algoritmi.

Tecnologia di un Database Server (centralizzato) Gestione del buffer

Architettura di un sistema operativo

Architettura hardware

INFORMATICA. Il Sistema Operativo. di Roberta Molinari


Sistema operativo: Gestione della memoria

Il Software. Il software del PC. Il BIOS

Scheduling della CPU Introduzione ai Sistemi Operativi Corso di Abilità Informatiche Laurea in Fisica

SCHEDULING DEI PROCESSI

Lo schedulatore del kernel

Varie tipologie di memoria

Cognome e Nome Gennaio 2002 I prova in itinere

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

STRUTTURE DEI SISTEMI DI CALCOLO

Transcript:

Introduzione ai sistemi operativi Descrivere le caratteristiche di un sistema operativo di tipo batch multiprogrammato Descrivere in modo chiaro la funzionalita del cambio di contesto e le azioni che vengono eseguite dal Kernel del sistema operativo all atto di un cambio di contesto. llustrare in modo chiaro e conciso in che cosa consiste la tecnica dello Swapping, ed il motivo per cui e stata introdotta. Nella discussione evidenziare in modo chiaro i vantaggi rispetto a sistemi operativi privi di Swapping. Dire inoltre in quali tipi di sistemi (seriali, batch, multiprogrammati, time-sharing) tale tecnica e utile ed in quali no, motivando la risposta. Illustrare in modo chiaro e sintetico la differenza tra cambio di modo e di contesto. Indicare almeno una system call (anche senza parametri) UNIX/LINUX oppure NT/2000 che, qualora invocata puo provocare come effetto finale sia un cambio di modo che un cambio di contesto. Risposte non motivate non verranno ritenute valide Processi, Thread, Scheduling della CPU Si descriva lo scheduler di CPU in sistemi Windows Lo scheduling in Windows NT è di tipo a Feedback con gestione di tipo Round-Robin all'interno di ogni singola coda. Le code si differenziano in 32 diversi livelli divisi in 2 classi: 0-15 classe Variable, 16-31 classe Real-Time. Le priorità sono gestite in modo diverso nelle 2 classi. Nella classe Real-Time, tutti i thread hanno una priorità fissata che non cambia mai. Nella classe Variable, la priorità del thread è fissata ad un qualche valore iniziale assegnato, ma poi può cambiare durante il tempo di vita del thread. Tuttavia, un thread a livello di priorità 15 non può passare al livello 16. La priorità iniziale di un thread nella classe di priorità variabile viene determinata da 2 quantità: priorità base del processo e priorità base del thread. La priorità base di un processo può assumere un valore compreso tra 0 e 15. Ogni oggetto thread associato ad un processo ha la sua priorità di base. Questa può essere uguale al quella del suo processo, ma anche differire di 1 o 2 livelli. Una volta che un thread è stato attivato nella classe di priorità Variable, la sua priorità può fluttuare all'interno di questa classe ma mai scendere al di sotto della sua priorità di base. Si descriva lo scheduler di CPU in sistemi Unix tradizionali (SVR3) Lo scheduling in Unix tradizionale è di tipo a Feedback a code multiple con gestione di tipo Round-Robin all'interno di ogni singola coda. Esiste un livello di ingresso, assegnato di default ad un processo appena creato. Un processo conserva la propria priorità nel caso in cui non utilizzi l'intero quanto di tempo concessogli dal sistema, in caso contrario viene inserito nella coda a priorità minore. Nessun processo può avanzare di livello se non mediante l'utilizzo di una system call (nice) invocata con permessi da amministratore di sistema. Grazie a questa implementazione, vengono favoriti i processi I/O bound, mentre i processi CPU bound tendono a depositarsi nei livelli di priorità più bassi. Si descriva lo scheduler di CPU in sistemi Unix SVR4

Lo scheduling Unix SVR4 migliora lo scheduling Unix tradizionale. Continua ad essere di tipo a Feedback a code multiple con gestione di tipo Round-Robin all'interno di ogni singola coda, ma vengono apportate delle sostanziali modifiche. I livelli di priorità sono 160, divisi in 3 classi: Tempo reale (159-100), Kernel (99-60), Time sharing (59-0). La priorità di una coda cresce al decrescere del livello. Per evitare starvation eccessiva dei processi CPU bound, che necessariamente tendono a depositarsi nei livelli più alti, il quanto di tempo concesso al processo aumenta con il diminuire della priorità. Si descrivano i concetti di processo e thread, spiegando in particolar modo le differenze tra i due Il processo è un programma in esacuzione, all'interno di un sistema, e presenta particolari caratteristiche. E' formato dalla sequenza di istruzioni da eseguire, dai dati su cui esso opera, dallo stack e da una serie di metadati utilizzati dal sistema per eseguirlo, schedularlo e manutenerlo. Il processo mantiene un proprio stato per ogni istante di vita all'interno del sistema: può essere in stato running, ready, wait, in base alle decisioni prese dal kernel. La struttura dati che mantiene i metadati dei un particolare processo è chiamata PCB (Process Control Block). All'interno di questa struttura vengono conservate una serie di informazioni come il PID (numero unico identificativo del processo all'interno del sistema), il valore dei registri della CPU al momento dell'ultima esecuzione (in modo da ripristinare l'ambiente una volta che il processo viene rischedulato), i limiti di memoria entro i quali il processo può lavorare ed un particolare campo, chiamato Point che è un puntatore ad un'altra PCB. Il sistema mantiene le PCB, nelle proprie strutture dati, mediante delle code. Risulta chiaro quindi l'utilizzo del campo Pointer. Il thread è un concetto successivo a quello di processo. Esso è essenzialmente una traccia di esecuzione di un processo. Si capisce quindi che un processo può avere infiniti thread. Il thread condivide parte della propria immagine col processo, risultando dunque più leggero. Mentre condivide la PCB, lo spazio di indirizzamento e le istruzioni da eseguire, conserva invece una propria struttura di metadati privata (TCB Thread Control Block) ed un proprio stack privato. I moderni sistemi operativi utilizzano e fanno proprio il concetto di thread (NT è stato creato basandosi su di esso, mentre Unix è stato adattato) poiché esso risulta essere molto più conveniente in termini di velocità di creazione, di minore impiego di strutture dati da parte del sistema. Il sistema risulta dunque essere molto più snello e veloce. Descrivere l algoritmo di dispatching Round-Robin (RR), discutendo l impatto della scelta del time-slice sul comportamento dei processi I/O bound L'algoritmo Round-Robin prevede l'esecuzione dei processi Ready a turno, per un quanto di tempo specifico (slice). E' prevista prelazione, quindi un processo può essere bloccato anche se non ha utilizzato completamente il suo quanto di tempo. Questo metodo di scheduling svantaggia i processi I/O bound a favore dei processi CPU bound (che sfrutteranno l'intero quanto di tempo disponibile), dunque non è ottimale per la gestione dei processi interattivi. Vi è una criticità nella scelta del time-slice, infatti questa impatta sul numero di quanti necessari per attivare una richiesta di I/O. Se il quanto di tempo è eccessivamente piccolo, occorreranno 2 o più quanti per un'interazione I/O, penalizzando ulteriormente i processi I/O bound. Descrivere l algoritmo di dispatching Shortest-Process-Next (SPN) Utilizzando lo scheduling SPN, i processi Ready vengono mandati in esecuzione in funzione della lunghezza del loro prossimo CPU Burst (quantità di tempo di utilizzo continuato della cpu prima di liberarla), in particolare in ordine crescente di CPU Burst. Può essere prevista o meno la prelazione. I vantaggi di questo meccanismo sono dati dalla buona gestione dei processi interattivi (con prelazione). L'aspetto svantaggioso è primariamente il calcolo del prossimo CPU Burst. Descrivere l algoritmo di scheduling della CPU Highest-Response-Ratio-Next, discutendone vantaggi e svantaggi Lo scheduling Highest-Response-Ratio-Next prevede lo scheduling dei processi in base ad un fattore chiamato Rapporto di risposta (RR). L'RR è dato dal rapporto tra la somma del tempo di attesa (w) e il tempo di esecuzione (s) e il tempo di esecuzione. Per tempo di attesa si intende la quantità di tempo trascorsa dall'ultima esecuzione del processo. Per tempo di esecuzione invece la quantità di tempo che il processo intende utilizzare nella sua esecuzione (CPU Burst). Si può capire come questo rapporto favorisca i processi I/O bound, caratterizzati da piccoli valori di s, e i processi non schedulati da molto tempo, con alti valori di w. Il principale svantaggio è dato dal calcolo di s, molto complicato da applicare.

Illustrare in modo chiaro e conciso almeno due algoritmi di scheduling della CPU, evidenziando vantaggi e svantaggi di ciascuno di essi Lo scheduling più semplice in assoluto è il FCFS (First Come First Served). Questo meccanismo prevede l'esecuzione dei processi Ready esattamente nell'ordine in cui si trovano nella coda Ready. Non è prevista prelazione, dunque un processo rimane in esecuzione fino a quando non termina oppure decide di rilasciare la CPU spontaneamente. Questo scheduling è molto semplice e banale ma anche poco efficiente nei sistemi moderni. Infatti sfavorisce eccessivamente i processi I/O bound a favore dei processi CPU bound che verranno eseguiti ininterrottamente per tutta la loro durata. Un altro scheduling è quello a Feedback. Sono implementate delle code a priorità multipla. Ogni processo viene inserito in una determinata coda al momento della sua creazione. I processi della coda a priorità maggiore verranno processati prima degli altri. Un processo può mutare la propria priorità in base alla particolare politica che si vuole implementare (ad esempio in base al consumo del quanto di tempo disponibile). Il vantaggio di questa implementazione sta nel favorimento, grazie a determinate poliche, dei processi I/O bound, integrandosi perfettamente con i sistemi interattivi moderni. Gestione della memoria Si descrivano i meccanismi di paginazione a livelli multipli ed i vantaggi che essi offrono nei sistemi di memoria virtuale Utilizzando la tecnica della paginazione si procede col dividere la memoria di lavoro in parti uguali (frame) e lo spazio di indirizzamento del processo in altrettante parti di uguali dimensioni (pagine). Nel momento in cui un processo è allocato in memoria, si assegna ogni pagina ad un frame. Per manutenere questo meccanismo, si necessita di una tavola delle pagine in cui mantenere la corrispondenza tra frame di memoria e pagine dei processi. In sistemi a memoria virtuale lo spazio di indirizzi logici può essere molto ampio, impedendo quindi l'utilizzo di tavole delle pagine lineari. Si utilizzando dunque tavole delle pagine a più livelli, dove la tavola stessa è paginata. La traduzione degli indi rizzi si svolge dalla tabella esterna verso quella più interna. Con questo meccanismo i primi bit dell'indirizzo identificano una sezione, mentre i successivi rappresentano il numero logico di pagina e l'offset all'interno della pagina. Questa ottimizzazione permette un migliore utilizzo della memoria, evitando di utilizzarne in quantità eccessiva per i propri metadati Descrivere la gestione della memoria secondo lo schema a partizioni variabili Utilizzando lo schema a partizioni variabili, la memoria richiesta ed assegnata ad un processo costituisce un'intera partizione. In questo modo possiamo avere partizioni di varia grandezza e in quantità pari al numero di processo attivi nel sistema. Nel momento in cui un processo libera la memoria, viene resa disponibile la partizione appena liberata. L'allocazione dei processi in memoria può avvenire secondo diverse politiche : First fit Il processo viene allocato nel primo spazio disponibile Best fit Il processo viene allocato nello spazio più piccolo disponibile (favorisce l'allocazione di processi di grossa taglia) Worst fit Il processo viene allocato nello spazio più grande disponibile (favorisce l'allocazione di molti processi) Utilizzando lo schema a partizioni variabili si ovvia al problema della frammentazione interna (inesistente) ma si crea un grosso problema di frammentazione esterna (si verranno a creare via via partizioni sempre più frammentate e piccole). Per risolvere questo problema è possibile ricompattare le aree di memoria libere. L'unico svantaggio di questo approccio è l'elevato costo di questo processo periodico. Descrivere gli obiettivi e le caratteristiche delle tecniche di gestione del resident-set nei sistemi operativi basati su memoria virtuale Per resident-set si intende il set di pagine logiche di un programma attive in memoria. Valutare la taglia del resident-set è una scelta cruciale per le prestazioni del sistema. Minore è la sua taglia, maggiore è il grado di multiprogrammazione e minore è il tempo di swapping. Se però la taglia scende sotto una determinata soglia, si va incontro al fenomeno del thrashing, causato dalla frequenza di page fault troppo elevata. La taglia del resident-set può essere fissa, variabile o un misto dei 2. Nel primo caso si assegnano al processo un numero di frame fisso, deciso alla sua attivazione. La sostituzione

delle pagine coinvolge solo i frame del processo. Nel secondo caso il numero dei frame di un processo può variare durante la sua esecuzione. La sostituzione delle pagine può coinvolgere anche frame di altri processi. Nel terzo caso il numero dei frame è fisso, al momento dell'attivazione del processo, e la sostituzione coinvolge solo i frame del processo stesso. Periodicamente si ha una rivalutazione della taglia del resident-set, favorendo l'aumento di quella dei processi con meno località. Nella rivalutazione della taglia del resident-set si possono considerare 2 fattori: il working-set (approssimazione della località del processo) e la frequenza di page fault. La taglia del resident-set dovrebbe essere quanto più vicina a quella del working-set per sfruttare pienamente la località di un processo. Si ha però una difficoltà oggettiva nella valutazione del working-set che rende questo approccio molto complesso. Si può dunque valutare la frequenza di page fault, cercando di mantenerla all'interno di un intervallo stabilito. Nel caso in cui superi il massimo o il minimo, la taglia del resident-set dovrà essere rispettivamente aumentata o diminuita. Descrivere il fenomeno del trashing nei sistemi operativi multiprogrammati, soffermandosi sui fattori che possono favorire o meno la sua presenza, e sulle tecniche che è possibile adottare per affrontarlo Il fenomeno del thrashing si verifica nel momento in cui il livello di multiprogrammazione di un sistema diventa eccessivo. Infatti, superata una determinata soglia, i resident set risultano essere troppo piccoli e di conseguenza la frequenza dei page fault troppo alta. In questa situazione tutti i processi attivi rimangono bloccati in attesa del caricamento in memoria delle proprie pagine. Si può tentare di recuperare dal thrashing portando fuori dalla memoria alcuni processi (swap out) secondo una precisa politica: processi a più bassa priorità, con più alta frequenza di page fault, ultimi arrivati, di taglia minore o maggiore. Questi accorgimenti però risultano essere troppo costosi da attuare, poiché necessitano di strutture dati che mantengano le informazioni riguardanti i processi. Dunque non esistono logiche implementate per risolvere il thrashing, si può solo cercare di evitarlo. Descrivere l algoritmo dell orologio per la selezione di vittime nei sistemi a memoria virtuale L'algoritmo NRU, detto dell'orologio, necessita di metadati, nella tavola delle pagine, associati a ciascun frame di memoria, in particolare di un bit (reference bit) settato ad 1 nel momento in cui la pagina di quel frame è referenziata in lettura o in scrittura. Nel momento in cui si necessita di una sostituzione, il sistema operativo scorre la tavola delle pagine fino a quando non ne trova una il cui reference bit è impostato a 0 (lancetta del select). La pagina individuata viene selezionata per la sostituzione. Periodicamente il sistema operativo scorre parte della tavola e resetta i reference bit (lancetta del reset). Si può utilizzare il dirty bit in combinazione con il reference bit per ottimizzare la scelta della pagina da sostituire. La miglior pagina candidata alla sostituzione è quella con reference bit=0 && dirty bit=0, infatti questa non solo non è referenziata ma non necessita nemmeno di essere riportata in memoria. La seconda scelta è una pagina con reference bit=0 && dirty bit=1. Possono verificarsi dei casi particolari: La lancetta del select trova tutti i reference bit impostati ad 1: La lancetta dunque effettua una scansione completa, resetta tutti i reference bit per poi ricominciare la scansione. La lancetta del select trova tutti i reference bit impostati ad 1, resetta l'intera tavola e ritrova tutti i reference bit impostati ad 1: può avvenire solo nel caso in cui il processo che implementa l'algoritmo dell'orologio sia schedulato al pari di tutti gli altri processi, dunque l'operazione risulta non essere atomica. Descrivere la differenza tra il concetto di frammentazione esterna e quello di frammentazione interna per quanto riguarda l allocazione dei processi in memoria principale in ambiente non paginato. Al momento della sua allocazione in memoria, in ambiente non paginato, ad ogni processo è assegnata una partizione (variabile o fissa). La frammentazione esterna si verifica nel momento in cui la memoria rimasta libera risulta essere molto frammentata e di piccole dimensioni. In questo modo questa può essere considerata inutile per allocare nuovi processi, si ha dunque un notevole spreco di memoria. Per ovviare a questo fenomeno si può procedere ad una periodica manutenzione della memoria volta a ricompattare le partizioni (costo elevato). La frammentazione interna invece si verifica nel momento in cui un processo occupa meno memoria di quella assegnatagli dal sistema. In questo modo questa risulta essere inutilizzata e non può essere assegnata a nessun altro processo. Si risolve totalmente il fenomeno della frammentazione interna utilizzando partizioni a taglia

variabile, in questo modo ogni processo utilizza esattamente la quantità di memoria che necessita. Descrivere lo schema di paginazione a livelli multipli in sistemi a memoria virtuale, discutendo (1) la relazione tra tale schema ed la strutturazione del microcodice (in termini di cicli macchina) per la risoluzione di un TLB miss e (2) gli effetti di tale schema nel caso in cui il kernel del sistema operativo sia completamente residente in memoria di principale. Utilizzando la tecnica della paginazione si procede col dividere la memoria di lavoro in parti uguali (frame) e lo spazio di indirizzamento del processo in altrettante parti di uguali dimensioni (pagine). Nel momento in cui un processo è allocato in memoria, si assegna ogni pagina ad un frame. Per manutenere questo meccanismo, si necessita di una tavola delle pagine in cui mantenere la corrispondenza tra frame di memoria e pagine dei processi. In sistemi a memoria virtuale lo spazio di indirizzi logici può essere molto ampio, impedendo quindi l'utilizzo di tavole delle pagine lineari. Si utilizzando dunque tavole delle pagine a più livelli, dove la tavola stessa è paginata. La traduzione degli indi rizzi si svolge dalla tabella esterna verso quella più interna. Con questo meccanismo i primi bit dell'indirizzo identificano una sezione, mentre i successivi rappresentano il numero logico di pagina e l'offset all'interno della pagina. Questa ottimizzazione permette un migliore utilizzo della memoria, evitando di utilizzarne in quantità eccessiva per i propri metadati File system ed I/O Si descriva l'allocazione dei file a catena L'allocazione dei file a catena prevede che il Record di Sistema (RS) mantenga informazioni solo riguardo il primo blocco di memoria destinato a quel particolare file. Ogni blocco di memoria conterrà un puntatore al blocco successivo, formando dunque una catena. Per accedere al blocco i-esimo è necessario quindi accedere a tutti i blocchi precedenti. Questo tipo di accesso è potenzialmente molto costoso in casi di catene molto lunghe. Per limitare questo fenomeno si può avviare una ricompattazione dei blocchi. Si descriva il metodo di accesso ai file diretto Con il metodo di accesso diretto si può accedere direttamente all'i-esimo record, senza necessariamente accedere ai precedenti. Ad ogni accesso, l'indice di lettura/scrittura viene incrementato di 1. E' consentito riposizionare l'indice in un qualsiasi punto del file. E' possibile ordinare i record in base ad una chiave. In questo modo può essere usata una funzione di hash che, data una chiave, ci restituisce l'indice per accedere al file. Si descrivano i metodi di allocazione dei file, evidenziandone in modo comparativo vantaggi e svantaggi. Ci sono vari metodi utilizzati nell'allocazione dei file: Allocazione contigua Per ogni file viene allocato un insieme di blocchi contigui. Il record di sistema mantiene informazioni riguardo il primo blocco e la lunghezza del file. Con questo approccio, il file non può crescere più della massima taglia consentita dai blocchi assegnati. Si può avere frammentazione esterna che può essere risolta grazie alla ricompattazione periodica dei blocchi. Allocazione a catena - prevede che il Record di Sistema (RS) mantenga informazioni solo riguardo il primo blocco di memoria destinato a quel particolare file. Ogni blocco di memoria conterrà un puntatore al blocco successivo, formando dunque una catena. Per accedere al blocco i-esimo è necessario quindi accedere a tutti i blocchi precedenti. Questo tipo di accesso è potenzialmente molto costoso in casi di catene molto lunghe. Per limitare questo fenomeno si può avviare una ricompattazione dei blocchi. Allocazione indicizzata Ogni blocco del file è rintracciabile tramite un indice. Il recordo di sistema mantiene informazioni riguardo ogni blocco del file. La taglia massima del file dipende dal numero di blocchi impegnati dal file. Però il numero massimo di blocchi dipende dalla taglia massima del record di sistema (di solito di taglia fissa). Indicizzazione a livelli multipli Uguale all'allocazione indicizzata. La tabella dei record di sistema viene estesa utilizzando uno o più blocchi. In questo modo si limita la grandezza della tabella dei RS residente in memoria di lavoro.

Si descriva il concetto di file pointer (puntatore di lettura/scrittura) in file system convenzionali, e le sue relazioni con le operazioni base permesse sui file. Si descriva inoltre se e come viene supportata la condivisione del file pointer tra processi distinti nel file system UNIX Il file pointer è un indice che punta al record acceduto in lettura/scrittura in un determinato istante. Viene riposizionato dopo ogni operazione su file con modalità che variano in base al metodo di accesso al file utilizzato (generalmente l'apertura di un file inizializza l'indice, la chiusura lo rilascia, la lettura/scrittura di un record lo riposiziona). Il file pointer non fa parte del record di sistema. Questo permette che possa essere condiviso da più processi, in modo da creare accessi concorrenti su punti del file scorrelati. Il file system UNIX è strutturato in modo tale che un particolare descrittore, appartenente all'immagine di un processo, non punti direttamente ad un RS ma ad una tabella intermedia. Questo permette la condivisione del puntatore con altri processi, che possono dunque accedere allo stesso file. (mah!) Si descrivano i metodi di allocazione di file a catena e contiguo, evidenziandone, in modo comparativo, i relativi pregi e difetti Vedi sopra Si descriva il metodo di accesso diretto a file, includendo la descrizione delle tipologie di file che vengono supportate tramite questo metodo di accesso Con il metodo di accesso diretto si può accedere direttamente all'i-esimo record, senza necessariamente accedere ai precedenti. Ad ogni accesso, l'indice di lettura/scrittura viene incrementato di 1. E' consentito riposizionare l'indice in un qualsiasi punto del file. Questo metodo di accesso è tipico dei file diretti (caratterizzati da record di taglia e struttura fissa) e dei file hash (caratterizzati da record di taglia e struttura fissa con ordinamento per chiave). Si descriva l implementazione del file-system NTFS, inclusa la struttura delle entry della Master- File-Table (MFT). Si discuta inoltre in che modo la struttura della MFT influenza le prestazioni di accesso ai file in funzione della taglia dei file stessi Il file-system NTFS prevede la divisione dei dischi di memoria in volumi (partizioni), organizzati in cluster da 512 0 64K byte. Per ogni volume è prevista una Master File Table (MFT). Ogni elemento della MFT (di 1K o della dimensione del cluster) corrisponde ad un file. Ogni singola entry della MFT comprende il nome del file (max 255 caratteri), nome DOS (per permettere la retrocompatibilità), permessi di accesso. E' presente un particolare campo (data) che contiene informazioni per accedere al file in memoria. Nel caso di piccoli file, i dati sono immediatamente disponibili nel campo dati (file immediati implementati poiché, statisticamente, un tipico utente Windows utilizza maggiormente piccoli file). Questo accorgimento permette un accesso molto più rapito ai dati del file, disponibili già a partire dai suoi metadati. Nel caso in cui un elemento della MFT non sia sufficiente, si accorpa l'elemento successivo. Si descriva il metodo di allocazione dei file contiguo, discutendone vantaggi e svantaggi Vedi sopra Si descriva il metodo di accesso diretto a file. Si indichi inoltre, motivando la risposta, quale tra i metodi di allocazione contigua, a catena ed indicizzata (ad uno o piu livelli), supporta l accesso diretto a file in modo piu efficiente e quale in modo meno efficiente Con il metodo di accesso diretto si può accedere direttamente all'i-esimo record, senza necessariamente accedere ai precedenti. Ad ogni accesso, l'indice di lettura/scrittura viene incrementato di 1. E' consentito riposizionare l'indice in un qualsiasi punto del file. Questo metodo di accesso è tipico dei file diretti (caratterizzati da record di taglia e struttura fissa) e dei file hash (caratterizzati da record di taglia e struttura fissa con ordinamento per chiave). Accostare il metodo di accesso diretto al metodo di allocazione indicizzata è la soluzione più efficiente. Infatti si può puntare ad un qualsiasi record del file senza dover accedere in maniera ridondante ad altre sue parti (cosa che accadrebbe nei metodi di allocazione contigua od a catena.

Si descriva il metodo di allocazione dei file indicizzato, discutendone vantaggi e svantaggi Vedi sopra Si descriva l implementazione del file-system UNIX, inclusa la struttura di un i-node. Descrivere il metodo di allocazione di file basato su indicizzazione a livelli multipli Descrivere il metodo di allocazione di file a catena Descrivere il metodo di accesso sequenziale indicizzato ad un file Descrivere le cause alla base dei problemi di consistenza del file system, discutendo le soluzioni per la gestione dei blocchi (liberi/occupati) sui dispositivi tipicamente adottate dalle applicazioni per il recupero della consistenza Gestione dei buffer e I/O scheduling Descrivere le differenti politiche di schedulazione del DISCO: FCFS, SSTF e SCAN e descrivere quali di queste tende a privilegiare le tracce centrali rispetto a quelle periferiche (interne ed esterne) di un disco. Descrivere le caratteristiche e le differenze tra i due algoritmi di schedulazione del disco C-SCAN e F-SCAN evidenziando, in modo comparato, svantaggi e vantaggi. Descrivere gli algoritmi di schedulazione del disco SCAN, CSCAN ed FSCAN, discutendone vantaggi e svantaggi