Diario delle Lezioni
A.A. 2015/2016

Principi di Sistemi Operativi
Ingegneria Informatica - Laurea Magistrale


Data
Argomento
Tipo
N Ore
Riferimento
Lun. 21/09/2015
Persa per convalescenza.
L
2
Mer. 23/09/2015
Persa per convalescenza.
L
2
Ven. 25/09/2015
Persa per convalescenza.
E
3
Lun. 28/09/2015
Persa per convalescenza.
L
2
Mer. 30/09/2015
Persa per convalescenza.
L
2
Ven. 02/10/2015
Persa per convalescenza.
E
3
Lun. 05/10/2015
RECUPERO- Introduzione al corso, programma, testi consigliati, esame, scheda informativa (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) e origine del concetto di dispositivi logici di I/O e della ridirezione (Lucidi so1.pdf).
L
2
Lun. 05/10/2015
GENERALITÀ - Storia dei Sistemi Operativi: multiprogrammazione. Categorie di Sistemi Operativi: sistemi batch, sistemi multiprogrammati (anche sistemi real-time e sistemi in time-sharing) e misti. Struttura di un Sistema Operativo. Illustrazione dei vari gestori che costituiscono un Sistema Operativo, in particolare multiprogrammato e multiutente. Punti di vista diversi e differenze fra meccanismi e politiche (Lucidi so1.pdf).
L
2
Mer. 07/10/2015
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 processi concorrenti. Stati e descrittore di processo: code di processi (pronti e sospesi). Relazioni fra processi concorrenti: disgiunti e interagenti (competizione e cooperazione oltre che interferenza) (Lucidi so2.pdf).
L
2
Ven. 09/10/2015
PROCESSI - Descrizione dei modelli dei processi ad ambiente globale e locale. Descrizione dei modelli dei processi ad ambiente globale e locale e relativi tipi di interazione. Problema base della competizione in ambiente globale: la mutua esclusione con definizione di sezione critica. Requisiti e vari tentativi per risolvere il problema della M.E.
Ipotesi di sezioni critiche sufficientemente brevi: primitive LOCK ed UNLOCK e loro implementazione (con istruzioni HW tipo TEST-AND-SET oppure EXCHANGE). Introdotto rapidamente la definizione di Semaforo: primitive WAIT e SIGNAL (Lucidi so2bis.pdf).
L
3
Lun. 12/10/2015
RECUPERO-PROCESSI - SEMAFORI. Ripreso definizione di Semaforo con le primitive WAIT e SIGNAL. Definizione di invariante del semaforo: prove di correttezza. Indivisibilita\' di WAIT e SIGNAL (Lucidi so2bis.pdf). Esempi di uso dei semafori: 1) gestore di risorse. 2) problema lettori/scrittori: prima soluzione con discussione sul problema della starvation e ultima (terza) soluzione senza starvation; 3) problema della cena dei filosofi: possibile soluzione e discussione problema di deadlock e soluzioni alternative (Lucidi so2ter.pdf).
L
2
Lun. 12/10/2015
PROCESSI - SEMAFORI. 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 so3.pdf).
PROCESSI - MONITOR. Costrutti di sincronizzazione di alto livello per risolvere i problemi derivanti dall'uso dei semafori che sono meccanismi di basso 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). 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 (Java). Esempi di uso di MONITOR relativi a problemi di competizione in ambito globale: 1) semplice problema di MUTUA ESCLUSIONE su una risorsa.
L
2
Mer. 14/10/2015
PROCESSI - MONITOR. Completato esempi di uso di MONITOR relativi a problemi di competizione in ambito globale: 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: due soluzioni del problema PRODUTTORI-CONSUMATORI. Realizzazione del Monitor intermini di semafori (Lucidi so3bis.pdf).
L
2
Ven. 16/10/2015
Seminario sulla programmazione concorrente in Java: implementazione del concetto di thread, gestione dei thread, sincronizzazione dei thread ed esempi. (Ing. Marco Galassi).
E
2
Ven. 16/10/2015
PROCESSI - MONITOR. Variabili condizione con priorità: 2 esempi (gestione risorsa con tempo di uso e gestione disco a testine mobili). Problema dei monitor innestati. Path Expression: 2 esempi (lettori/scrittori e produttori/consumatori) (Lucidi so3bis.pdf).
L
1
Lun. 19/10/2015
PROCESSI - SCAMBIO DI MESSAGGI. Modello ad ambiente locale: scambio di messaggi e definizione di canale "logico" di comunicazione. 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, 3) Lunghezza dei messaggi: a) fissa e b) variabile. Il caso delle pipe di UNIX (Lucidi so5.pdf).
L
2
Mer. 21/10/2015
PROCESSI - 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), messaggi persi o corrotti. Esempi: due soluzioni al problema produttori/consumatori; due soluzione per la realizzazione di un semaforo binario. Linguaggi di programmazione concorrenti con modello ad ambiente locale: CSP, OCCAM e ADA (rendez-vous esteso e RPC o RMI) (Lucidi so5.pdf).
L
2
Ven. 23/10/2015
NON TENUTA.
E
3
Lun. 26/10/2015
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, Lucidi UNIXPROC-breve.pdf). 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. Process/context switching e dispatcher. Approfondimento su creazione processi (Lucidi so4.pdf): rivisto il caso di UNIX: fork ed exec (Lucidi UNIXPROC-breve.pdf).
L
2
Mer. 28/10/2015
PROCESSI - NUCLEO. Processi pesanti vs. processi leggeri (thread). Classificazione dei tipi di scheduler: a lungo, a medio e a breve termine. I 5 parametri per valutare le prestazioni dello scheduler. Concetto di CPU- e I/O-burst per lo scheduler di breve termine. CPU Scheduler con o senza Preemption. Algoritmi di Scheduling: FCFS, SJF, SRTF, ROUND-ROBIN (Lucidi so4.pdf).
L
2
Ven. 30/10/2015
Introduzione all'ambiente Eclipse e all'uso delle librerie Java. ESERCIZI MONITOR - Package Java del monitor. Esercizi in Java: ponte semplice, ponte con capacità limitata e ponte senza starvation risolti con l'utilizzo del package Monitor (Ing. Marco Galassi).
E
3
Lun. 02/11/2015
NUCLEO di un S.O. - Completato algoritmi di Scheduling: 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 (Lucidi so4.pdf). 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 (Lucidi so6.pdf).
L
2
Mer. 04/11/2015
NUCLEO di un S.O. - Metodi per il trattamento del deadlock: 2) Prevenzione dinamica. Definizione di stato sicuro e di sequenza sicura. 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 (Lucidi so6.pdf).
L
2
Mer. 11/11/2015
NUCLEO di un S.O. - Metodi per il trattamento del deadlock: 3) Ripreso Algoritmo di Detection con osservazioni su quando attivarlo. Varie possibilità di Recovery (Lucidi so6.pdf). Terzo livello: Gestione della memoria. Punto di vista dell'utente: programmi assoluti e rilocabili (staticamente e 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. 2) Partizionamento statico: strategie di selezione (first fit e best fit) e frammentazione interna (Lucidi so7.pdf).
L
2
Ven. 13/11/2015
ESERCIZI MONITOR - Esercizi in Java: ponte semplice, ponte con capacità limitata e ponte senza starvation risolti direttamente con gli strumenti di Java senza l'utilizzo del package Monitor. Fatto risolvere l'esercizio del ponte con peso. Fatto risolvere l'esercizio del Deposito Bagagli. Fatto risolvere l'esercizio della Pizzeria semplificato cioè con
solo un tipo di clienti e senza fattorino. Dato da fare come esercizio a casa la versione con due tipi di clienti e il fattorino. (Ing. Marco Galassi)
E
3
Lun. 16/11/2015
MEMORIA - Politiche di allocazione contigua: 2) Ripreso Partizionamento Statico della Momoria: definizione della tecnica di swapping e sue problematiche. Protezione e Condivisione; 3) Partizionamento dinamico: evoluzione del partizionamento statico. Algoritmo di allocazione: Strategie di selezione (first fit e next fit; best fit e worst fit) e definizione costante c. Algoritmo di deallocazione: fusione aree libere. Frammentazione esterna: compattazione. 4) Segmentazione. Tabella dei segmenti (TDS) (Lucidi so7.pdf).
L
2
Mer. 18/11/2015
MEMORIA - Politiche di allocazione contigua: 4) conclusione su Segmentazione: Osservazione su dimensione delle TDS e quindi necessità di registro base e registro limite della TDS. Problema overhead in accesso: soluzione con registri di segmento. Protezione e condivisione (Lucidi so7.pdf). Politiche di allocazione non contigua: Paginazione. Tabella delle pagine (TDP). Allocazione/deallocazione delle pagine: tabella della memoria o lista numeri pagine libere. Registri base e limite della TDP. Problema overhead in accesso: cache delle pagine. Problema di Frammentazione di pagina. Protezione e condivisione: meno flessibili rispetto alla segmentazione. Differenze fra paginazione e segmentazione: vantaggi/svantaggi e quindi presentazione della combinazione dei due metodi di allocazione (segmentazione con paginazione) (Lucidi so8.pdf).
L
2
Ven. 20/11/2015
ESERCIZI MONITOR - Esercizi in Java: Esercizio della Pizzeria completo con due tipi di clienti e il fattorino. Iniziato esercizio della Stazione. (Ing. Marco Galassi)
E
3
Lun. 23/11/2015
MEMORIA - Politiche di gestione della memoria: 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) (Lucidi so8bis.pdf).
L
2
Mer. 25/11/2015
MEMORIA VIRTUALE - Altra strategia di sostituzione oltre la FIFO e l'OPT: LRU (Least Recently Used). Implementazioni di LRU (con Clock dedicato oppure con Stack dedicato) e sue approssimazioni 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à e Teoria del working set, come politica di allocazione/sostituzione (Lucidi so8bis.pdf).
L
2
Ven. 27/11/2015
ESERCIZI MONITOR - Esercizi in Java: Mostrato soluzione dell'esercizio della Stazione; presentato esercizio del Traghetto. (Ing. Marco Galassi)
E
3
Lun. 30/11/2015
MEMORIA VIRTUALE - Politica di allocazione basata sulla Frequenza dei Page-Fault. Considerazioni varie: dimensione della pagina, cache delle pagine; 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 (Lucidi so8bis.pdf). Gestione della memoria in particolare quella virtuale in UNIX (Lucidi so8ter.pdf). Conclusioni sulla memoria virtuale (Lucidi so8bis.pdf).
L
2
Mer. 02/12/2015
FILE - Gestione dei FILE. Tipi di file. Punto di vista dell'utente (esempi di UNIX e DOS): comandi tipici, volumi, direttori e loro struttura cioè direttori ad un solo livello, a due livelli, ad albero e a grafo -possibilmente- aciclico (concetto di link come strumento di condivisione di file): caso di Unix e Windows (Lucidi so9.pdf).
L
2
Ven. 04/12/2015
ESERCIZI MONITOR - Esercizi in Java: Mostrato soluzione dell'esercizio Traghetto; presentato esercizio dell'Ospedale (Ing. Marco Galassi)
E
3
Mer. 09/12/2015
FILE - 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.: concetto di blocco fisico e relazione con record logico. Implementazione dei direttori: DNF e DBF (es. UNIX: I-Number e I-Node) (Lucidi so9.pdf).
L
2
Ven. 11/12/2015
ESERCIZI MONITOR - Fatto provare il sistema di copia automatica sul server che verrà usato negli esami. Esercizi in Java: Mostrato soluzione dell'esercizio dell'Ospedale; presentato esercizio dell'Elicottero/Compagnia aerea (Ing. Marco Galassi)
E
4
Lun. 14/12/2015
FILE - Punto di vista del S.O. Rispiegato le diverse tabelle usate dinamicamente nell'accesso ai file in UNIX (Lucidi so9.pdf). Metodi di allocazione e problema frammentazione interna: 1) Contigua. 2a) Non contigua concatenata (Es. MS-DOS: FAT); 2b) Non continua ad indice (Es. UNIX). Conclusioni su metodi di allocazione (Lucidi so9bis.pdf).
L
2
Mer. 16/12/2015
FILE - Schemi funzionali delle primitive sui file con esemplificazioni in UNIX. Generalizzazione dei file: dispositivi e PIPE (con esemplificazioni in UNIX). Discorso su aspetti di Sistemi Operativi di rete: il caso di NFS (Network File System) (Lucidi so9bis.pdf). Discorso conclusivo sul corso: strutturazione a livelli di un sistema operativo, obiettivi formativi, programma ed esame (ripreso quindi lucidi iniziali).
L
2
Ven. 18/12/2015
Prova in itinere (Lab. LINFA).
E
3
Lun. 21/12/2015
Correzione della Prova in Itinere (Ing. Marco Galassi)
E
2

Legenda:
E= Esercitazione
L= Lezione