Università degli Studi di Milano

Corso di Laurea triennale in Informatica

Sistemi Operativi e Laboratorio

A.A. 2015-16

Docente Teoria: Danilo Bruschi
Docenti Laboratorio: Mattia Monga e Matteo Re


AVVISI - Laboratorio


OBIETTIVI DEL CORSO

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à studiato il sistema operativo JOS, almeno nelle sue componenti principali. 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.

PROVE D'ESAME

Modalità d'esame

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:

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 possono essere sostenute 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 ostenere la prova orale ENTRO l'appello di Luglio.

Calendario annuale delle prove scritte A.A. 2015/2016

Si ricorda che per registrare il voto è necessario iscriversi all'appello tramite SIFA, in particolare è necessario registrarsi sia all'appello di SITEMI OPERATIVI I che all'appello di SISTEMI OPERATIVI II. La prova orale è solitamente svolta dopo qualche giorno rispetto alla prova scritta. Si ricorda agli studenti che per potersi iscrivere all'esame è necessario aver preventivamente compilato il questionario di valutazione del corso.

Le prove superate durante un anno accademico sono valide solo per quell'anno accademico (giugno 20XX-febbraio 20XX+1).

Gli esami vanno verbalizzati entro l'appello in cui si completa il superamento delle due prove, e comunque non oltre l'ultimo appello dell'anno accademico, pena l'annullamento del voto con conseguente ripetizione di entrambe le prove.


ORARI

Lezioni

Ricevimento docenti

Email ricevute da indirizzi non istituzionali (di ateneo o del SILAB) o non firmate saranno ignorate.

Programma del Corso A.A. 15/16



MATERIALE DIDATTICO

L'esposizione degli argomenti durante le lezioni frontali seguirà fedelmente l'impostazione del libro di testo che gli studenti sono invitati ad usare in modo intensivo. Riportiamo qui sotto i diversi argomenti che sono via via trattati a lezione.

Il materiale del laboratorio è sul Wiki.

A.A. 2015/1016

  • Lezione 1: introduzione ai sistemi operativi: Cap. 1 e 2 del libro di testo
  • Lezione 2: evoluzione storica dei sistemi operativi: Cap. 2 del libro di testo
  • Lezione 3: CPU virtualization: processi e API di riferimento - Cap. 3 & 4 del libro di testo
  • Lezione 4: CPU virtualization: context switch e syscall - Cap. 5 del libro di testo
  • Lezione 5: CPU Virtualization: Scheduling policies - Cap. 6, 7, 8 del libro di testo
  • Lezione 6: Memory Virtualization: Address spaces, API, Address translation, Segmentation - Cap. 12, 13, 14, 15, 16 del libro di testo
  • Lezione 7: Memory Virtualization: paging / TLB - Cap. 18 & 19 del libro di testo
  • Lezione 8: Memory Virtualization: smaller tables - Cap. 20 del libro di testo
  • Lezione 9: Memory Virtualization: Mechanisms and Policies - Cap. 21, 22 e 24 del libro di testo
  • Lezione 10: Concurrency: Introduction, API, Locks - Cap. 25, 26, 27, 28 del libro di testo
  • Lezione 11: Concurrency: condition variables & Semaphores - Cap. 30, 31 del libro di testo
  • Lezione 12: Concurrency: Producer-Consumer, Dining Philosophers, Deadlocks - Cap. 31, 32 del libro libro di testo
  • Lezione 13: Peristence: I/O Devices - Cap. 36 del libro di testo
  • Lezione 14: Peristence: Hard disks, RAID - Cap. 37, 38 del libro di testo
  • a
  • Lezione 15: Persistence: File and directories - Cap. 39 del libro di testo
  • Lezione 16: COMPITINO
  • Lezione 17: Persistence: File system implementation - Cap. 40 del libro di testo
  • 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

    Materiale di laboratorio

    Il materiale del laboratorio è sul Wiki.

    Valid XHTML 1.0 Strict Last modified: mercoledì, 26 giugno 2013 at 10:58 UTC.