64
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
REGGIO DI CALABRIA
Dati Generali
Periodo di attività
Syllabus
Obiettivi Formativi
Gli obiettivi formativi del corso, in accordo ai descrittori di Dublino, sono
i seguenti:
1) 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
2) Utilizzazione delle conoscenze e capacità di comprensione
Capacità di programmare in accordo al paradigma concorrente, con particolare riferimento al multi-threading di Java
3) Capacità di trarre conclusioni
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.
4) Abilità comunicative
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.
5) Capacità di apprendere
Capacità di apprendimento di diversi sistemi operativi e di diversi linguaggi di programmazione concorrente
Prerequisiti
Conoscenza dei fondamenti della programmazione e conoscenza basilare del linguaggio Java e dell'ambiente di esecuzione Eclipse.
Metodi didattici
Lezioni frontali ed esercitazioni
Verifica Apprendimento
Prova scritta 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 e lode: conoscenza completa, approfondita e critica degli argomenti, eccellente proprietà di linguaggio, completa ed originale capacità interpretativa, piena capacità di applicare autonomamente le conoscenze per risolvere i problemi proposti;
28 - 30: conoscenza completa e approfondita degli argomenti, ottima proprietà di linguaggio, completa ed efficace capacità interpretativa, in grado di applicare autonomamente le conoscenze per risolvere i problemi proposti;
24 - 27: conoscenza degli argomenti con un buon grado di padronanza, buona proprietà di linguaggio, corretta e sicura capacità interpretativa, buona capacità di applicare in modo corretto la maggior parte delle conoscenze per risolvere i problemi proposti;
20 - 23: conoscenza adeguata degli argomenti ma limitata padronanza degli stessi, soddisfacente proprietà di linguaggio, corretta capacità interpretativa, più che sufficiente capacità di applicare autonomamente le conoscenze per risolvere i problemi proposti;
18 - 19: conoscenza di base degli argomenti principali, conoscenza di base del linguaggio tecnico, sufficiente capacità interpretativa, sufficiente capacità di applicare le conoscenze di base acquisite;
<18 Insufficiente: non possiede una conoscenza accettabile degli argomenti trattati durante il corso.
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
Concetti di base
Tipi di sistemi operativi
Architetture dei calcolatori (cenni)
2. Struttura del Sistema Operativo
Componenti di un SO
Servizi e funzioni dei SO
Interrupt e System Call
API (Application Program Interface)
3. Processi
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)
4. Thread
Vantaggi della programmazione multithreading
Thread a livello utente e livello kernel
Soluzioni miste (Solaris)
Scheduling dei Thread
5. Programmazione concorrente
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
6. Laboratorio (2 CFU)
La programmazione concorrente in Java
La classe Thread
L'interfaccia Lock e la classe Condition
Esempi di programmi concorrenti
7. Gestione della memoria
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
8. Cache
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
9. File system
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
10. Gestione dell'I/O
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
11. Memoria secondaria
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)
12. Fondamenti di Cybersecurity (con riferimento ai SO)
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.