Progettazione di Sistemi Operativi - LM

From Agentgroup

Jump to: navigation, search


Questa pagina fornisce il materiale didattico e le informazioni relative all'insegnamento di Progettazione di Sistemi Operativi (9 CFU) per il Corso di Laurea Magistrale in Ingegneria Informatica, obbligatorio per il curriculum Data Engineering and Analytics, attivo dall'A.A. 2017-18.

Questo materiale didattico per una buona parte deriva da quello dell'insegnamento di Principi di Sistemi che fino all'A.A. 2016-17 era attivo al I anno della Laurea Magistrale.

Contents

News

ATTENZIONE: LA LEZIONE DI LUNEDi' 25/09/2017 SI TERRA' IN AULA M1.2 DI MATEMATICA. Potrebbero esserci altre modifiche di aule nei prossimoi giorni!

IMPORTANTE: devono essere aggiornati una parte dei lucidi!


Per la prima settimana di lezione, nelle due ore di Mercoledì verrà svolta lezione invece che esercitazioni.

Si avvisano gli studenti che due esercitazioni non si terranno per eventi non dipendenti dalla nostra volonta. In particolare:

  • Mercoledì 11 Ottobre il laboratorio INFOMEC è impegnato per lo svolgimento di una prova TOLC
  • Mercoledì 18 Ottobre le lezioni sono sospese su indicazione del Rettore per lo svolgimento di MOREJobs

Per delibera del Consiglio dei Corsi di Studio di Ingegneria Informatica è stato stabilita una corrispondenza ore/CFU di 8 ore per CFU e non più 9 come in precedenza: quindi per questo insegnamento le ore minime di esercitazioni per 3 CFU del Prof. Bicocchi corrispondono a 24 ore, mentre le ore minime di lezione per 6 CFU corrispondono a 48 ore.

Informazioni sul docente

Letizia-Nov2010.jpg

Prof. Letizia Leonardi

Dipartimento di Ingegneria "Enzo Ferrari" (Università di Modena e Reggio Emilia)

Via P. Vivarelli 10, 41125 MODENA

Telefono 0592056135 - Fax 0592056129

letizia.leonardi@unimore.it

Orario di ricevimento: Lunedì dalle 15 alle 17 (di norma, per eventuali modifiche consultare la pagina)

Orario delle Lezioni

ATTENZIONE: LA LEZIONE DI LUNEDi' 25/09/2017 SI TERRA' IN AULA M1.2 DI MATEMATICA. Potrebbero esserci altre modifiche di aule nei prossimoi giorni!

Le lezioni di questo insegnamento sono collocate nel I semestre e per l'A.A. 2017-18 avranno inizio Lunedì 18 Settembre 2017.

L'orario delle lezioni è disponibile sul sito di Ingegneria e in particolare quelle di Progettazione di Sistemi Operativi si trova qui. Qui di seguito si riporta per comodità l'orario:

Lunedì

ore 11-13 (lezione)

aula P1.3 (Fa-1c) (Ingegneria)

Mercoledì

ore 11-13 (esercitazione)

Lab. P2.5 (FA-2E) (Ingegneria)

Venerdì

ore 11-13 (lezione)

aula P2.4 (Fa-2d) (Ingegneria)

NOTE ALL'ORARIO:

Per la prima settimana di lezione, nelle due ore di Mercoledì verrà svolta lezione invece che esercitazioni.

Si avvisano gli studenti che due esercitazioni non si terranno per eventi non dipendenti dalla nostra volonta. In particolare:

  • Mercoledì 11 Ottobre il laboratorio INFOMEC è impegnato per lo svolgimento di una prova TOLC
  • Mercoledì 18 Ottobre le lezioni sono sospese su indicazione del Rettore per lo svolgimento di MOREJobs

Obiettivi dell'Insegnamento

Faq.png

L'obiettivo del corso è di far raggiungere allo studente una buona conoscenza e capacità di comprensione di ogni livello/gestore di cui si compone un Sistema Operativo allo scopo di poter capire le problematiche di progettazione di un Sistema Operativo sia riguardo ai meccanismi di funzionamento che alle relative politiche. L'applicazione di queste conoscenze riguarda gli aspetti di progettazione di un Sistema Operativo ispirato a UNIX. Questo corso rappresenta il completamento delle conoscenze rispetto al corso di Sistemi Operativi della Laurea triennale.

