Sistemi operativi

A.A. 2018/2019
Insegnamento per
12
Crediti massimi
120
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
Il corso consentirà allo studente di comprendere i principali concetti su cui è basata la realizzazione di un sistema operativo, le sue funzionalità principali nonchè acquisire padronanza nell'uso delle principali API del sistema operativo Linux. Al fine di fornire agli studenti una migliore comprensione dei diversi temi affrontati verrà affrontato lo studio delle componenit principali di un sistema operativo didattico: il sistema operativo JOS. L'ispezione del codice sorgente di JOS, permetterà agli studenti di apprendere come sono implementate su architetture reali le principali funzionalità di un sistema operativo e le relazioni che intercorrono tra i vari componenti del sistema operativo. In laboratorio gli studenti saranno messi in grado di modificare il codice sorgente del kernel di JOS modificando o aggiungendo alcune funzionalità. In tal modo potranno anche imparare le nozioni di base della programmazione di sistema.

Struttura insegnamento e programma

Linea Milano
Edizione attiva
Responsabile
INF/01 - INFORMATICA - CFU: 12
Laboratori: 48 ore
Lezioni: 72 ore
Turni:
Turno cognomi A-I
Docente: Monga Mattia
Turno cognomi L-Z
Docente: Re' Matteo
Programma
PARTE I: Concetti Generali

Introduzione ai sistemi operativi: principi, struttura ed evoluzione storica
Processi: concetti e implementazione
API per la gestione dei processi
Tecniche per lo scheduling dei processi
Memory management
Tecniche di memoria virtuale: paginazione, segmentazione,segmentazione paginata
API per la gestione della memoria
Introduzione alla programmazione concorrente
I thread: concetti e implementazione
APi per la gestione dei thread
Soluzioni al problema della mutua esclusione
I meccanismi di Interprocess communication
Deadlock: il problema e le soluzioni
Tecniche per la gestione dei dispositivi di INPUT/OUTPUT
Il File system
PARTE II: Aspetti implementativi

Introduzione all'architettura IA-32
GNU ASSEMBLER LANGUAGE
Eccezioni e Interrupt in IA-32
Analisi e implementazione di un programma elementare di bootstrap e di un bootloader
Analisi e implementazione di un gestore delle Eccezioni
Analisi e implementazione di un gestore degli Interrupt
Analisi e implementazione di un gestore della Memoria
Analisi e implementazione di un gestore dei processi
Analisi e implementazione di un gestore di syscall
Informazioni sul programma
Propedeuticità
Programmazione, Architetture I e II, Algoritmi
Prerequisiti e modalità di esame
Il corso richiede dimestichezza con la programmazione in C (con liste e puntatori) e i principi base delle architetture dei calcolatori e della programmazione assembly

L'esame è costituito da tre prove: scritta, orale e pratica. Le prove scritta e orale verteranno sul programma del corso svolto durante le lezioni di teoria.
La prova scritta è costituita da: 20 domande a risposta multipla;
lo svolgimento di un esercizio di programmazione con l'uso della libreria Pthread o con l'uso delle API Unix viste a lezione;
lo svolgimento di un esercizio di programmazione consistente nella modifica o stesura delle procedure del sistema operativo JOS viste a lezione.
Il superamento della prova scritta è requisito necessario per l'accesso alla prova orale. Durante la prova scritta lo studente potrà accumulare sino a 3 punti che saranno poi sommati al voto finale della prova orale. Le prove scritta e orale devono essere sostenute nello stesso appello mentre la prova di laboratorio può essere sostenuta in appelli diversi purché entro la fine dell'anno accademico in corso. La prova scritta può essere sostenuta anche attraverso due compitini intermedi, in questo caso gli studenti dovranno sostenere la prova orale ENTRO l'appello di Luglio.

La prova pratica in laboratorio è composta da tre parti:
1. partizionamento di una memoria di massa
2. esercizio di programmazione shell
3. esercizio di programmazione kernel (JOS)
Per raggiungere la sufficienza è necessario superare le parti 1. e 2. Voti maggiori di 24 sono riservati agli studenti che abbiano affrontato in modo adeguato anche l'esercizio 3.


Il voto finale dell'esame sarà formato sommando ai 2/3 del voto ottenuto nelle prove di teoria, 1/3 del voto ottenuto nella prova pratiche in laboratorio.
Metodi didattici
Didattica frontale
Materiale didattico e bibliografia
Operating Systems: Three Easy Pieces di Remzi H. Arpaci-Dusseau e Andrea C. Arpaci-Dusseau
Periodo
Secondo semestre
Periodo
Secondo semestre
Modalità di valutazione
Esame
Giudizio di valutazione
voto verbalizzato in trentesimi
Docente/i
Ricevimento:
su appuntamento e-mail: danilo.bruschi@unimi.it
Stanza 8024 via Celoria 18
Ricevimento:
Su appuntamento
Uff. 5004, Via Celoria 18, Milano