Università degli Studi di Milano

Corso di Laurea triennale in Informatica

Sistemi Operativi e Laboratorio

A.A. 2016-17

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


AVVISI - Laboratorio


AVVISO

A causa del ritardo accumulatosi nella prima parte del corso, in parte dovuto alla sovrapposizione di festività accademiche con gli orari delle lezioni, la prova in itinere, prevista per il giorno 21 APRILE 2017 è rinviata e sarà svolta non appena saranno stati trattati a lezione tutti gli argomenti inerenti il tema della concorrenza, orientativamente tra il 10 ed il 20 Maggio.

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à 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.

PROVE D'ESAME

Modalità d'esame e votazione

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 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.

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.

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. 16/17



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 e che potranno essere oggetto delle prove d'esame.

Il materiale del laboratorio è sul Wiki.

A.A. 2016/2017

  • 27-02: Lezione 1: introduzione ai sistemi operativi. Cap. 1 e 2 del libro di testo
  • 03-03: CARNEVALE AMBROSIANO
  • 07-03: Lezione 2: evoluzione storica dei sistemi operativi, processi e API di riferimento. Cap. 2, 3, 4 del libro di testo
  • 10-03: Lezione 3: CPU virtualization: context switch e syscall. Cap. 5 del libro di testo
  • 14-03: Lezione 4: CPU Virtualization: Scheduling policies - Cap. 6, 7 del libro di testo
  • 17-03: Lezione 5: CPU Virtualization: Multilevel Feedback scheduler - Cap. 8, Ex. pag 62 del libro di testo
  • 21-03: Lezione 6: Memory Virtualization: Address spaces, API, Address translation -
  • 24-03: Lezione 7: Memory Virtualization: Segementation - Cap. 16 del libro di testo
  • 28-03: Lezione 8: Memory Virtualization: paging / TLB - Cap. 18 & 19 del libro di testo
  • 31-03: Lezione 9: Memory Virtualization: smaller tables- Cap. 20 del libro di testo
  • 04-04: Lezione 10: Memory Virtualization: smaller tables, present bit, page fault, ecc. - Cap. 21 del libro di testo
  • 07-04: Lezione 11: Memory Virtualization: beyond physical memory - policies - Cap. 22 / 24 del libro di testo
  • 11-04 Lezione 12: Concurrency: Introduction, API, Locks - Cap. 25, 26, 27, 28 del libro di testo
  • 14-04 Vacanze Pasquali
  • 18-04 Vacanze Pasquali
  • 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: Giovedì, 7 Luglio 2016 at 16:58 UTC.