Programma dell'Insegnamento

Gli argomenti teorici che verranno affrontati saranno:

1) Generalità sui Sistemi Operativi Evoluzione storica: dai primi sistemi ai moderni sistemi operativi. Classificazione dei Sistemi Operativi: sistemi mono- e multi-utente, sistemi batch e interattivi, sistemi in time-sharing e real-time. Elementi di base di un Sistema Operativo: punto di vista esterno (utente o programmatore di sistema) e punto di vista interno.

2) Sistema Operativo come insieme di gestori delle risorse. In particolare:

a) Gestione della CPU Punto di vista esterno - tecniche di programmazione concorrente: modelli dei processi ad ambiente globale e ad ambiente locale; strumenti per la sincronizzazione di processi in ambiente globale (semafori, monitor, etc.) e locale (scambio di messaggi, RPC, etc.). Punto di vista interno - progettazione del nucleo: strutture dati e primitive; progettazione di algoritmi di scheduling; soluzioni al problema del blocco dei processi (deadlock).

b) Gestione della memoria Punto di vista esterno - programmi: assoluti, rilocabili staticamente, rilocabili dinamicamente. Punto di vista interno - progettazione dei metodi di allocazione: contigua (partizionamento statico e dinamico); swapping; segmentazione; non contigua (paginazione); gestione della memoria virtuale.

c) Gestione del File System Punto di vista esterno - organizzazione logica dei direttori e proprietà dei file; livello di programmazione. Punto di vista interno - progettazione dell'allocazione fisica in memoria secondaria: metodo contiguo; metodi non contigui (concatenamento e indicizzazione).

Quando necessario, questi argomenti saranno esemplificati rivedendone l'implementazione in UNIX/Linux.

Gli argomenti pratici che verranno affrontati in questo insegnamento saranno svolti utilizzando il linguaggio di programmazione C utilizzato per la progettazione del Sistema Operativo xv6 (a simple, Unix-like teaching operating system).

Registro delle lezioni

Dopo ogni lezione/esecitazione verrà compilato il registro con l'indicazione degli argomenti trattati.

Per l'A.A. corrente 2017-18 il registro si trova al link.

Modalità d'esame

Tesina.png

L'esame si compone di una prova orale e da una tesina facoltativa che, nel caso, deve essere presentata e discussa con il Prof. Bicocchi prima della prova orale. Per maggiori dettagli, vedere il seguito di questa pagina.

Prova orale

Nel caso uno studente abbia deciso di presentare una tesina al Prof. Bicocchi, la prova orale può essere sostenuta solo dopo aver discusso tale tesina. Una volta sostenuta la prova orale, NON sarà possibile presentare alcuna tesina.

La prova orale spazia su tutto il programma che verrà svolto: si consideri che come case-studies verrà fatto riferimento sia al Sistema Operativo UNIX/Linux che al Sistema xv6.

In particolare, l'orale prevede -in una prima fase- la somministrazione di un test a domande chiuse e aperte preparato per ogni studente, che tende a coprire tutti gli argomenti del programma; quindi -nella seconda fase- di solito prendendo spunto dalle risposte del test, si passa ad approfondire alcuni argomenti per arrivare al voto dell'orale. Il voto della prova orale è espresso in trentesimi e può arrivare ad un massimo di 33/30 (a seconda della difficoltà delle domande proposte). Tale voto potrà essere incrementato di un valore da 0-3 punti nel caso di svolgimento e discussione della tesina facoltativa secondo quanto sotto illustrato.

Per l'iscrizione alla prova orale, di norma, viene inserito un appello su ESSE3, altrimenti inviare una email al docente per avere informazioni.

Tesina

La tesina è facoltativa. L'argomento della eventuale tesina va concordato con il Prof. Bicocchi e avrà come ambito quello del Sistema xv6.

ModalitaEsame.png

