Università degli Studi di Milano

Corso di Laurea triennale in Sicurezza

Sistemi Operativi e Laboratorio e Sicurezza e Privatezza

A.A. 2019-20

Docente Teoria: Danilo Bruschi
Docenti Laboratorio: Mattia Monga


Risultati della prova scritta di SISOP svolta in data 14 Settembre 2020



AVVISI - Laboratorio


Il sito web relativo alla parte di teoria del corso è stato trasferito QUI.
Gli studenti che non riescono ad accedere al sito nuovo sono pregati di rivolgersi alla segreteria didattica.

Programma del Corso A.A. 18/19

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 componenti 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. 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. 2017/2018

Si ricorda che per registrare il voto è necessario iscriversi all'appello tramite SIFA, 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.


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. 2018/2019

  • 27-02: Lezione 1: introduzione ai sistemi operativi. Cap. 1 e 2 del libro di testo
  • 02-03: Lezione 2: evoluzione storica dei sistemi operativi, la nozione di processo Cap. 2
  • 06-03: Lezione 3: la nozione di processo e relative API-linux di riferimento. Cap. 3, 4 del libro di testo
  • 09-03: Lezione 4: CPU virtualization: context switch e syscall. Cap. 5 del libro di testo
  • 13-03: Lezione 5: CPU Virtualization: Scheduling policies - Cap. 6, 7 del libro di testo
  • 16-03: Lezione 6: CPU Virtualization: Multilevel Feedback scheduler - Cap. 8, Esercizio di pag 62 del libro di testo
  • 20-03: Lezione 7: Memory Virtualization: Address spaces, API, Address translation - Cap. 12, 13, 14, 15 del libro di testo
  • 23-03: Lezione 8: Memory Virtualization: Segementation - Cap. 16 del libro di testo
  • 27-03: Lezione 9: Memory Virtualization: paging / TLB - Cap. 18 & 19 del libro di testo
  • 30-03: Vacanze Pasquali
  • 03-04: Vacanze Pasquali
  • 06-04: Lezione 10 Memory Virtualization: Advanced Page Tables Cap. 20 del libro di testo
  • 10-04: Lezione 11: Memory Virtualization: Swapping Mechanisms and Policies Cap. 21 & 22 del libro di testo
  • 13-04 Lezione 12: Concurrency: Introduction, Pthreads API, Locks - Cap. 25, 26, 27, 28 del libro di testo
  • 17-04 Lezione 13: Algoritmo di Peterson, lock implementations, Condition Variables, Semafori - Cap. 30, 31 del libro di testo
  • 20-04 Lezione 14: Mutua esclusione e Sincronizzazione con i semafori, il Problema Produttore/Consumatore - Cap. 31 del libro di testo
  • 24-04 Lezione 15: Il problema dei cinque filosofi, gli errori della programmazione concorrente, L'algoritmo del banchiere - Cap. 32 del libro di testo
  • 27-04 Lezione 16: Persistence: I/O Devices - Cap. 36 del libro di testo
  • 04-05 Lezione 17: COMPITINO
  • 08-05 Lezione 18: Peristence: Hard disks, RAID - Cap. 37, 38 del libro di testo
  • 11-05 Lezione 19: Persistence: File and directories - Cap. 39 del libro di testo
  • 15-05 Lezione 20: Persistence: File system implementation - Cap. 40 del libro di testo
  • 18-05 Lezione 21: Persistence: Crash Consistency Cap. 42 del libro di testo, Introduzione all'architettura IA-32
  • 22-05 Lezione 22: Il Bootloader di JOS (I parte)
  • 25-05 Lezione 23: Il Bootloader di JOS (II parte)
  • 29-05 Lezione 24: La memoria virtuale in JOS (I parte)
  • 01-06 Lezione 25: La memoria virtuale in JOS (II parte)
  • 05-06 Lezione 26: Eccezioni, Interrupt, Processi e Syscall
  • 08-06 Lezione 27: Eccezioni, interrupt, processi e syscall (II parte)

  • Lo studente dovrà inoltre essere in grado di spiegare, durante la prova orale e previa lettura, il codice del sistema operativo JOS contenuto nei seguenti file sorgente:

    HOMEWORKS

    Durante lo svolgimento delle lezioni per facilitare l'apprendimento di alcuni argomenti sarà introdotto l'uso dei simulatori reperibili a questo indirizzo . Gli esercizi proposti da questi simulatori potranno anche essere oggetto di domande durante le prove d'esame.

    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.

    Stima del materiale da studiare in preparazione dell'esame

    Riportiamo qui di seguito il materiale che lo studente deve studiare per prepararsi alla prova d'esame del corso di SISTEMI OPERATIVI I e II . Argomenti non trattati durante le lezioni ma contenuti nel materiale sottoindicato potranno comunque essere oggetto di verifiche durante le prove d'esame (Scritto e/o orale). Le numerazioni di capitoli e paragrafi fanno riferimento al libro di testo adottato.

    Inoltre lo studente dovrà essere in grado di spiegare, durante la prova orale e previa lettura, il codice del sistema operativo JOS contenuto nei seguenti file sorgente:

    Valid XHTML 1.0 Strict hhmts start Last modified: hhmts end