Diario delle Lezioni
A.A. 2021/2022

Progettazione di Sistemi Operativi
Ingegneria Informatica - Laurea Magistrale


Data
Argomento
Tipo
N Ore
Riferimento
Lun. 20/09/2021
Introduzione all'insegnamento: obiettivi, programma, testi consigliati, esame, sito dell'insegnamento (Slide prog.pdf).
Definizione di Sistema Operativo. Storia dei Sistemi Operativi: esecuzione sequenziale ed esecuzione batch: origine dei linguaggi comandi (come quello della shell di UNIX). Problema della grande differenza di velocità fra i dispositivi meccanici (lettori di schede e stampanti) e i dispositivi elettronici (CPU): soluzione sovrapporre le operazioni di I/O con quelle della CPU mediante 3 diverse modalità (Slide GeneralitaSO-1.pdf).
L
2
Mer. 22/09/2021
GENERALITÀ - Storia dei Sistemi Operativi: Ripreso Problema della grande differenza di velocità fra i dispositivi meccanici (lettori di schede e stampanti) e i dispositivi elettronici (CPU): soluzione sovrapporre le operazioni di I/O con quelle della CPU mediante 3 diverse modalità: 1) operazioni fuori linea e quindi origine del concetto di dispositivi logici di I/O e della ridirezione; 2) buffer di I/O utilizzati anche attualmente; 3) tecnica di spooling utilizzata ancora per la gestione delle stampe. Ulteriore evoluzione: multiprogrammazione con vantaggi e svantaggi. Categorie di Sistemi Operativi: sistemi batch, sistemi multiprogrammati (esempi, sistemi real-time e sistemi in time-sharing) e misti. Struttura di un Sistema Operativo: monolitico, stratificato e a micro-kernel. Illustrazione dei vari gestori che costituiscono un Sistema Operativo in particolare multiprogrammato e multiutente. Meccanismi per gestire la protezione (bit di modo ed esecuzione differenziata, istruzioni privilegiate di I/O ed esempio di HW per la protezione della memoria) e iniziato ad illustrare le ulteriori problematiche nel caso di sistemi distribuiti (Slide GeneralitaSO-1.pdf).
L
2
Gio. 23/09/2021
GENERALITÀ - Terminato illustrazione delle ulteriori problematiche nel caso di sistemi distribuiti. Definizione di Punto di Vista esterno e di Punto di Vista Interno. Distinzione fra politiche e meccanismi. Progettazione e istallazione di un Sistema Operativo (Slide GeneralitaSO-1.pdf).
PROCESSI - Primo livello di un Sistema Operativo: NUCLEO. Grafo di precedenza degli eventi. Definizione di Processo sequenziale: grafo ad ordinamento totale. Definizione di Processo non sequenziale: grafo ad ordinamento parziale. Requisiti per eseguire un processo NON sequenziale: elaboratore NON sequenziale e linguaggio di programmazione NON sequenziale. Definizione di processo concorrente (Slide Processi-2.pdf).
L
2
Lun. 27/09/2021
PROCESSI - Lasciato da guardare le tre slide di approfondimento su punto di vista interno relative a quasi-parallelismo, stati di un processo e descrittore di processo (Slide Processi-2.pdf).
Relazioni fra processi concorrenti: disgiunti e interagenti (competizione e cooperazione). Descrizione dei modelli dei processi ad ambiente globale e locale e relativi tipi di interazione. Il problema base della competizione in ambiente globale: la mutua esclusione (M.E.) con definizione di sezione critica e classe di sezioni critiche. I 6 requisiti per risolvere il problema della M.E. (lasciato da guardare i vari tentativi). Introdotto l'ipotesi di sezioni critiche sufficientemente brevi, con violazione requisito 6 e 4: primitive LOCK ed UNLOCK e loro implementazione con istruzioni HW tipo TEST-AND-SET oppure EXCHANGE.
Definizione di Semaforo: istanza di Tipo di Dato Astratto con rappresentazione interna (valore >=0 e coda dei descrittori di processi) e primitive WAIT e SIGNAL. Definizione di invariante del semaforo: prove di correttezza. Discusso se i 6 requisiti che deve avere una soluzione al problema della Mutua Esclusione perché sia accettabile sono soddisfatti nei semafori (Slide ProcessiConcorrenti-2bis.pdf).
L
2
Mer. 29/09/2021
PROCESSI - Breve riassunto alla lavagna degli ultimi argomenti. Quindi ripreso discorso sui semafori collegato al rispetto dei 6 requisiti perché una soluzione sia accettabile per la Mutua Esclusione: osservazioni su WAIT e SIGNAL con dettaglio su transizioni di stato dei processi. Indivisibilità di WAIT e SIGNAL (Slide ProcessiConcorrenti-2bis.pdf). Fatte vedere velocemente le tre slide di approfondimento su punto di vista interno relative a quasi-parallelismo, stati di un processo e descrittore di processo che avevo lasciato da guardare agli studenti (Slide Processi-2.pdf).
Esempi di uso dei semafori: 1) gestore di risorse: una prima soluzione naif e seconda soluzione 'vera'. 2) problema lettori/scrittori: prima soluzione con discussione sul problema della starvation e ultima (terza) soluzione senza starvation; mostrato alla lavagna esempio di arrivo di alcuni processi lettori e processi scrittori (Slide EsempiDiUsoDISemafori-2ter.pdf).
L
2
Gio. 30/09/2021
Esercitazione in Laboratorio (1) - Esercizi su file e processi pesanti in Linux: si veda il documento EsercitazioneGiovedì30Settembre2021.pdf e per i primi due esercizi breve presentazione su cat e head (Slide Cat-Head.pdf).
E
2
Lun. 04/10/2021
PROCESSI - Ripreso discorso su esempi di uso dei semafori: 3) problema della cena dei filosofi: possibile soluzione e discussione problema di deadlock e soluzioni alternative (Slide EsempiDiUsoDISemafori-2ter.pdf).
Cooperazione fra processi nel modello ad ambiente globale. Problema di invio di segnali: soluzione con uso di semafori. Problema del produttore/consumatore: soluzione con buffer circolare e semafori. Caso più produttori e più consumatori: nuova soluzione sempre con buffer circolare e semafori (Slide ProcessiCooperantiInAmbienteGlobale-3.pdf).
MONITOR. Costrutti di sincronizzazione di alto livello per risolvere i problemi derivanti dall'uso dei semafori che sono meccanismi di basso livello. Costrutti di sincronizzazione di alto livello: il costrutto di sincronizzazione MONITOR del Concurrent Pascal. Due livelli di controllo: mutua esclusione nell'accesso al monitor (coda di processi esterni al monitor) e variabili condizione (con operazioni WAIT e SIGNAL, quindi code di processi all'interno del monitor). Spiegato il comportamento delle operazioni WAIT e SIGNAL e le differenze rispetto alle omonime operazioni sui semafori. Presentazione delle due semantiche possibili della SIGNAL su una variabile condizione: la semantica SEGNALA E ASPETTA (Hoare) e quella SEGNALA E CONTINUA (cui si ispira Java) (Slide CostruttiDISincronizzazione-3bis.pdf).
L
2
Mer. 06/10/2021
PROCESSI - Breve riassunto sullo strumento MONITOR. Esempi di uso di MONITOR relativi a problemi di competizione in ambito globale: 1) semplice problema di MUTUA ESCLUSIONE su una risorsa (lasciato da guardare agli studenti); 2) problema LETTORI-SCRITTORI (QUEUE come ulteriore operazione su variabili condizione); 3) problema dei FILOSOFI.
Esempi di uso di MONITOR relativi a problemi di cooperazione in ambito globale: soluzione del problema PRODUTTORI-CONSUMATORI.
Realizzazione del Monitor in termini di semafori: un semaforo MUTEX per ogni istanza di tipo monitor, 1 semaforo inizializzato a 0 per ogni variabile condizione e 1 semaforo URGENT per realizzare la semantica SEGNALA E ASPETTA, oltre che un insieme di contatori.
Variabili condizione con priorità. Mostrato un primo esempio: gestione risorsa con tempo di uso (Slide CostruttiDISincronizzazione-3bis.pdf).
L
2
Gio. 07/10/2021
Esercitazione in Laboratorio (2) - Esercizi su processi pesanti in Linux: si veda il documento EsercitazioneGiovedì7Ottobre2021.pdf.
E
2
Lun. 11/10/2021
PROCESSI - Secondo esempio di uso delle variabili condizione con priorità: gestione disco a testine mobili che minimizza gli spostamenti del braccio.
Problema dei monitor innestati (Slide CostruttiDISincronizzazione-3bis.pdf).
Ripreso differenze fra Modello ad Ambiente Globale e Modello ad Ambiente Locale: illustrato da dove sono derivati e discusso sul fatto che hanno lo stesso potere espressivo.
MODELLO AD AMBIENTE LOCALE - Scambio di messaggi e definizione di canale "logico" di comunicazione. Le 5 caratteristiche che può avere un canale che dipendono da 3 scelte implementative. 1) designazione coppia sender/receiver: a) identificazione diretta (schema simmetrico e asimmetrico) con illustrazione di pro e contro; b) identificazione indiretta (mailbox) con illustrazione di pro e contro. 2) Bufferizzazione: a) Assenza bufferizzazione (sincronicità); soluzioni al possibile problema di blocco con introduzione time-out oppure b) Presenza di bufferizzazione (asincronicità): caso di bufferizzazione finita (N) e infinita. Semantica della Receive non bloccante. 3) Lunghezza dei messaggi: a) fissa e b) variabile (Slide AmbienteLocale-5.pdf).
L
2
Mer. 13/10/2021
PROCESSI - Ripreso MODELLO AD AMBIENTE LOCALE (o SCAMBIO DI MESSAGGI). Il caso delle pipe di UNIX. Realizzazione fisica di un canale logico: il caso di UNIX. Send sincrona vs. asincrona. Problemi di ordinamento dei messaggi. Condizioni di errore: terminazione dei processi (il caso di UNIX, pipe senza scrittore e pipe senza lettore), messaggi persi o corrotti. Esempi: due soluzioni al problema produttori/consumatori; due soluzione per la realizzazione di un semaforo binario nel caso ci siano delle eccezioni al modello ad ambiente locale. Linguaggi di programmazione concorrenti con modello ad ambiente locale: CSP, OCCAM e ADA con rendez-vous esteso, presente anche nelle RPC dei sistemi operativi distribuiti o nelle RMI di Java (Slide AmbienteLocale-5.pdf).
L
2
Gio. 14/10/2021
Esercitazione in Laboratorio (3) - Esercizi su processi pesanti in Linux: si veda il documento EsercitazioneGiovedì14Ottobre2021.pdf.
E
2
Lun. 18/10/2021
NUCLEO. Breve riassunto su quanto visto riguardo il Punto di vista esterno del NUCLEO di un Sistema Operativo. Punto di vista interno del NUCLEO di un S.O.: aspetti relativi alla progettazione in termini di strutture dati e di operazioni primitive (supervisor call). Strutture dati: Processo Running, Ready Queue, code dei processi sospesi e descrittori di processo (esempio di UNIX e LiNUX). Primitive di base (creazione, distruzione, sospensione e riattivazione di processi) e loro relazione con le transizioni di stato. Transizioni di stato in generale e quindi rivisto le transizioni di stato in UNIX. Approfondimento process/context switching e spiegato il meccanismo del dispatcher. Approfondimento su creazione processi: rivisto il caso di UNIX: process table, text table, spazio di indirizzamento di un processo (kernel area, data area e code area) e primitive fork ed exec (Slide Nucleo-4.pdf).
L
2
Mer. 20/10/2021
NUCLEO. Processi pesanti vs. processi leggeri (thread): modelli cui si ispirano, performance, implementazione e modelli di multithreading (Slide Nucleo-4.pdf).
Classificazione dei tipi di scheduler: a lungo, a medio e a breve termine (CPU-Scheduler). I 5 parametri per valutare le prestazioni dello scheduler di breve termine. CPU Scheduler senza preemption e con preemption (problematiche legate all'implementazione delle primitive). Concetto di CPU- e I/O-burst per lo scheduler di breve termine. Algoritmi di Scheduling: FCFS-First Come First Served, JSF-Shortest Next CPU Burst e SRTN-Shortest Remaining Time Next (Slide Scheduler-4bis.pdf).
L
2
Mer. 20/10/2021
RECUPERO DELL'ESERCITAZIONE DEL 21/10/2021 PERSA A CAUSA DELLE LAUREE
Esercitazione in Laboratorio (4) - Approfondimento sui thread. La libreria POSIX Pthread: creazione, distruzione, join, recupero identificatore thread, uguaglianza fra identificatori e yield (Slide Pthread.pdf). Mostrato 8 esercizi semplici sull'uso dei thread con la libreria Pthread: si veda codice in GitHub e possibile output caricato nella sezione Laboratorio.
E
2
Lun. 25/10/2021
NUCLEO - Riassunto alla lavagna di quanto visto la lezione scorsa sullo scheduler. Ripreso algoritmi di Scheduling: ROUND-ROBIN, con priorità con e senza preemption (per sistemi Soft Real-Time), con code multiple e anche con retroazione (il caso di UNIX). Scheduling per sistemi multiprocessore eterogenei e omogenei: asymmetric multiprocessing e symmetric multiprocessing; problema del bilanciamento del carico e predilezione del processore; accenno allo smart scheduling. Scheduling di Linux: prima della versione 2.5, dalla versione 2.6 e quello della versione 2.6.23 (Slide Scheduler-4bis.pdf).
L
2
Mer. 27/10/2021
NUCLEO - Problema del DEADLOCK: definizione ed esempi. Le quattro condizioni necessarie. Grafo di allocazione: ciclo come condizione necessaria e caso particolare come condizione necessaria e sufficiente; esempi di cicli come situazione di deadlock e non. Classificazione dei metodi per il trattamento del deadlock: prevenzione vs. soluzione a posteriori. Metodi per il trattamento del deadlock: 1) Prevenzione statica: negazione di una delle 4 condizioni, in particolare dell'ultima (attesa circolare) con ordinamento dei tipi di risorse. 2) Prevenzione dinamica. Definizione di stato sicuro e di sequenza sicura. Primo semplice esempio (Slide Deadlock-6.pdf).
L
2
Gio. 28/10/2021
Esercitazione in Laboratorio (5) - Proseguito per la prima ora l'analisi della libreria POSIX Pthread: mutex e variabili condizione. Illustrato anche i semafori definiti per trattare shared memory ma usabili anche con i thread. Introdotto le varie primitive per l'uso di questi strumenti di sincronizzazione (Slide Pthread.pdf). Per la seconda ora, esercizi sui Pthreads in Linux: si veda il documento EsercitazioneGiovedì28Ottobre2021.pdf.
E
2
Lun. 08/11/2021
NUCLEO - DEADLOCK - Breve riassunto della scorsa lezione. Nell'ambito dei metodi per il trattamento del deadlock, ripreso 2) Prevenzione dinamica. Algoritmo del banchiere: vari esempi; svantaggi e caso particolare di tipi di risorse con singola istanza. 3) Detection e Recovery. Algoritmo di Detection con esempi e caso particolare. Osservazioni su quando attivare l'algoritmo di Detection. Varie possibilità di Recovery: uccisione o preemption delle risorse, in quest'ultimo caso necessità di checkpoint (accenno all'uso dei checkpoint per ottenere fault-tolerance). Metodi misti usati dai Sistemi Operativi per prevenire i deadlock nell'uso delle proprie risorse interne. Per i processi utenti, di solito, i S.O. non prevedono soluzioni come nel caso di UNIX, ma lasciano la soluzione del problema all'utente e/o al sistemista (Lucidi Deadlock-6.pdf).
L
2
Mer. 10/11/2021
MEMORIA - Terzo livello: Gestione della memoria. Punto di vista dell'utente: binding fra spazio di indirizzamento logico del programmatore e spazio di indirizzamento fisico; 3 possibilità per il binding: a tempo di traduzione (codice binario assoluto), a tempo di caricamento (codice rilocabile staticamente) e a tempo di esecuzione (codice rilocabile dinamicamente). Punto di vista interno: funzioni del Gestore della Memoria. Categorizzazione delle politiche di allocazione e parametri di valutazione. Politiche di allocazione contigua: 1) Monitor monoprocesso con esempio del SO MS-DOS: soluzioni al problema di protezione. 2) Partizionamento statico: strategie di selezione (first fit e best fit) e frammentazione interna. Definizione della tecnica di swapping e sue problematiche: N.B. la tecnica di swapping NON è applicabile solo al partizionamento statico! (Lucidi MemoriaAllocazioneContigua-7.pdf).
L
2
Gio. 11/11/2021
Esercitazione in Laboratorio (6) - Esercizi sui Pthreads in Linux: si veda il documento EsercitazioneGiovedì11Novembre2021.pdf.
E
2
Lun. 15/11/2021
MEMORIA - Breve riassunto della lezione scorsa. Ripreso politiche di allocazione contigua: 2) Partizionamento statico: Problematiche di protezione e condivisione nel caso di partizionamento statico; conclusioni su Partizionamento statico.
3) Partizionamento dinamico: evoluzione del partizionamento statico. Algoritmo di allocazione: definizione costante c e strategie di selezione (first fit e next fit; best fit e worst fit). Algoritmo di deallocazione e problema della fusione aree libere. Frammentazione esterna: compattazione. Conclusioni su Partizionamento dinamico.
4) Segmentazione come soluzione per ridurre i problemi della frammentazione esterna del Partizionamento dinamico. Tabella dei segmenti (TDS). Osservazione su dimensione delle TDS e quindi necessità di registro base e registro limite della TDS. Problema overhead in accesso: soluzione con cache o registri di segmento. Protezione e condivisione. Conclusioni su segmentazione (Lucidi MemoriaAllocazioneContigua-7.pdf).
L
2
Mer. 17/11/2021
MEMORIA - Politiche di allocazione non contigua: Paginazione. Tabella delle pagine (TDP). Allocazione/deallocazione delle pagine: tabella della memoria o lista numeri pagine libere. Requisiti Hw per implementare la paginazione: a) Registri base e limite della TDP; b) problema overhead in accesso: cache delle pagine: TLB miss, hit ratio e EAT (tempo di accesso effettivo). Protezione e condivisione: meno flessibili rispetto alla segmentazione. Approfondimenti sulla organizzazione delle TDP: paginazione gerarchica su 2, 3, ... 7 livelli e tabella delle pagine invertita. Conclusioni su paginazione. Confronto Segmentazione e Paginazione: possibilità di combinazione tramite la segmentazione con paginazione (Lucidi MemoriaAllocazioneNonContigua-8.pdf).
L
2
Gio. 18/11/2021
Esercitazione in Laboratorio (7) - Esercizi sui Pthreads in Linux: si veda il documento EsercitazioneGiovedì13Novembre2021.pdf.
E
2
Lun. 22/11/2021
MEMORIA VIRTUALE - Definizione di Memoria Virtuale. Paginazione su richiesta: pager. Bit di presenza/mancanza di pagina. Meccanismo del page fault e problema della interrompibilità delle istruzioni dovute ad esso: requisiti Hw. Strategie di ricerca e di posizionamento. Possibilità di ottimizzazione se a livello Hw è presente il Dirty Bit. Strategie di sostituzione: 1) FIFO e anomalia di Belady; 2) Ottima (OPT); 3) LRU (Least Recently Used). La strategia optima e quella LRU NON soffrono dell'anomalia di Belady. Implementazioni complete di LRU (solo con HW dedicato): 1) con Contatore degli accessi; 2) con Stack dedicato. (Lucidi MemoriaVirtuale-8bis.pdf).
L
2
Mer. 24/11/2021
MEMORIA VIRTUALE - Ripreso discorso su Hw necessario per l'implementazione completa dell'algoritmo LRU. Approssimazioni della politica di sostituzione LRU utilizzando il Reference Bit (che è molto comune ci sia a livello Hw): memorizzazione dei reference bit, algoritmo di seconda chance (NRU, Not Recently Used), classi di pagine (uso anche del Dirty Bit e quindi algoritmo di seconda chance migliorato). Politiche di sostituzione locali o globali. Politiche di allocazione: uguale e diseguale. Problema del trashing. Definizione del principio di località. Teoria del working set, come politica di allocazione/sostituzione. Implementazione della Teoria del working set: uso ancora del reference bit (Lucidi MemoriaVirtuale-8bis.pdf).
L
2
Gio. 25/11/2021
Esercitazione in Laboratorio (8) - Esercizi sui Pthreads in Linux: si veda il documento EsercitazioneGiovedì25Novembre2021.pdf e ProblemadelBarbiereAddormentato.pdf per la descrizione del problema del Barbiere addormentato.
E
2
Lun. 29/11/2021
MEMORIA VIRTUALE - Politica di allocazione basata sulla Frequenza dei Page-Fault. Struttura dei programmi e influenza sui page-fault. File mappati in memoria: possibilità di condivisione, anche come memoria condivisa. Allocazione di memoria al Kernel: metodo BUDDY e metodo a LASTRE: esempio di uso in Linux. Considerazioni varie: dimensione della pagina, cache delle pagine (TLB); protezione e condivisione; I/O interlocking; elaborazioni in tempo reale. Memoria virtuale basata sulla segmentazione: vantaggi e svantaggi. Memoria virtuale basata su segmentazione con paginazione per ottenere i vantaggi di entrambi gli schemi. Gestione della memoria in particolare quella virtuale in UNIX. Conclusioni sulla memoria virtuale (Lucidi MemoriaVirtuale-8bis.pdf).
L
2
Mer. 01/12/2021
FILE - Gestione dei FILE: importanza della indipendenza dai dispositivi fisici. Concetto di file e suoi attributi (metadati). Tipi di file. Struttura logica dei file. Concetto di directory. Punto di vista dell'utente (esempi di UNIX e DOS): comandi tipici. Organizzazione delle directory con aspetti di efficienza, nominazione, condivisione e protezione: directory ad un solo livello, directory a due livelli (MFD e UFD), ad albero. Iniziato a parlare della organizzazione più generale dei directory a grafo aciclico o DAG: concetto di link software e hardware; problemi collegati alla cancellazione link/file: il caso di Unix, Windows e MAC-OS (Lucidi FileSystem-9.pdf).
L
2
Gio. 02/12/2021
ESERCITAZIONE SOSPESA PER LAUREE!
E
2
Lun. 06/12/2021
FILE - Completato analisi delle strutture delle directory: problematica di rendere aciclico un grafo: il caso di Unix.
Concetto di volume: trasparenza o meno nei S.O. Protezione di risorse con particolare riferimento al file system; dominio di protezione e possibilità di modificare il dominio (il caso di exec e SUID/SGID di UNIX). Matrice di protezione e sua implementazione con ACL (il caso di UNIX) e C-List. Punto di vista del programmatore di sistema (primitive): creazione, scrittura, lettura e cancellazione. Necessità per ottimizzare le operazioni di un'ulteriore operazione: apertura file e quindi anche chiusura file. Discorso sulla tabella dei file aperti: implementazione in UNIX. Metodi di accesso: sequenziale e diretto. Punto di vista del S.O.: stratificazione in vari livelli. Concetto di blocco fisico e relazione con record logico. Possibili malfunzionamenti (Lucidi FileSystem-9.pdf).
L
2
Gio. 09/12/2021
Esercitazione in Laboratorio (9) - Esercizi sui Pthreads in Linux: si veda il documento EsercitazioneGiovedì9Dicembre2021.pdf e ProblemaDeiFumatori.pdf per la descrizione del problema dei Fumatori di Sigarette e ProblemaDeiCannibaliACena.pdf per la descrizione del problema dei Cannibali a Cena.
E
2
Lun. 13/12/2021
FILE - Punto di vista del S.O. Possibile implementazione delle directory: DNF e DBF; esempio di UNIX: I-Number e I-Node. Ripreso primitiva open e spiegato le motivazioni per le diverse tabelle usate dinamicamente nell'accesso ai file in UNIX: una Tabella dei File Aperti per ogni singolo processo e DUE tabelle di sistema, Tabella degli I-NODE Attivi e Tabella dei File Aperti. Pseudo codice per il controllo dei diritti durante la open di un file in UNIX. Realizzazione della DNF con: lista lineare, B-tree o lista lineare con tabella hash. Montaggio di un file system fisico: il caso dei sistemi UNIX-like e di Windows. Tipi di File System Fisici, in particolare UFS (Unix), ext2/3/4 (Linux). I Journaling File System. File System speciali, in particolare in Linux (Lucidi FileSystem-9.pdf).
Realizzazione del File System: strutture dati in memoria secondaria e in memoria centrale. Partizioni e montaggio: in particolare boot loader e dual-boot (Lucidi ImplementazioneFileSystem9bis.pdf).
L
2
Mer. 15/12/2021
FILE - Punto di vista del S.O. Gestione dello spazio su disco: individuazione dei fattori da valutare. Ricordato problema della frammentazione interna (nell'ultimo blocco allocato per ogni file). Metodi di allocazione: 1) Contigua; 2a) Non contigua concatenata e la sua variante della File Allocation Table (FAT); 2b) Non continua ad indice; problemi file corti e file lunghi; illustrato soluzione di UNIX. Conclusioni su metodi di allocazione. Gestione dei blocchi liberi tramite Bit Map e sue alternative: Lista concatenata, Grouping e Counting. Efficienza e prestazioni: buffer cache/page cache unificata; disk RAM. Ripristino: verificatore di coerenza o uso di journalled file system; per aumentare l'affidabilità: dischi in RAID e/o backup, con varie possibilità (Lucidi ImplementazioneFileSystem9bis.pdf).
L
2
Gio. 16/12/2021
Esercitazione in Laboratorio (10) - Esercizi sui Pthreads in Linux: si veda il documento EsercitazioneGiovedì16Dicembre2021.pdf.
E
2
Lun. 20/12/2021
FILE - Schemi funzionali delle primitive sui file con esemplificazioni in UNIX. Generalizzazione dei file: dispositivi (rivisto implementazione della ridirezione in UNIX e file/dispositivi in /dev) e PIPE (rivisto implementazione del piping dei comandi in UNIX).
Discorso su aspetti di Sistemi Operativi di rete: il caso di NFS (Network File System) (Lucidi ImplementazioneFileSystem9bis.pdf).
Discorso conclusivo sulle lezioni: rivisto programma per fare un breve riassunto degli argomenti trattati (ripreso quindi lucidi iniziali).
L
2
Mer. 22/12/2021
Esercitazione in Laboratorio (11) - Illustrazione delle 'regole' per lo svolgimento della eventuale tesina: si veda il documento TESINE21-22.pdf. Analisi di alcuni problemi legati al massimo numero di Pthreads generabili.
E
2
Gio. 23/12/2021
NON TENUTA perchè già completate le ore!
L
2

Legenda:
E= Esercitazione
L= Lezione