Sistemi operativi i

A.A. 2019/2020
Insegnamento per
6
Crediti massimi
48
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
L'insegnamento si propone di introdurre 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 componenti principali di un sistema operativo didattico.
Al termine dell'insegnamento lo studente sarà in grado di: individuare le principali caratteristiche di un sistema operativo, valutarne le criticità ed i punti di forza, scrivere programmi che usano le principali API di sistema operativo, leggere e commentare codice di un sistema operativo reale.

Struttura insegnamento e programma

Edizione attiva
Responsabile
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
STUDENTI FREQUENTANTI
Programma
PARTE I: Concetti Generali
Introduzione ai sistemi operativi: principi, struttura ed evoluzione storica
CPU Virtualization
Processi: concetti e implementazione
API per la gestione dei processi
Tecniche per lo scheduling dei processi
Memory Virtualization
Address Space
La trasformazione defli indirizzi
API per la gestione della memoria
Il memory manager
Segmentazione
Paginazione, Segmentazione Paginata
Gestione dello swap space
Introduzione alla programmazione concorrente
I thread: concetti e implementazione
API per la gestione dei thread
Soluzioni al problema della mutua esclusione
Lock
Variabili condizione
Semafori
Deadlock: il problema e le soluzioni
I/O
Dispositivi di I/O: principi di funzionamento
Hard Disk
RAID
Il File system
Files & Directory
FSCK e Journaling
SSD
Propedeuticità
Programmazione, Architettura degli elaboratori
Prerequisiti e modalità di esame
Prerequisiti per lo svolgimento del corso sono: la conoscenza del linguaggio C e la conoscenza degli elementi
di base di un'architettura di calcolo.

L'esame per i corsi di Sistemi Operativi I e II si svolge in un'unica prova composta da: scritto, orale e pratico.
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;
svolgimento di un esercizio di programmazione con l'uso della libreria Pthread o con l'uso delle API Unix viste a lezione;
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. Il voto finale dell'esame sarà formato sommando ai 2/3 del voto ottenuto nelle prove di teoria,
1/3 del voto ottenuto nelle prove di laboratorio.
Metodi didattici
Lezioni frontali ed esercitazioni di laboratorio
Materiale didattico e bibliografia
LIBRO DI TESTO:
Operating Systems: Three Easy Pieces di Remzi H. Arpaci-Dusseau e Andrea C. Arpaci-Dusseau
Dispensa sul sistema operativo JOS
È disponibile, in versione beta, una dispensa inerente alcune componenti del sistema operativo JOS: bootstrap, bootloader, memory manager e virtual memory. Si tratta di materiale in versione preliminare, che quindi potrebbe ancora contenere errori. In questo caso si invitano gli studenti a riportare gli stessi al docente.
Materiale da Consultare per la seconda parte del corso:
Programmer's Reference Manual Intel 386
xv6: a simple Unix-like teaching operating system
xv6 source code
Le seguenti dispense relative ai Lab. 1,2,3.
Materiale Integrativo
Il presente materiale può essere utilizzato ad integrazione del materiale presentato a lezione

System Programming Guide - Part I by Intel Corporation
System Programming Guide - Part II by Intel Corporation
Articolo interessante sull'uso della programmazione concorrente
STUDENTI NON FREQUENTANTI
Programma
PARTE I: Concetti Generali
Introduzione ai sistemi operativi: principi, struttura ed evoluzione storica
CPU Virtualization
Processi: concetti e implementazione
API per la gestione dei processi
Tecniche per lo scheduling dei processi
Memory Virtualization
Address Space
La trasformazione defli indirizzi
API per la gestione della memoria
Il memory manager
Segmentazione
Paginazione, Segmentazione Paginata
Gestione dello swap space
Introduzione alla programmazione concorrente
I thread: concetti e implementazione
API per la gestione dei thread
Soluzioni al problema della mutua esclusione
Lock
Variabili condizione
Semafori
Deadlock: il problema e le soluzioni
I/O
Dispositivi di I/O: principi di funzionamento
Hard Disk
RAID
Il File system
Files & Directory
FSCK e Journaling
SSD
Prerequisiti e modalità di esame
Prerequisiti per lo svolgimento del corso sono: la conoscenza del linguaggio C e la conoscenza degli elementi
di base di un'architettura di calcolo.

L'esame per i corsi di Sistemi Operativi I e II si svolge in un'unica prova composta da: scritto, orale e pratico.
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;
svolgimento di un esercizio di programmazione con l'uso della libreria Pthread o con l'uso delle API Unix viste a lezione;
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. Il voto finale dell'esame sarà formato sommando ai 2/3 del voto ottenuto nelle prove di teoria,
1/3 del voto ottenuto nelle prove di laboratorio.
Materiale didattico e bibliografia
LIBRO DI TESTO:
Operating Systems: Three Easy Pieces di Remzi H. Arpaci-Dusseau e Andrea C. Arpaci-Dusseau
Dispensa sul sistema operativo JOS
È disponibile, in versione beta, una dispensa inerente alcune componenti del sistema operativo JOS: bootstrap, bootloader, memory manager e virtual memory. Si tratta di materiale in versione preliminare, che quindi potrebbe ancora contenere errori. In questo caso si invitano gli studenti a riportare gli stessi al docente.
Materiale da Consultare per la seconda parte del corso:
Programmer's Reference Manual Intel 386
xv6: a simple Unix-like teaching operating system
xv6 source code
Le seguenti dispense relative ai Lab. 1,2,3.
Materiale Integrativo
Il presente materiale può essere utilizzato ad integrazione del materiale presentato a lezione:

System Programming Guide - Part I by Intel Corporation
System Programming Guide - Part II by Intel Corporation
Articolo interessante sull'uso della programmazione concorrente
Periodo
Primo semestre
Periodo
Primo semestre
Modalità di valutazione
Esame
Giudizio di valutazione
voto verbalizzato in trentesimi
Siti didattici
Docente/i
Ricevimento:
su appuntamento e-mail: danilo.bruschi@unimi.it
Stanza 8024 via Celoria 18