Diario delle Lezioni
A.A. 2019/2020

Progettazione di Sistemi Operativi
Ingegneria Informatica - Laurea Magistrale


Data
Argomento
Tipo
N Ore
Riferimento
Lun. 16/09/2019
Nozioni di sicurezza DIEF. Introduzione all'insegnamento: obiettivi, programma, testi consigliati, esame, sito dell'insegnamento (Lucidi 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); origine del concetto di dispositivi logici di I/O e della ridirezione; origine del concetto di spooling (Lucidi GeneralitaSO-1.pdf).
L
2
Mer. 18/09/2019
GENERALITÀ - Storia dei Sistemi Operativi: concetto di multiprogrammazione. Categorie di Sistemi Operativi: sistemi batch, sistemi multiprogrammati (esempi, sistemi real-time e sistemi in time-sharing) e misti. Struttura di un Sistema Operativo: definizione di kernel monolitico e di 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 ulteriori problematiche nel caso di sistemi distribuiti (Lucidi GeneralitaSO-1.pdf).
L
2
Gio. 19/09/2019
GENERALITÀ - Definizione di Punto di Vista esterno e di Punto di Vista Interno (Lucidi 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. Stati e descrittore di processo (Lucidi Processi-2.pdf). Relazioni fra processi concorrenti: disgiunti e interagenti (competizione e cooperazione) (Lucidi ProcessiConcorrenti-2bis.pdf).
L
2
Lun. 23/09/2019
PROCESSI - Ripreso tipi di interazione fra processi concorrenti (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 con definizione di sezione critica. I 6 requisiti (lasciato da guardare i vari tentativi per risolvere il problema della M.E.). Introdotto l'ipotesi di sezioni critiche sufficientemente brevi: primitive LOCK ed UNLOCK e loro implementazione con istruzioni HW tipo TEST-AND-SET oppure EXCHANGE.
Definizione di Semaforo: 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. (Lucidi ProcessiConcorrenti-2bis.pdf).
L
2
Mer. 25/09/2019
PROCESSI - Ripreso discorso sui semafori: osservazioni su WAIT e SIGNAL con dettaglio su transizioni di stato dei processi. Indivisibilità di WAIT e SIGNAL (Lucidi ProcessiConcorrenti-2bis.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 (Lucidi EsempiDiUsoDISemafori-2ter.pdf).
L
2
Gio. 26/09/2019
NON TENUTA PER IMPEGNO NICOLA BICOCCHI!
E
2
Lun. 30/09/2019
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 (Lucidi 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 (Lucidi 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 sincronizzazione: mutua esclusione nell'accesso al monitor e variabili condizione (con operazioni WAIT e SIGNAL) (Lucidi CostruttiDISincronizzazione-3bis.pdf).
L
2
Mer. 02/10/2019
PROCESSI - 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).
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 solo il secondo esempio (il primo, gestione risorsa con tempo di uso lasciato da guardare agli studenti): gestione disco a testine mobili.
Problema dei monitor innestati (Lucidi CostruttiDISincronizzazione-3bis.pdf).
L
2
Gio. 03/10/2019
Nicola Bicocchi - Esercitazione n. 1: XV6 Basic commands.
E
3
Lun. 07/10/2019
PROCESSI - Ripreso differenze fra Modello ad Ambiente Globale e Modello ad Ambiente Locale: illustrato da dove sono derivate 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) diretta (schema simmetrico e asimmetrico); b) indiretta (mailbox). 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. Ultima scelta implementativa: 3) Lunghezza dei messaggi: a) fissa e b) variabile. Il caso delle pipe di UNIX. (Lucidi AmbienteLocale-5.pdf).
L
2
Mer. 09/10/2019
PROCESSI - Ripreso MODELLO AD AMBIENTE LOCALE (o SCAMBIO DI MESSAGGI). 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 (rendez-vous esteso e RPC o RMI) (Lucidi AmbienteLocale-5.pdf).
L
2
Lun. 14/10/2019
PROCESSI - NUCLEO. Punto di vista interno del NUCLEO di un S.O. Processo Running, Ready Queue, code dei processi sospesi e descrittori di processo (esempio di UNIX, LiNUX e XV6). 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 dispatcher. Approfondimento su creazione processi: rivisto il caso di UNIX: process table, text tacle, spazio di indirizzamento di un processo (kernel area, data area e code area) e primitiva fork (Lucidi Nucleo-4.pdf).
L
2
Mer. 16/10/2019
PROCESSI - NUCLEO. Approfondimento su creazione processi: rivisto il caso di UNIX completando con il ripasso della primitiva exec.
Processi pesanti vs. processi leggeri (thread): modelli cui si ispirano, performance, implementazione e modelli di multithreading (Lucidi Nucleo-4.pdf).
Classificazione dei tipi di scheduler: a lungo, a medio e a breve termine (CPI 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 (Lucidi Scheduler-4bis.pdf).
L
2
Gio. 17/10/2019
Nicola Bicocchi - Esercitazione n. 2: XV6 Shell.
E
3
Lun. 21/10/2019
PROCESSI - NUCLEO - Algoritmi di Scheduling: FCFS, SJF, SRTF, 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 (Lucidi Scheduler-4bis.pdf).
L
2
Mer. 23/10/2019
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 (Lucidi Deadlock-6.pdf).
L
2
Lun. 28/10/2019
NUCLEO - DEADLOCK - 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). Il caso di UNIX (Lucidi Deadlock-6.pdf).
L
2
Mer. 30/10/2019
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 (Lucidi MemoriaAllocazioneContigua-7.pdf).
L
2
Gio. 31/10/2019
Nicola Bicocchi - Esercitazione n. 3: XV6 Adding system call.
E
3
Lun. 11/11/2019
MEMORIA - Riassunto della lezione scorsa (svolta prima della settimana di interruzione delle lezioni). Politiche di allocazione contigua: completato Partizionamento statico: Protezione e Condivisione. 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. 4) Segmentazione. 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 (Lucidi MemoriaAllocazioneContigua-7.pdf).
L
2
Mer. 13/11/2019
MEMORIA - Politiche di allocazione contigua-Segmentazione. Protezione e condivisione. Conclusioni su segmentazione (Lucidi MemoriaAllocazioneContigua-7.pdf).
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. Vantaggi/svantaggi di paginazione e segmentazione e quindi possibilità di combinazione dei due metodi di allocazione (segmentazione con paginazione) (Lucidi MemoriaAllocazioneNonContigua-8.pdf).
L
2
Gio. 14/11/2019
Nicola Bicocchi - Esercitazione n. 4: XV6 Scheduler.
E
3
Lun. 18/11/2019
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). Altra strategia di sostituzione oltre la FIFO e l'OPT: LRU (Least Recently Used). La strategia optima e quella LRU NON soffrono dell'anomalia di Belady (Lucidi MemoriaVirtuale-8bis.pdf).
L
2
Mer. 20/11/2019
MEMORIA VIRTUALE - Implementazioni complete di LRU: 1) con Contatore degli accessi; 2) con Stack dedicato. Approssimazioni della politica di sostituzione LRU utilizzando il Reference Bit: 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. Definizione del principio di località (Lucidi MemoriaVirtuale-8bis.pdf).
L
2
Gio. 21/11/2019
NON TENUTA PER IMPEGNO NICOLA BICOCCHI!
E
2
Lun. 25/11/2019
MEMORIA VIRTUALE - Ripreso principio di località. Teoria del working set, come politica di allocazione/sostituzione. Implementazione della Teoria del working set: uso ancora del reference bit. 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. 27/11/2019
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 (Lucidi FileSystem-9.pdf).
L
2
Gio. 28/11/2019
Nicola Bicocchi - Esercitazione n. 5: XV6 File System Basics. In particolare: a) Implementing a system call for acquiring fs-related statistics (superblock/bitmap). b) Implementing a user command for display statistics
E
3
Mer. 04/12/2019
FILE - Completato analisi delle strutture delle directory: problema cancellazione link e problematica di rendere aciclico un grafo: caso di Unix, Windows e MAC-OS.
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. 05/12/2019
Nicola Bicocchi - Esercitazione n. 6: XV6 File System Adv. In particolare: a) Increasing the maximum file length using a modified single indirection. b) Increasing the maximum file length using double indirection. c) Increasing the maximum file length using triple indirection.
E
3
Lun. 09/12/2019
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 (Lucidi FileSystem-9.pdf). 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. File System speciali, in particolare in Linux. Tipi di File System Fisici, in particolare UFS (Unix), ext2/3/4 (Linux). I Journaling File System. Realizzazione del File System: strutture dati in memoria secondaria e in memoria centrale. Partizioni: in particolare boot loader e dual-boot. Il problema della frammentazione interna dell'ultimo blocco allocato ad un file. Metodi di allocazione: individuazione dei fattori da valutare (Lucidi ImplementazioneFileSystem9bis.pdf).
L
2
Mer. 11/12/2019
FILE - Punto di vista del S.O. 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 (Lucidi ImplementazioneFileSystem9bis.pdf).
L
2
Gio. 12/12/2019
Nicola Bicocchi - Esercitazione n. 7: XV6 Memory Management Basics.
E
3
Lun. 16/12/2019
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. 18/12/2019
NON TENUTA perchè già completate le ore!
L
2
Gio. 19/12/2019
Nicola Bicocchi - Esercitazione n. 8:
E
3

Legenda:
E= Esercitazione
L= Lezione