La discussione della tesina deve avvenire prima della prova orale: il voto preso dallo studente nella tesina influirà sul voto finale andando ad incrementare il voto della prova orale di un valore che dipende dal seguente schema:

  • se il voto della tesina è compreso fra 18 e 21 l'incremento sarà di 0 punti;
  • se il voto della tesina è compreso fra 22 e 25 l'incremento sarà di 1 punti;
  • se il voto della tesina è compreso fra 26 e 28 l'incremento sarà di 2 punti;
  • se il voto della tesina è compreso fra 29 e 30L l'incremento sarà di 3 punti.

Note sugli esami

Attenzione.png
  1. Si ricorda che l'eventuale tesina va discussa prima di poter sostenere la prova orale.
  2. Il voto della eventuale tesina ha, di norma, una validità di sei mesi.


Appelli

Date

NOTA DEL 9/09/2017 Le date degli appelli orali per tutti i 6 appelli previsti verranno inserite in ESSE3 indicativamente entro la fine di Ottobre e saranno riportate qui di seguito.

Consigli Utili

Attenzione.png
Per superare agevolmente la prova orale si consiglia agli studenti di seguire con continuità le lezioni e le esercitazioni in laboratorio e non limitarsi a studiare pedissequamente i lucidi o i testi consigliati, ma di sforzarsi di creare i collegamenti mentali necessari per avere una visione di insieme di ogni argomento.

Testi Consigliati

Textbook.png

Materiale come lucidi e documentazione del Sistema xv6 sono disponibili in questa pagina.

Comunque, testi di riferimento possono essere:

J. Peterson, A. Silberschatz: "Operating System Concepts", Addison Wesley, 1990 (anche versione italiana: SILBERSCHATZ A., GALVIN P., G. GAGNE: "Sistemi Operativi: concetti ed esempi - sesta edizione", Casa Editrice Addison-Wesley, 2002).

M. Milenkovic: "Sistemi Operativi", McGraw-Hill, 1990.

P. Ancilotti, M. Boari: "Principi e Tecniche di Programmazione Concorrente", UTET, 1988.

Lucidi dell'Insegnamento

Nota bene: IN CORSO DI AGGIORNAMENTO (per ora solo i primi tre file sono stati caricati!)

Lucidi.png

Sono disponibili i lucidi in formato PDF usati durante le lezioni di teoria sui seguenti argomenti che necessitano tutti, a parte il primo file, di password di lettura (tale password sarà comunicata durante la prima lezione):

  1. Programma del corso e modalità di esame
  2. Lucidi introduttivi sui Sistemi Operativi: evoluzione e categorizzazione dei Sistemi Operativi
  3. Lucidi sui processi: generalità
  4. Lucidi sui processi: interazione fra processi
  5. Lucidi sui processi: esempi di uso dei semafori
  6. Lucidi sui processi: processi comunicanti in ambiente globale
  7. Lucidi sui processi: costrutti di sincronizzazione in ambiente globale
  8. Lucidi su processi in ambiente Locale: processi comunicanti in ambiente locale (aggiornamento del 14/05/2012)
  9. Lucidi sul Nucleo
  10. Lucidi di SO su fork ed exec di Unix
  11. Lucidi sul deadlock
  12. Lucidi sulla Gestione della Memoria: metodi di allocazione contigua
  13. Lucidi sulla Gestione della Memoria: metodi di allocazione non contigua
  14. Lucidi sulla Gestione della Memoria Virtuale
  15. Lucidi sulla Gestione della Memoria in Unix
  16. Lucidi sulla Gestione dei file: livello logico
  17. Lucidi sulla Gestione dei file: livello fisico



Si avvisano inoltre gli studenti che per ripassare le primitive di Unix è disponibile un'applicazione (scaricabile qui (file JAR)) sviluppata nel suo elaborato da Sentimenti Marco (prova finale del 29/10/2012). Tale applicazione è descritta nell'elaborato dal titolo UNIX FUNCTION HELPER: SUPPORTO ALL'APPRENDIMENTO DELLE PRIMITIVE UNIX (scaricabile qui (PDF).

Strumenti Software

Strumenti.png

Si indicano di seguito gli strumenti software che si utilizzano durante il corso e si indica dove è possibile reperirli.

DA AGGIORNARE!!!

Tesi

Accedendo all'applicazione specifica si potranno trovare degli argomenti di tesi di Laurea Magistrale collegati a questo insegnamento.

Personal tools
Pagine riservate ai CdS di Ing. Informatica