C1. MEMORIA CENTRALE Memoria Ampio vettore di parole o byte. Vede soltanto un flusso di indirizzi di memoria e non sa come questi sono generati.

Documenti analoghi
Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Architettura degli elaboratori Docente:

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Sistemi Operativi Esercizi Gestione Memoria

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

La gestione dell I/O (Cap. 5, Tanenbaum)

Il Sistema Operativo fa parte del software di base; e` costituito da un insieme di programmi che interagiscono e cooperano per:

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

LA MEMORIA NEL CALCOLATORE

Memoria secondaria. Sistemi Operativi mod. B 14.1

Informatica 10. appunti dalla lezione del 16/11/2010

Controllo I/O Costituito dai driver dei dispositivi e dai gestori dei segnali d interruzione.

Solitamente la capacità è minore di un disco magnetico, ma la velocità è molto più alta.

Sistemi Operativi. Sottosistema di I/O

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

File System. Capitolo 13

SISTEMI OPERATIVI. Realizzazione del file system. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II)

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

La gerarchia delle memorie

I sistemi operativi (prima parte) Agostino Lorenzi I sistemi operativi - Atlas

Sistemi Operativi: Prof.ssa A. Rescigno Anno Acc Esercitazione. Memoria virtuale

SISTEMI OPERATIVI. Gestione della memoria. Gestione della memoria. Partizionamento Paginazione Segmentazione Memoria virtuale. 08.

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

FILE E INDICI Architettura DBMS

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

Note_Batch_Application 04/02/2011

Corso di Calcolatori Elettronici I

(1) (2) (3) (4) 11 nessuno/a (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

1. I dispositivi periferici

Il Sottosistema di Memoria

9. Memoria Virtuale. 9. Memoria Virtuale. 9. Memoria Virtuale

Procedura operativa per la gestione della funzione di formazione classi prime

Lezione 2 Chiamate di procedura e risposta alle interruzioni

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

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

Capitolo Silberschatz

interoperabilità fra dispositivi forniti da diversi produttori; superare i problemi legati alla limitazione del numero di risorse.

Sistemi Operativi. Organizzazione logica ed implementazione di un File System

Strutture di accesso ai dati: B + -tree

1 DESCRIZIONE DELLE FUNZIONI REGISTRAZIONE UTENZE INTERNET Caricamento utente internet (data entry)... 3

DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE.

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

12 Memoria secondaria

File System. Capitolo Silberschatz

Interfacciamento di periferiche I/O al μp 8088

Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O

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

Introduzione alle macchine a stati (non definitivo)

INTRODUZIONE ALLE BASI DATI RELAZIONALI

I dischi ottici. Istituzioni di Informatica -- Rossano Gaeta 43

Diagrammi a blocchi 1

GUIDA RAPIDA EDILCONNECT

WINDOWS Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni

Architettura generale del calcolatore Hardware (tutto ciò che e tangibile) Software (tutto ciò che non e tangibile)

LabVIEW parte II. Ing. Gianfranco Miele November 3, 2010

2) FILE BINARI: è una sequenza di byte avente una corrispondenza uno a uno con la sequenza ricevuta dal dispositivo esterno.

Un semplice commutatore a pacchetto

Struttura dei dischi

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

SISTEMA DI CONTROLLO E GESTIONE STAZIONI DI RICARICA E-CORNER PER VEICOLI ELETTRICI

WINDOWS TERMINAL SERVER PER L ACCESSO REMOTO AL SISTEMA DI PROTOCOLLO INFORMATICO

Indice. Introduzione Collegamento iniziale Identificazione della sede operativa (sede di lavoro) 5

Heap e code di priorità

Il Sistema Operativo

Nastro magnetico. Gestione della memoria di massa. Disco magnetico. Disco magnetico. Usato in passato come dispositivo di memorizzazione secondaria

ARCHITETTURA FISICA DEL SISTEMA

Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette

Sicurezza del File System

Memoria Virtuale e I/O

Procedura tecnica di accreditamento dei Registrar

= 0, 098 ms. Da cui si ricava t 2 medio

Il Sottosistema di Memoria

EXCEL: FORMATTAZIONE E FORMULE

La memoria principale

Corso di Informatica

Gestione di files Motivazioni

Manuale utente Soggetto Promotore Erogatore Politiche Attive

La memoria secondaria

Alcune idee sui sistemi software e la loro architettura

Implementazione del File System

Elementi base per la realizzazione dell unità di calcolo

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE

Esempi di attribuzione dei seggi

Sommario. Processi e Programmi. Che cosa e un Processo? Lezione 5 Processi e Threads

Realizzazione del file system

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD

Manuale Sito Videotrend

Memorie Caratteristiche principali

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

Memorizzazione dei dati: Dischi e File

Manutenzione periodica al PIANO DEI CONTI

Sistemi operativi. Motivazione. Tipi di software. Sistemi operativi. Un sistema operativo (SO) e un insieme di programmi che gestiscono le funzioni

Informatica e Informatica di Base

Stampa ed eliminazione dei processi in attesa Come riconoscere gli errori di formattazione Verifica della stampa Posposizione della stampa

File system. Realizzazione del file system. Struttura del file system. Struttura del file system. Realizzazione del file system

Fondamenti VBA. Che cos è VBA

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

Transcript:

C1. MEMORIA CENTRALE Memoria Ampio vettore di parole o byte. Vede soltanto un flusso di indirizzi di memoria e non sa come questi sono generati. Registri base e limite Contengono rispettivamente il più piccolo indirizzo legale della memoria fisica e la dimensione dell intervallo ammesso. Ogni indirizzo generato in modalità utente è confrontato con i valori contenuti nei due registri, in modo da proteggere il sistema operativo dagli accessi utente e il processo utente A dal processo utente B. Se un indirizzo generato è fuori dai margini, viene inviato un segnale d eccezione. Sono modificabili solo dal sistema operativo. Indirizzi logici Indirizzi generati dalla CPU durante il suo funzionamento Indirizzi fisici Indirizzi usati dall unità di memoria Associazione degli indirizzi Fase di compilazione Si sa a priori dove il processo risiederà in memoria. Genera codice assoluto. Se il processo dev essere spostato, bisogna ricompilare. Equivalenza tra indirizzi logici e indirizzi fisici. Fase di caricamento In fase di compilazione non è noto dove risiederà il processo in memoria. Genera codice rilocabile. Se il processo dev essere spostato, bisogna ricaricarlo. Equivalenza tra indirizzi logici e indirizzi fisici. Fase di esecuzione Durante l esecuzione il processo può essere spostato da un segmento all altro. Associazione ritardata fino alla fase di esecuzione. Caricamento dinamico Caricamento di una procedura in memoria solo quando questa viene richiamata. Collegamento dinamico Si differisce il collegamento della procedura fino al momento in cui questa viene chiamata. Inserisce stub nel codice generato, i quali indicano come localizzare la giusta procedura in memoria o caricarla se non è già presente. Swap-out Il processo è spostato da memoria centrale a backing store. Swap-in Il processo è spostato da backing store a memoria centrale. Allocazione contigua della memoria La memoria viene divisa in partizioni di dimensione fissa (potenzialmente non uguali!). Ogni partizione contiene un unico processo. Inizialmente tutta la memoria è a disposizione, man mano che si prosegue la memoria conterrà una serie di buchi di diverse dimensioni. Quando il processo termina e si libera la sua memoria, se il buco che si viene a creare è accanto ad altri buchi, questi si possono unire per formare un buco più grande First fit Data una richiesta di n byte, si sceglie il primo buco libero abbastanza grande Best fit Data una richiesta di n byte, si sceglie il più piccolo buco libero Worst fit Data una richiesta di n byte, si sceglie il più grande buco libero

Frammentazione esterna Lo spazio di memoria totale è sufficiente per soddisfare una richiesta, ma non è contiguo. Risolvibile con la compattazione. Frammentazione interna Memoria interna alla partizione, ma non usata dal processo. Paginazione Consente la non contiguità dello spazio degli indirizzi fisici e risolve il problema della frammentazione esterna. Persiste invece quello della frammentazione interna. La memoria fisica è divisa in blocchi di dimensioni costante, detti frame. La memoria logica è divisa in blocchi di pari dimensione, detti pagine. Ogni processo ha una tabella delle pagine. Divisione degli indirizzi Spazio degli indirizzi logici: 2 n Spazio degli indirizzi fisici: 2 m Dimensione di una pagina: 2 p Indirizzo logico Indirizzo fisico n n p p N pagina Offset m m p p N frame Offset Per determinare il numero di frame fisico a partire dal numero di pagina si può ricorrere alla tabella delle pagine (che è anch essa in memoria) o alla TLB. Ad ogni frame sono associati dei bit di protezione che esprimono se l operazione tentata sulla pagina è legittima (sto cercando di scrivere in una pagina in sola lettura?). È possibile condividere una pagina di codice tra più processi se il codice è rientrante. Paginazione gerarchica Schema in cui è paginata anche la tabella delle pagine. Indirizzo logico Indirizzo fisico n n p 1 n p 2 p N pagina Offset m m p p N frame Offset

Tabella delle pagine di tipo hash L argomento della funzione di hash è il numero della pagina virtuale e l output è il numero di pagina fisico. Le collisioni sono gestite con una lista concatenata. Tabella delle pagine invertita Unica struttura dati globale che ha un elemento per ogni frame. La ricerca del numero di frame fisico viene fatta combinando l identificatore del processo a cui è assegnato il frame col numero di pagina logica. Segmentazione Suddivisione della memoria fisica disponibile in blocchi di lunghezza fissa o variabile detti segmenti. L utente fornisce dunque indirizzi logici come coppie ordinate (numero di segmento, scostamento). Dato il numero del segmento, una tabella dei segmenti restituisce gli estremi base e limite per quel dato segmento. Se il limite è maggiore dello scostamento, si sta cercando di uscire fuori dal segmento e dev essere generata una trap. C2. MEMORIA VIRTUALE Memoria virtuale Tecnica che consente di eseguire i processi senza che questi siano completamente contenuti in memoria. Astrae la memoria centrale in un vettore molto grande e uniforme. Paginazione su richiesta Le pagine vengono caricate in memoria solo quando richieste durante l esecuzione del programma. Estremizzando, si può ricorrere alla paginazione su richiesta pura, in cui l esecuzione di un processo è avviata senza che nessuna pagina sia in memoria. Bit di validità Bit presente nella tabella delle pagine. Ci dice se la pagina è valida e presente in memoria, oppure no. Se viene tentato l accesso a una pagina contrassegnata come non valida, viene generato un page fault. In tal caso è necessario inviare un eccezione per fermare il processo, individuare un frame libero per trasferire la pagina dalla memoria secondaria e riavviare il processo. Sostituzione delle pagine Se non esistono frame liberi in memoria principale, è necessario scegliere una vittima tra le pagine presenti per poi aggiornare le tabelle di gestione ed eventualmente scrivere su disco la pagina precedentemente presente in memoria. FIFO Sostituzione secondo l ordine di arrivo OPT Sostituzione della pagina che non si userà per il periodo di tempo più lungo. Difficile da realizzare perché implica la conoscenza del futuro. LRU Sostituzione della pagina che non è stata usata per il periodo di tempo più lungo. Second chance In caso di page fault considero la pagina più vecchia. Se il suo bit di riferimento è uguale a 0, la rimuovo. Altrimenti si azzera il bit di riferimento e si analizza la precedente pagina più vecchia. Second chance migliorato Sostituisce una pagina analizzando in coppia il bit di riferimento e quello di modifica.

Disco di basso livello Partizione speciale del disco per favorire l esecuzione di certi programmi. Bypassa il file system. Algoritmi di allocazione Allocazione uniforme Se ho m frame e n processi, ad ogni processo vengono assegnati m/n frame. Allocazione proporzionale Ad ogni processo vengono assegnati un numero di frame in proporzione alla memoria richiesta rispetto alla memoria totale disponibile. Algoritmi di sostituzione Algoritmi di sostituzione globale Nella sostituzione, si sceglie un frame dall insieme di tutti i frame, anche se questo è correntemente allocato a un altro processo. Genera maggiore produttività nel sistema. Algoritmi di sostituzione locale Nella sostituzione, si sceglie un frame solo dall insieme dei frame del processo. Paginazione degenere Si verifica quando si spende più tempo per la paginazione che per l esecuzione dei processi. È causata dal sistema operativo che vede la CPU poco utilizzata e dunque decide di aumentare (troppo) il grado di multiprogrammazione. Working set Insieme delle pagine riferite negli ultimi k accessi in memoria. Resident set Insieme delle pagine residenti effettivamente in memoria. Modello dell insieme di lavoro Si basa sull analisi degli ultimi n riferimento alle pagine. Se una pagina si trova in questo insieme rimane nel resident set, altrimenti esce. La difficoltà consiste nel tenere traccia degli elementi che compongono l insieme, quindi si può usare un approssimazione di questo modello in cui se la pagina non è negli ultimi n riferimenti e non è necessario rimuoverla dal resident set, questa è mantenuta. C3. SCHEDULING DELLA CPU L esecuzione di un processo è l alternanza delle fasi di CPU burst e IO burst. In sistemi multiprogrammati sono caricati più processi in memoria e quando un processo deve attendere un evento, il sistema operativo gli sottrae il controllo della CPU per cederlo a un altro processo. È lo scheduler della CPU a selezionare uno dei processi in coda pronti per l esecuzione. Scheduling senza diritto di prelazione La CPU rimane assegnata al processo fin quando questo non la rilascia, in quanto terminato o in attesa. Scheduling con diritto di prelazione Il processo continuerebbe volentieri la sua esecuzione, ma è interrotto perché altri scalpitano. Criteri di scheduling Tempo di completamento (turnaround) Tempo tra sottomissione del processo e sua fine. Tempo di attesa Tempo di completamento a cui si sottrae tempo di esecuzione e tempo di attesa per l I/O.

Tipi di scheduling FCFS La CPU è assegnata al processo che la richiede per primo. SJF La CPU è assegnata al processo che ha la più breve lunghezza della sequenza successiva (quindi bisogna fare una predizione sul futuro) di operazioni. SRTF È la versione SJF con prelazione. Per priorità La CPU è assegnata al processo con priorità vincente. Round robin La CPU è assegnata al processo per massimo un time slice alla volta. Scheduling a code multiple con retroazione Suddivide la coda dei processi in code distinte e permette ai processi, sotto certe condizioni, di spostarsi tra le code. Scheduling in sistemi multiprocessore Se sono disponibili più unità di elaborazione, queste possono essere disponibili per l esecuzione di ogni processo nella coda. C4. MEMORIA SECONDARIA Nei dischi magnetici i dati sono memorizzati serialmente in tracce divise in settori. Le tracce sono disposte in maniera concentrica sui vari piatti e ogni piatto è dotato di una sua circuiteria di lettura/scrittura, detta testina. Le testine si muovono in blocco grazie a un braccio del disco. L insieme delle tracce corrispondenti a una certa posizione del braccio costituisce un cilindro. L efficienza di un unità disco è misurata dalla velocità di trasferimento e dal tempo di posizionamento. Un unità disco è connessa a un calcolatore attraverso un insieme di fili, detto bus di I/O. I dischi sono considerati come grandi array monodimensionali di blocchi logici. Blocco logico Minima unità di trasferimento, solitamente grande 512 B. Scheduling del disco Per mezzo della gestione dell ordine delle richieste di I/O è possibile ottimizzare i tempi di accesso. FIFO Richieste servite secondo l ordine di arrivo. SSTF Richieste servite secondo il tempo di ricerca rispetto alla posizione corrente della testina. SCAN Richieste servite prima in un senso, poi nell altro. C-SCAN Come SCAN, ma nel viaggio di ritorno non sono servite richieste. LOOK Si interrompe il viaggio quando non ci sono più richieste in una certa direzione. Formattazione del disco Prima di memorizzare dei dati, un disco dev essere diviso in settori. Questo procedimento è detto formattazione a basso livello e riempie il disco con una speciale struttura dati per ogni settore, consistente di intestazione, area dati (di solito 512 B), coda. Partizionamento Suddivide il disco in uno o più gruppi di cilindri. Formattazione logica Crea un file system.

Blocco di avviamento Molti sistemi operativi memorizzano nella ROM un bootstrap loader, il cui unico compito è quello di caricare il programma di avviamento completo secondo le disposizioni contenute nel master boot record. RAID Acronimo di Redundant Array Of Inexpensive Disk. Migliora l affidabilità della memoria secondaria tramite il mirroring (ogni disco logico è composto da due dischi fisici e le scritture si effettuano su entrambi i dischi) e/o tramite lo striping (distribuzione dei bit di ciascun byte o dei blocchi di ciascun file su più dischi). RAID 0: solo striping RAID 1: solo mirroring RAID 2: striping a livello di bit, n dischi per i codici di parità RAID 3: striping a livello di byte, un solo disco che contiene i codici di parità RAID 4: striping a livello di blocchi, un solo disco per i codici di parità RAID 5: striping a livello di blocchi, parità distribuita sui dischi RAID 6: striping a livello di blocchi, doppia parità distribuita su più dischi C5. INTERFACCIA DEL FILE SYSTEM File system Fornisce il meccanismo per la registrazione e l accesso in linea a dati e programmi appartenenti al sistema operativo e a tutti gli utenti del sistema. Consiste di un insieme di file e una struttura della directory che organizza tutti i file nel sistema. File Insieme di informazioni a cui è assegnato un nome. È la più piccola porzione di memoria secondaria logica. Può essere strutturato in diversi modi e ha un insieme di attributi associati. È un tipo di dato astratto a cui si accede tramite un puntatore (HANDLE) che non è un puntatore al primo dato del file. Sono offerte alcune system call per effettuare alcune operazioni comuni su un file: le operazioni di lettura e scrittura utilizzano un puntatore alla posizione corrente del file. Prima di operare su un file, questo va aperto con la chiamata open(). Quando è richiesta un operazione su un file, questo è individuato da un indice in una tabella dei file aperti. Solo quando il file viene chiuso con la close(), il riferimento ad esso è rimosso dalla tabella. In sistemi operativi multiutente si mantengono due livelli di tabelle: una tabella dei file aperti per ciascun processo e una tabella di sistema. Metodi di accesso al file Accesso sequenziale Informazioni del file elaborate ordinatamente, record dopo record. Accesso diretto Possibilità di leggere e scrivere direttamente il blocco n-esimo. Altri metodi Basati ad esempio su file di indice. Strutture per directory Directory a livello singolo Tutti i file sono elencati su un unica lista lineare, ciascuno con il proprio nome. Directory a due livelli Una root directory contiene una user file directory per ogni utente. Cooperazione non facilissima.

Directory con struttura ad albero Ricerche efficienti e raggruppamento intelligenti. Nomi di percorso assoluti o relativi. Non si possono fare riferimenti multipli allo stesso file. Directory con struttura a grafo aciclico Permette alle directory di avere sottodirectory e file condivisi, utilizzando dei collegamenti. Attenzione alla cancellazione dei file condivisi. Montaggio di un file system Prima di poterlo usare, un file system dev essere montato in maniera esplicita o implicita. Condivisione e protezione di un file Basate sui concetti di proprietario, gruppo e universo. Si possono controllare le operazioni di lettura, scrittura ed esecuzione. C6. REALIZZAZIONE DEL FILE SYSTEM File system Fornisce un interfaccia per far corrispondere file logici a file fisici. E formato da più layer. Controllo I/O Costituito dai driver dei dispositivi, effettua trasferimenti dalla memoria. File system di base Invia generici comandi a driver per leggere/scrivere blocchi su disco. Modulo di organizzazione dei file Traduce indirizzi blocchi logici in indirizzi blocchi fisici. File system logico Gestisce tutti i metadati. Strutture presenti nei dischi Struttura dei direttori Usate per organizzare i file File Control Block Associato ad ogni file e contenente dettagli riguardanti il file stesso. Strutture presenti in memoria kernel Struttura dei direttori Contiene informazioni sui direttori acceduti di recente Tabella generale dei file aperti Contiene una copia del FCB di ciascun file aperto Tabella dei file aperti per ciascun processo Apertura di un file: open() Dato il nome del file, si guarda nella tabella generale dei file aperti se il file è già presente (in caso contrario si percorre la struttura dei direttori nella RAM, ed eventualmente nei dischi, e si carica il FCB nella tabella generale dei file aperti). Si aggiunge una entry nella tabella dei file aperti per ciascun processo che punta al FCB della tabella generale dei file aperti. Si incrementa il contatore dei riferimenti nella tabella generale. Lettura/scrittura di un file: read/write() Dato l indice del file, si va alla relativa entry nella tabella dei file aperti per ciascun processo, ottenendo un puntatore al FCB corrispondente nella tabella generale dei file aperti. Si usa poi il puntatore contenuto nel FCB per leggere/scrivere il file. Chiusura di un file: close() La chiusura di un file causa l eliminazione di una entry nella tabella dei file aperti per processo. Se non ci sono altri processi che hanno quel file aperto, il file viene eliminato anche dalla tabella generale dei file aperti.

Realizzazione delle directory Impensabile una realizzazione con vettore. Si può fare una lista (che ha prestazioni O(n) sulla ricerca), oppure una tabella di hash (che ha prestazioni O(1) ma paga il prezzo delle collisioni da gestire con lista concatenata). Metodi di allocazione Contigua Un file occupa un insieme di blocchi contigui su disco. Letture sequenziali veloci, ma è necessario stimare la dimensione del file (non sempre possibile). Concatenata Un file è composto da una lista concatenata di blocchi. L elemento della directory contiene un puntatore al primo blocco del file e il blocco i-esimo contiene un puntatore al blocco (i+1)-esimo. Parte dello spazio libero è dunque sprecata in puntatori. FAT Variante dell allocazione concatenata. Permette di scorporare i puntatori dai blocchi dato. Indicizzata Ad un file è assegnato un blocco indice che contiene una sequenza di indirizzi di blocchi sul disco appartenenti al file. Schema concatenato Collegamento di più blocchi indice Indice a più livelli Si usa un blocco indice di primo livello che punta a blocchi indice di secondo livello, i quali puntano a blocchi di file Schema combinato Con inode: direct blocks + single indirect + double indirect + triple indirect. Gestione dello spazio libero La lista dello spazio libero può essere realizzata in diversi modi, tra cui Vettore di bit Ogni blocco è rappresentato da un bit, se libero bit vale 1. Lista concatenata Si collegano tutti i puntatori agli spazi liberi. In teoria non efficiente, ma non viene attraversata spesso. Efficienza e prestazioni Meglio avere una buffer cache unificata piuttosto che due, perché altrimenti read() e write() userebbero una cache, mentre le chiamate con associazione alla memoria ne usarebbero due. Free-behind Rimozione di una pagina non appena si richiede quella successiva. Read-ahead Leggo e inserisco in cache sia la pagina richiesta che un tot. di successive. C7. SISTEMI DI I/O Un dispositivo comunica con un sistema di calcolo inviando segnali e comunicando con il calcolatore tramite un punto di connessione, ovvero una porta. Se uno o più dispositivi usano uno stesso insieme di fili, la connessione avviene su un bus. Alcuni dispositivi, come i dischi, sono collegati a un bus per mezzo di un controllore, insieme di componenti elettronici che può far funzionare porte, bus e dispositivi. Isolated I/O Usa una speciale classe di istruzioni specifiche (LDR/STR) per l'esecuzione dell'input/output. I dispositivi hanno uno spazio indirizzi separato da quello della memoria. Memory mapped I/O Usa lo stesso bus per indirizzare sia la memoria che i dispositivi di I/O, e le stesse istruzioni della CPU utilizzate per leggere e scrivere la memoria sono utilizzate anche per accedere ai dispositivi di I/O.

Polling La CPU consulta ciclicamente un bit per sapere quando il dispositivo ha dati pronti. Si entra in uno stato di attesa attiva. Interruzioni La CPU ha un contatto, detto linea di interruzione, controllato al termine di ogni istruzione. Se un dispositivo (o, nel caso più generale, il controllore delle interruzioni) richiede servizio, la CPU salva lo stato corrente e salta alla routine di gestione dell interruzione specifica. Per farlo usa un indirizzo come displacement in un vettore delle interruzioni che contiene gli indirizzi di memoria degli specifici gestori. I/O programmato La CPU si fa carico di gestire il trasferimento dati dai dispositivi, leggendo i dati dal dispositivo in registri della CPU e poi ricopiando i registri in memoria. Idem nell I/O interrupt-driven. DMA Consente di trasferire dati da dispositivo a memoria senza l ausilio della CPU. La CPU deve solo occuparsi di scrivere un comando che contiene puntatore alla locazione da trasferire, puntatore alla destinazione e numero di byte coinvolti. Il DMA agirà direttamente sul bus, presentandogli gli indirizzi necessari. Interfaccia Astrazione di un dispositivo di I/O a un tipo generale. Driver del dispositivo Modulo kernel specifico per un particolare dispositivo. Comunica con l esterno per mezzo delle interfacce uniformi. Nascondono al sottosistema di I/O le differenze tra i controllori dei dispositivi. Dispositivi a blocchi Sono basati sul trasferimento a blocchi. Ci si aspetta che il dispositivo comprenda istruzioni come read(), write() e seek(). Dispositivi a flusso di caratteri Le chiamate di sistema fondamentali per le interfacce di questo tipo permettono a un applicazione di acquisire o inviare un carattere, rispettivamente con get() e put(). I/O bloccante, non bloccante e asincrono I/O bloccante (sincrono) L esecuzione dell applicazione è sospesa finché l I/O non è completato. I/O non bloccante L esecuzione dell applicazione può continuare subito. I dati disponibili vengono ritornati man mano. I/O asincrono L esecuzione dell applicazione può continuare subito. I dati verranno ritornati tutti insieme successivamente.