64
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
REGGIO DI CALABRIA
Dati Generali
Periodo di attività
Syllabus
Obiettivi Formativi
Gli obiettivi formativi del corso sono i seguenti:
- Comprendere architettura, servizi e meccanismi interni dei sistemi operativi.
- Analizzare processi, thread e algoritmi di scheduling, inclusi Windows e Linux CFS.
- Progettare soluzioni di programmazione concorrente, gestendo sincronizzazione e deadlock.
- Applicare tecniche avanzate di gestione memoria, cache e memoria virtuale.
- Valutare file system, storage, RAID e scheduling del disco.
- Comprendere gestione I/O e struttura dei driver.
- Analizzare modelli di sicurezza e controllo accessi nei sistemi operativi.
Prerequisiti
Conoscenza dei fondamenti della programmazione e conoscenza basilare del linguaggio Java e dell'ambiente di esecuzione Eclipse.
Metodi didattici
Lezioni frontali ed esercitazioni. Le esercitazioni, che riguardano la programmazione concorrente in Java, sono condotte attraverso metodi didattici interattivi che favoriscono il lavoro di gruppo, l'acquisizione di competenze pratiche e il ruolo proattivo dello studente.
Verifica Apprendimento
Prova scritta della durata di un'ora e mezza che verte sulla soluzione in Java (multithread) di problemi di programmazione concorrente e prova orale che mira ad accertare le conoscenze acquisite su tutto il programma del corso.
Il punteggio, che tiene conto sia della prova scritta sia della prova orale, verrà attribuito secondo il seguente schema:
30 - 30 e lode Eccellente Lo studente: - dimostra una conoscenza completa e dettagliata della materia: conosce i contenuti rilevanti, utilizza una terminologia corretta, individua e spiega i principali concetti, integra approfondimenti personali nella propria sintesi; - evidenzia una comprensione eccellente della materia: distingue chiaramente tra le idee principali e quelle di sopporto, sa inquadrare i punti chiave, rinforza gli argomenti con riferimenti al materiale integrativo o ad approfondimenti individuali, sviluppa collegamenti interdisciplinari; - manifesta capacità ben consolidate di applicare le conoscenze e di analizzare i risultati; - espone la materia in modo chiaro e strutturato: il suo discorso è organizzato, logico, maturo e conciso.
28 - 29 Ottimo Lo studente: - dimostra una conoscenza approfondita della materia: conosce i contenuti rilevanti, utilizza una terminologia corretta, individua e spiega la maggior parte dei principali concetti; - evidenzia una solida comprensione della materia: inquadra la maggior parte dei punti chiave benché non sempre distingua bene gli argomenti principali da quelli meno importanti, discute gli argomenti con riferimenti al materiale integrativo o ad approfondimenti individuali; - manifesta ottime capacità di applicare le conoscenze e di analizzare i risultati; - espone la materia in modo chiaro e articolato: il suo discorso è organizzato, logico, maturo ed essenziale, pur ammettendo qualche imprecisione.
25 - 27 Buono Lo studente: - dimostra un’ampia conoscenza della materia: conosce, anche se non spiega completamente, i contenuti rilevanti; utilizza la terminologia, ma non sempre in modo preciso; individua i concetti chiave, ma non riesce a spiegarli completamente o con precisione. - evidenzia una comprensione adeguata della materia: distingue i punti chiave importanti, ma non riesce a inquadrarli completamente; - manifesta buone capacità di applicare le conoscenze; - espone in modo chiaro, ma non sempre completo, con un’organizzazione schematica e pensieri talvolta frammentati e ripetitivi.
22 - 24 Discreto Lo studente: - dimostra un’accettabile conoscenza della materia: conosce la maggioranza dei contenuti ma manifesta lacune, mostra una certa confusione in alcuni concetti importanti anche se non essenziali; - evidenzia una comprensione essenziale della materia: non riesce sempre a inquadrare tutti i suoi argomenti o talvolta lo fa con imprecisione; - manifesta discrete capacità di applicare i concetti fondamentali della materia; - espone in modo corretto, ma senza una struttura del tutto chiara e coerente, inserendo in alcuni punti dello sviluppo materiale poco rilevante.
18 - 21 Sufficiente Lo studente: - dimostra una limitata conoscenza della materia: conosce i contenuti più rilevanti ma manifesta numerose lacune, individua una buona parte dei concetti chiave ma non riesce a illustrarli con completezza e precisione; - dimostra una comprensione basica della materia: ha qualche difficoltà a distinguere i punti chiave e non sempre riesce a inquadrarli compitamente per incompletezza o imprecisione; - manifesta incertezze nell’applicare i concetti fondamentali della materia; espone in modo poco chiaro e confuso, usa la lingua in modo poco organizzato, con pensieri frammentati e ripetitivi, non sempre utilizza la terminologia con precisione.
Insufficiente Lo studente: - dimostra una conoscenza scarsa e frammentaria della materia: non conosce i contenuti essenziali, manifestando estese lacune, e non individua i concetti chiave; - manifesta gravi errori di comprensione, non risponde a numerose domande o non risolve numerosi problemi; manifesta errori nell’applicare i concetti fondamentali della materia; - non raggiunge un livello accettabile di articolazione del pensiero relativo alla materia.
Testi
• Silberschatz, Galvin, Gagne. Sistemi operativi: Concetti ed esempi (10° ed.). Pearson, ISBN: 9788891904553
• S. Tanenbaum. Modern Operating Systems, (3° ed.). Pearson Prentice Hall, ISBN-10:0136006639
• Paolo Ancilotti, Maurelio Boari, Anna Ciampolini, Giuseppe Lipari. Sistemi Operativi, (2° ed.) McGraw-Hill ISBN: 9788838664328
Contenuti
1. Introduzione e Struttura del Sistema Operativo (0.5 CFU)
Concetti di base
Tipi di sistemi operativi
Architetture dei calcolatori (cenni)
Componenti di un SO
Servizi e funzioni dei SO
Interrupt e System Call
API (Application Program Interface)
2. Processi e Thread (1 CFU)
Rappresentazione di un processo in un sistema operativo (PCB)
Meccanismo di multiplexaggio della CPU
Diagramma di transizione di stato
Scheduling dei processi
Algoritmi di scheduling:
- Round Robin
- SJF
- SJF preemptive
- Algoritmo basato su CPU burst
- Scheduling a lotteria
- Scheduling con priorità statica
- Scheduling con priorità dinamica
- Scheduling di Windows
- Scheduling di Linux (CFS)
Vantaggi della programmazione multithreading
Thread a livello utente e livello kernel
Soluzioni miste (Solaris)
Scheduling dei Thread
3. Programmazione concorrente (0.5 CFU)
Errori time-dependent e corse critiche
Sezione critica
Proprietà attese per i programmi concorrenti
Liveness, Fairness
Soluzione di Peterson
Semafori binari e generalizzati
Problema Produttore-Consumatore
Monitor
Implementazione del monitor attraverso semafori
Implementazione dei semafori:
-limiti della disabilitazione delle interruzioni
-implementazione attraverso Test and Set Lock
-cenni ad altre implementazioni
Deadlock: definizione e condizioni che lo determinano
Prevenzione del Deadlock attraverso gerarchizzazione delle risorse
Detection&Recovery del Deadlock: Grafo di Allocazione delle Risorse
4. Laboratorio (2 CFU)
La programmazione concorrente in Java
La classe Thread
L'interfaccia Lock e la classe Condition
Esempi di programmi concorrenti
5. Gestione della memoria e Cache (1.5 CFU)
Swap di processi
Allocazione contigua, rilocazione, registri base e limite
Paginazione
Tabella delle pagine e tabella delle pagine invertita
Bit di riferimento, bit di modifica, bit di blocco, bit ab/dis cache, bit di validità
Segmentazione
MMU, TLB
Memoria virtuale
Principio di località
LRU e working set
Problema del Trashing e scheduling di medio termine
Allocazione locale e globale
Algoritmi di sostituzione delle pagine:
-FIFO
-Not Recently Used
-Algortimo dell'Orologio (Clock)
-LRU basato su stringhe di bit di riferimento
-Algoritmo basato su martice HW
-Algoritmo basato su working set
-Algoritmo WSClock
Introduzione alla cache
Analisi del tempo di accesso alla memoria in presenza di cache
Cache a corrispondenza diretta (con tag)
Cache associative
Cache set-associative
6. File system e Memoria secondaria (1 CFU)
L'astrazione file
Directory
Struttura di un file system
Metodi di allocazione dei file:
-Allocazione contigua
-Lista concatenata
-Lista concatenata con cluster
-File allocation table (FAT)
Organizzazione File System in Unix: Boot Block, Super Block, I-List, Data Blocks
I-node con single, double and triple indirect
soft e hard link
Dimensione massima di un file indicizzabile con i-node
Strutture dati relative ai file:
- Processo: Tabella dei file aperti
- Kernel: Tabella dei file aperti e I/O pointer e Tabella dei file attivi
Gestione dello spazio libero
-mappa di bit
-liste concatenate
Struttura dei dischi (magnetici)
Funzione dell'MBF
Tempo di accesso al disco
Formattazione dei dischi:
-Interleaving
-Skew
Gestione blocchi difettosi
Algoritmi di Scheduling del disco:
-FIFO
-Shortest Seek First
-SCAN, CSCAN, Lookahead
NAS - Network Attached Storage
SAN - Storage Area Network
Misure di affidabilità e disponiblità: MTBF e rapporto di Availability
MTBF e array di dischi
RAID (0,1,2,3,4,5)
7. Gestione dell'I/O (0.5 CFU)
Introduzione a I/O nei Sistemi Operativi
Dispositivi di I/O: a caratteri, a blocchi, di rete, speciali
Device Controller
Strutturazione a livelli del SW di I/O:
interrput handler, driver, device-independent software, user-level sofwtare
Caratteristiche generali dei driver.
Funzioni dell'user-level software:
- funzioni per invocare le API/System Call
- gestione eccezioni
- Spooling
Funzioni del device-independent software:
- bufferizzazione e tecnica del read ahead,
- interfaccia verso i driver,
- naming e formattazioni blocchi
- gestione accesso ai dipositivi,
- gestione delle eccezioni
Interrupt: precisi e imprecisi
I/O a controllo di programma
I/O interrupt driven
I/O con DMA
8. Fondamenti di Cybersecurity (con riferimento ai SO) (1 CFU)
Attributi della Security: CIA
Security nei sistemi operativi
Security policies e access control
User account
Modalità di esecuzione
Isolamento dei processi, fairness, quote
Privilegi di utenti e processi
Access Control Matrix
Domain transfer
Access delegation
Resource ownership
Access Control List
Capability List
Usecase (UNIX): accesso alle risorse, modifica dei permessi (chmod), user e group ID,
file: /etc/passwd, EUID e cambio di UID (bit SETUID).
Cenni al buffer overflow.
RISULTATI ATTESI
I risultati attesi del corso, in accordo ai descrittori di Dublino, sono i seguenti:
Conoscenze e capacità di comprensione:
Conoscenza delle funzioni principali dei sistemi operativi con riferimento a Processi, Gestione della Memoria, Gestione dell'I/O e File System e dei Fondamenti di Cybersecurity con riferimento ai Sistemi Operativi
Capacità di applicare conoscenze e comprensione:
Capacità di programmare in accordo al paradigma concorrente, con particolare riferimento al multi-threading di Java
Autonomia di giudizio:
Capacità di valutare in maniera critica le scelte fatte dai diversi sistemi operativi. Acquisizione di un appropriato livello di autonomia nella conoscenza degli aspetti teorici e gestione di aspetti pratici relativi ai sistemi operativi. Capacità di valutare misure elementari di sicurezza dei sistemi operativi.
Capacità di comunicazione:
Capacità di comunicare con adeguata competenza tecnica con altri partner in attività di gruppo volte alla progettazione e alla implementazione di sistemi con funzionalità simili a quelle dei sistemi operativi.
Capacità di apprendimento:
Capacità di apprendimento di diversi sistemi operativi e di diversi linguaggi di programmazione concorrente
Altre informazioni
codice Teams: kqbgaki
Canale utilizzato per distribuire agli studenti esercitazioni e altro materiale didattico.