SISTEMI OPERATIVI

Pasquale FOGGIA SISTEMI OPERATIVI

0612700030
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
CORSO DI LAUREA
INGEGNERIA INFORMATICA
2020/2021



OBBLIGATORIO
ANNO CORSO 2
ANNO ORDINAMENTO 2017
PRIMO SEMESTRE
CFUOREATTIVITÀ
324LEZIONE
324ESERCITAZIONE


Obiettivi
L’insegnamento mira all’acquisizione di competenze relative all’organizzazione, funzionamento e gestione delle risorse (CPU, memoria e dispositivi) di un elaboratore elettronico. In particolare, verranno acquisite competenze sull’architettura di un sistema operativo, sulle principali funzioni svolte, sulle problematiche (politiche e meccanismi) per la progettazione di un sistema operativo e su come tali aspetti sono implementati nei sistemi operativi moderni unitamente ad aspetti legati al supporto fornito dal sistema per l’allocazione della memoria e per la comunicazione e la sincronizzazione dei processi.

Conoscenze e comprensione
Conoscenze delle funzioni svolte da un sistema operativo moderno, con particolare riferimento alla gestione dei processi, della memoria, delle periferiche e dei file, e comprensione delle tecniche di base di implementazione di tali funzioni (algoritmi di scheduling, allocazione della memoria, page replacement e file system) ed interprocess communication.

Applicazione delle conoscenze e della comprensione
Comprendere cosa succede all’interno di un elaboratore durante l’esecuzione dei programmi, saper usare le system call di un sistema operativo per la sincronizzazione dei processi e la gestione della memoria. Capacità di sviluppare semplici script di shell.
Prerequisiti
L’insegnamento richiede la propedeuticità dell’insegnamento di Fondamenti di Programmazione. Per il proficuo raggiungimento degli obiettivi prefissati sono richieste le conoscenze acquisite nell’ambito dell’insegnamento di Calcolatori Elettronici.
Contenuti
Introduzione (Lez/Ese/Lab: 2/0/0 h)
Introduzione storica all'evoluzione dei sistemi operativi. Le principali famiglie di sistemi operativi attuali. Introduzione alla famiglia Unix. Il modello a strati del sistema operativo.

Il nucleo e la gestione dei processi (Lez/Ese/Lab: 8/0/6 h)
Il concetto di processo e la multiprogrammazione. Stati di un processo. Scheduling. Priorità. Gestione dei processi in modalità batch, time-sharing e real time. La gestione dei processi in Unix. I thread. La sincronizzazione: mutex, semafori e variabili condition. Il deadlock.

La gestione della memoria (Lez/Ese/Lab: 6/0/4 h)
I problemi nella gestione della memoria: rilocazione, protezione dei processi. Swapping. Caricamento dinamico. Il modello della memoria in un processo Unix. La memoria virtuale. La MMU. Paging.

L'input/output e la gestione dei file (Lez/Ese/Lab: 8/0/6 h)
Astrazione e virtualizzazione delle periferiche. I driver. Caricamento dinamico dei driver. Il file system. Partizioni e volumi. Sistemi RAID. Allocazione dello spazio su disco. Gestione dei file. Gestione delle directory. Journaling. Controllo di accesso: permessi e ACL. File system di rete. Esempi di file systems disponibili nei sistemi Unix. I permessi dei file sotto Unix.

L'interfaccia utente e l'interprete dei comandi (shell) (Lez/Ese/Lab: 4/0/4 h)
Caratteristiche generali di una shell. La shell bash. Accesso remoto e SSH. Script di shell. Variabili di ambiente. Path. Comandi per la gestione dei file. Redirezione dell'I/O. Strutture di controllo (selezione e iterazione). Pipes e processi in background. Comandi per la gestione dei processi e dei job. Il comando find. Le espressioni regolari e i comandi grep e sed.

TOTALE Lez/Ese/Lab: 28/0/20
Metodi Didattici
L’insegnamento contempla lezioni teoriche ed esercitazioni di laboratorio. Nelle esercitazioni di laboratorio agli studenti è richiesta la scrittura di programmi in C e nel linguaggio della shell bash utilizzando il sistema operativo Linux.

La frequenza delle lezioni è obbligatoria. Per accedere all'esame finale, lo studente deve aver frequentato almeno il 70% delle ore di didattica frontale.
Verifica dell'apprendimento
L’esame prevede lo svolgimento di una prova scritta ed una orale, valutate in 30-esimi. Per accedere all’orale occorre superare la prova scritta con un voto minimo di 18/30. Durante lo svolgimento del corso è prevista una prova scritta parziale (prova in itinere), esonerativa di una parte della prova scritta.

La prova scritta è tesa a valutare la comprensione dei principali meccanismi per la gestione dei processi, la gestione della memoria e la gestione dei file, nonché la capacità di scrivere semplici programmi in C che usano le system call per la gestione dei processi, e di scrivere script per la shell bash.

La prova orale e tesa a valutare il livello delle conoscenze teoriche, l’autonomia di analisi e giudizio, nonche le capacita espositive dell’allievo.

Il livello di valutazione minimo (18) è attribuito quando l’allievo ha una conoscenza frammentaria dei contenuti teorici e mostra una limitata capacità di applicare le conoscenze acquisite. Il livello di valutazione massimo (30) è attribuito quando l’allievo dimostra una conoscenza completa degli aspetti teorici e una notevole capacità di applicare le conoscenze per risolvere problemi simili a quelli presentati nel corso. La lode è attribuita quando l’allievo dimostra una conoscenza completa ed approfondita degli aspetti teorici, una notevole proprietà di linguaggio e una notevole capacità di elaborazione autonoma nell’applicare le conoscenze acquisite anche in contesti diversi da quelli proposti durante il corso.
Testi
*Silberschatz, Galvin, Gagne: “Sistemi operativi: Concetti ed esempi”, decima edizione, Addison-Wesley.
*Materiale supplementare (dispense, tutorial) verrà fornito dai docenti durante lo svolgimento del corso
Altre Informazioni
Il corso è tenuto in italiano.
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2022-05-23]