Università Ca' Foscari Venezia     Dipartimento di Scienze ambientali, informatica e statistica     Corso di Laurea in Informatica

Sistemi operativi - modulo 1
(anno accademico 2015-2016)

prof. Augusto Celentano


Questa pagina si riferisce all'edizione 2015-2016 del primo modulo del corso di Sistemi operativi.
Nell'anno accademico 2016-2017 il corso è tenuto dalla prof.ssa Maria Simonetta Balsamo.

Avvisi

(9 settembre 2016) I risultati della prova scritta del 9 settembre 2016 (primo modulo) sono on-line.

Informazioni generali

L'biettivo del corso è la descrizione della struttura e delle funzioni di un moderno sistema operativo multiprogrammato. Dopo aver introdotto i concetti di base relativi ai sistemi operativi moderni, il corso illustra i modelli teorici e le tecniche realizzative per la gestione dei processi, della memoria, del file system, dei sistemi di I/O e della memoria secondaria. Introduce i principi della programmazione concorrente e insegna i concetti e le tecniche relative alla sincronizzazione tra processi e thread, con sperimentazioni pratiche in laboratorio in C e Java. Come casi di studio vengono analizzati i sistemi operativi Unix/Linux, Windows e Mac OSX.

Il primo modulo del corso illustra le funzioni e i componenti di un sistema operativo. Il secondo modulo tratta gli argomenti della programmazione concorrente e della sincronizzazione tra processi e thread. Il sito web del secondo modulo è consultabile all'indirizzo http://www.dais.unive.it/~sob/.

Contatti del prof. Celentano

Gli studenti degli anni passati che devono ancora svolgere l'esame possono contattare il prof. Celentano per posta elettronica: auce (at) unive (dot) it.

Programma del modulo 1

  1. Introduzione. Funzioni e struttura di un sistema operativo. Il concetto di macchina virtuale.
  2. I sistemi a processi. Struttura e proprietà dei processi. Descrittore di processo. Stati di un processo. Creazione e cancellazione di processi. Esecuzione in stato utente e supervisore. Commutazione di contesto.
  3. La gestione dell'unità centrale. Politiche di scheduling: proprietà, algoritmi, obiettivi. Indicatori di prestazioni.
  4. La gestione della memoria centrale. Spazi di indirizzamento. La memoria virtuale. Paginazione e segmentazione. Politiche di allocazione e sostituzione delle pagine.
  5. Il file system. Descrittore di file. Struttura logica e implementazione delle directory. Meccanismi di allocazione dei file. Gestione dello spazio libero. Protezione e controllo degli accessi.
  6. La memoria secondaria. I sistemi di I/O. Driver di periferica. Memorie magnetiche e a stato solido. Architetture RAID. Sistemi di archiviazione.
  7. Casi di studio. Gli argomenti del corso saranno illustrati con casi di studio approfonditi relativi ai sistemi operativi Unix/Linux. Saranno illustrati nelle linee generali anche i sistemi Windows e Mac OS X.

Documentazione didattica

Libri di testo

I testi di livello universitario sui sistemi operativi sono molti e coprono in modo più che adeguato gli argomenti del corso. Si consigliano alcuni testi, con l'elenco dei capitoli pertinenti al programma. I paragrafi esclusi riguardano approfondimenti che possono essere tralasciati ai fini dell'esame, ma costituiscono comunque un utile complemento formativo. I capitoli non menzionati riguardano argomenti che non sono trattati nel primo modulo del corso.

Il testo seguente è un ottimo compromesso tra chiarezza espositiva, completezza e rigore scientifico.

Un altro ottimo testo, di fatto uno dei migliori, è il seguente; in alcuni punti è piuttosto sintetico e non facile, e presuppone una buona conoscenza di base delle architetture di calcolo. E' un'ottima alternativa al testo di Deitel, Deitel e Choffnes soprattutto per chi vuole approfondire la materia con un approccio più progettuale.

Un testo molto buono e sicuramente consigliabile, ma disponibile solo in lingua inglese, è il seguente, disponibile on-line senza restrizioni di accesso. Il testo è interessante perché si concentra sugli aspetti più importanti della materia senza dispersione e contiene numerosi esempi pratici basati su codice eseguibile.

Per la trattazione di alcuni argomenti relativi agli aspetti realizzativi dei sistemi basati su Unix verrà utilizzato il testo:

Per lo svolgimento delle attività di laboratorio del secondo modulo e per l'approfondimento di alcuni argomenti sulla programmazione di sistema in Unix si consiglia anche il testo (disponibile in biblioteca):

Tutti i testi menzionati, con l'eccezione del testo di Arpaci-Dusseau accessibile on-line, sono disponibili presso la Biblioteca di Area Scientifica BAS.

Esercizi e temi d'esame

Sono disponibili qui alcune raccolte di domande, esercizi e temi d'esame risolti relativi anche agli anni precedenti.

  1. Gestione dei processi
  2. Scheduling della CPU
  3. Gestione della memoria centrale
  4. Il file system
  5. Domande di riepilogo
  6. Alcuni temi d'esame selezionati da appelli recenti

Altra documentazione didattica

I link seguenti:

  1. Commentary on the Sixth Edition UNIX Operating System
  2. Unix Operating System Source Code Level Six

rimandano a una riedizione liberamente accessibile on-line del testo di John Lions "A Commentary on the Sixth Edition UNIX Operating System with Source Code", scritto nel 1977 come sussidio didattico per i corso di Sistemi Operativi della New South Wales University, Australia, poi pubblicato nel 1996. Il testo contiene un commento dettagliato, quasi riga per riga, del codice sorgente del kernel della versione 6 di Unix, distribuito da Bell System Labs nel 1976. Per quanto si riferisca ad una versione ormai datata di Unix il testo conserva la sua validità didattica perché consente di "toccare con mano" il codice completo di un sistema operativo reale, e la documentazione permette di seguirlo agevolmente anche nei passaggi più difficili.

Una parte del codice di Unix versione 6 che documenta l'inizializzazione della struttura dei processi di Unix è disponibile su un estratto dal testo (fuori commercio) di Celentano e Tecchio "Il Sistema Operativo Unix", Edizioni CLUP, 1982 [ testo, codice ].

La descrizione dell'algoritmo di allocazione memoria Buddy system, non illustrato nel testo di Deitel, Deitel, Choffnes, è chiaramente descritto in un articolo di Wikipedia.

Link utili

I siti Web dei libri di testo consigliati contengono (con riferimento alla versione inglese) errata-corrige, esercizi, esempi, altro materiale didattico e ulteriori riferimenti a risorse on-line:


  Ultimo aggiornamento: 5 settembre 2016.