Diario delle Lezioni
A.A. 2016/2017

Principi di Sistemi Operativi
Ingegneria Informatica - Laurea Magistrale


Data
Argomento
Tipo
N Ore
Riferimento
Lun. 19/09/2016
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) (Lucidi so1.pdf).
L
2
Mer. 21/09/2016
GENERALITÀ - Storia dei Sistemi Operativi: origine del concetto di dispositivi logici di I/O e della ridirezione. COncetto di 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: fino a Gestione Networking esclusa (Lucidi so1.pdf).
L
2
Ven. 23/09/2016
GENERALITÀ - Terminato illustrazione dei vari gestori che costituiscono un Sistema Operativo, in particolare multiprogrammato e multiutente: in particolare gestione networking. Punti di vista diversi e differenze fra meccanismi e politiche (Lucidi so1.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 (Lucidi so2.pdf). 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 so2.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.
L
3
Lun. 26/09/2016
PROCESSI - Riassunto concetti essenziali e quindi passato a presentare il problema base della competizione in ambiente globale: la mutua esclusione con definizione di sezione critica. I 6 requisiti e 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 (Lucidi so2bis.pdf).
L
2
Mer. 28/09/2016
PROCESSI - Definizione di Semaforo: 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 (Lucidi so2ter.pdf).
L
2
Ven. 30/09/2016
PROCESSI - SEMAFORI. Completato esempi di uso dei semafori: ripreso soluzione senza starvation del problema lettori/scrittori e illustrato il funzionamento con un esampio di avvicendamento di un serie di processi lettori e di processi scrittori; 3) problema della cena dei filosofi: possibile soluzione e discussione problema di deadlock e soluzioni alternative (Lucidi so2ter.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 so3.pdf).
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). Spiegato il comportamento delle operazioni WAIT e SIGNAL e le differenze rispetto alle omonime operazioni sui semafori (Lucidi so3bis.pdf).
L
3
Lun. 03/10/2016
NON TENUTA PER IMPEGNI PERSONALI
L
2
Mer. 05/10/2016
PROCESSI - MONITOR. 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; 2) problema LETTORI-SCRITTORI (QUEUE come ulteriore operazione su variabili condizione); 3) problema dei FILOSOFI. 4) Esempi di uso di MONITOR relativi a problemi di cooperazione in ambito globale: due soluzioni del problema PRODUTTORI-CONSUMATORI (Lucidi so3bis.pdf).
L
2
Ven. 07/10/2016
LABORATORIO (1) - Introduzione ai thread Java: perché si usano, cosa sono, come crearli, panoramica di alcuni metodi utili per la loro gestione (sleep, isAlive, join, interrupt), ciclo di vita dei thread Java (con il supporto dell'Ing. Marco Galassi).
E
3
Lun. 10/10/2016
PROCESSI - MONITOR. Spiegato nuovamente le due semantiche, SEGNALA E ASPETTA e SEGNALA E CONTINUA: illustrato i problemi della SEGNALA E CONTINUA. Realizzazione del Monitor in termini di semafori 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).
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) (Lucidi so5.pdf).
L
2
Mer. 12/10/2016
PROCESSI - SCAMBIO DI MESSAGGI. Proseguito nella descrizione delle scelte implementative: 1) designazione coppia sender/receiver: 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. Realizzazione fisica di un canale logico: il caso di UNIX. Send sincrona vs. asincrona (Lucidi so5.pdf).
L
2
Ven. 14/10/2016
LABORATORIO (2) - THREAD IN JAVA - Esercizio: creazione di matrice e lavoro parallelo sulla matrice da parte di un numero variabile di Thread (con il supporto dell'Ing. Marco Galassi).
E
3
Lun. 17/10/2016
PROCESSI - SCAMBIO DI MESSAGGI. 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 so5.pdf).
L
2
Mer. 19/10/2016
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. Approfondimento 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
Ven. 21/10/2016
LABORATORIO (3) - Sincronizzazione di Thread. Perchè è necessaria? Intrinsic lock in Java. Metodi e blocchi synchronized. Lock su oggetti diversi. Guarded blocks, attesa di condizioni con wait e notify/notifyAll. Esercizi vari su questi temi (con il supporto dell'Ing. Marco Galassi).
E
3
Lun. 24/10/2016
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 senza preemption e con preemption (problematiche legate all'implementazione delle primitive). Algoritmi di Scheduling: FCFS, SJF, SRTF, ROUND-ROBIN (Lucidi so4.pdf).
L
2
Mer. 26/10/2016
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 (asymmetric multiprocessing e symmetric multiprocessing) (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
Ven. 28/10/2016
LABORATORIO (4) - THREAD IN JAVA - Pattern produttori/consumatori, Deadlock, introduzione ai Lock in Java.
Interfaccia Lock, implementazione di un lock con i metodi lock() e unlock() per capirne il funzionamento. ReentrantLock in Java. Fairness dei Lock in Java (con il supporto dell'Ing. Marco Galassi).
E
3
Lun. 31/10/2016
PONTE DECISO DALL'ATENEO!
L
2
Mer. 02/11/2016
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. Osservazioni su quando attivare l'algoritmo di Detection. Varie possibilità di Recovery: uccisione o preemption delle risorse, in quest'ultimo caso necessità di checkpoint. Il caso di UNIX (Lucidi so6.pdf).
L
2
Ven. 11/11/2016
[RECUPERO 1 ora di lezione] 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 assoluti), a tempo di caricamento (codice rilocabile staticamente) e a tempo di esecuzione (codice rilocabili dinamicamente). Punto di vista interno: funzioni del Gestore della Memoria. Categorizzazione delle politiche di allocazione e parametri di valutazione (Lucidi so7.pdf).
L
1
Ven. 11/11/2016
LABORATORIO (5) - THREAD IN JAVA - Java Locking Framework. Visto il package java.util.concurrent.locks: interfaccia Lock ed i suoi metodi, synchronized vs. lock, ReentrantLock, esercizio Produttori/Consumatori con i lock Java. Pattern Lettori/Scrittori e perchè si usa. Implementazione manuale del pattern lettori/scrittori. Interfaccia ReadWriteLock, suoi metodi e classi statiche ReadLock e WriteLock. ReentrantReadWriteLock (con il supporto dell'Ing. Marco Galassi).
E
3
Lun. 14/11/2016
MEMORIA - 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. 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) (Lucidi so7.pdf).
L
2
Mer. 16/11/2016
MEMORIA - Politiche di allocazione contigua: 3) Ripreso Partizionamento Dinamico della Momoria: 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 registri di segmento. Protezione e condivisione (Lucidi so7.pdf).
L
2
Ven. 18/11/2016
[RECUPERO 1 ora di lezione] 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) accennato al problema overhead in accesso: cache delle pagine da riprendere la volta prossima (Lucidi so8.pdf).
L
1
Ven. 18/11/2016
LABORATORIO (6) - THREAD IN JAVA - Esercizio su lettori/scrittori: creazione di una ConcurrentHashMap usando i read/write lock. Problema della cena dei filosofi e soluzione, implementazione in Java. High Level Concurrency Objects: il framework Executor. Separazione tra task e thread che esegue il task, Thread Pools, interfacce Executor, ExecutorService e loro metodi, vari tipi di Executor (cached thread pool, single thread pool, fixed thread pool), come creare Executor, sottomettere task e shutdown degli executors (con il supporto dell'Ing. Marco Galassi).
E
3
Lun. 21/11/2016
MEMORIA - Ripreso discorso sulla cache delle pagine: TLB miss e hit ratio. Protezione e condivisione: meno flessibili rispetto alla segmentazione. Problema di Frammentazione di pagina. Velocemente vantaggi/svantaggi di paginazione e segmentazione e quindi possibilità di combinazione dei due metodi di allocazione (segmentazione con paginazione). 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. 23/11/2016
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. 25/11/2016
LABORATORIO (7) - THREAD IN JAVA - Esercizio FactorialCalculator utilizzando il framework Executor, Callable e Future.
Concurrent Collections: interfaccia BlockingQueue ed alcune sue implementazioni, ConcurrentHashMap. AtomicVariables (con il supporto dell'Ing. Marco Galassi).
E
3
Lun. 28/11/2016
LABORATORIO (8, lab. INFOMEC, RECUPERO) - THREAD IN JAVA - Mostrato l'esercizio Produttori/Consumatori completo, su richiesta degli studenti (con il supporto dell'Ing. Marco Galassi).
E
3
Mer. 30/11/2016
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
Ven. 02/12/2016
ESERCITAZIONE PERSA A CAUSA DEL PNI (Premio Nazionale Innovazione).
E
3
Lun. 05/12/2016
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
Mer. 07/12/2016
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 (Lucidi so9.pdf).
L
2
Ven. 09/12/2016
ESERCITAZIONE PERSA A CAUSA DEL PONTE.
E
3
Lun. 12/12/2016
FILE - Punto di vista del S.O. Implementazione dei direttori: DNF e DBF (es. UNIX: I-Number e I-Node). Le motivazioni per le diverse tabelle usate dinamicamente nell'accesso ai file in UNIX: una Tabella dei File Aperti per ogni singolo processo e tabelle di sistema, Tabella degli I-NODE Attivi e Tabella dei File Aperti (Lucidi so9.pdf). Metodi di allocazione e problema frammentazione interna: 1) Contigua. 2a) Non contigua concatenata (Es. MS-DOS: FAT) (Lucidi so9bis.pdf).
L
2
Mer. 14/12/2016
FILE - Metodi di allocazione: 2b) Non continua ad indice; problemi file corti e file lunghi; illustrato soluzione di UNIX. Ripreso il discorso dei link Hw in UNIX con dettagli su File System fisici montati sull'unico File System logico e su spiegazione di necessità dei link software per direttori e per traversare File System fisici differenti. Conclusioni su metodi di allocazione. Schemi funzionali delle primitive sui file con esemplificazioni in UNIX (Lucidi so9bis.pdf).
L
2
Ven. 16/12/2016
Prova in itinere (con il supporto dell'Ing. Marco Galassi).
L
3
Lun. 19/12/2016
FILE - Generalizzazione dei file: dispositivi (rivisto implementazione della ridirezione in UNIX) 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 so9bis.pdf). Discorso conclusivo sul corso: strutturazione a livelli di un sistema operativo, obiettivi formativi, programma ed esame (ripreso quindi lucidi iniziali).
L
2
Mer. 21/12/2016
Correzione della Prova in Itinere (con il supporto dell'Ing. Marco Galassi).
E
2
Ven. 23/12/2016
NON TENUTA perchè già completate le ore!
E
3

Legenda:
E= Esercitazione
L= Lezione