25890 - Sistemi Operativi 1 (A.A. 2009/2010) Stampa

Informazioni generali

Sistemi Operativi 1 (SO1, codice 25890) vale 9 crediti e si svolge nel primo semestre dei seguenti anni: 2° cl. 26.
Ulteriori dettagli sono disponibili sulla homepage dell'insegnamento.
Per gli studenti iscritti, il materiale didattico è disponibile su AulaWeb.

Obiettivi formativi

L'obbiettivo del corso è quello di presentare le problematiche concernenti la progettazione delle componenti principali dei moderni sistemi operativi. Nel corso viene inoltre introdotto il concetto di concorrenza, ovvero l'insieme di notazioni e tecniche per descrivere e controllare l'esecuzione concorrente di due o più programmi.Il corso ha inoltre una parte di laboratorio dove si sperimenta l'uso di linguaggi di scripting e configurazione, di librerie e funzioni di sistema e si scrivono esempi di programmi concorrenti.

Programma dell'insegnamento

Teoria
La parte di teoria viene svolta in classe e prevede lezioni frontali ed esercizi. La parte di teoria e' a sua volta suddivisa nei seguenti moduli (tra parentesi il peso in CFU dei vari moduli):

MA (0.5)
Introduzione, storia, modelli e archiettura dei sistemi operativi
GSP(2.5)
Gestione dei processi (1 per definizioni generali/schedulazione e 1.5 concorrenza/coop.)
GMP(1.5)
Gestione della memoria principale (0.5 per definizioni generali, 1 per memoria virtuale)
GMS(1.5)
Gestione della memoria secondaria (0.5 per definzioni generali, 1 per implementazione file system)
Gli esercizi sulle varie parti vengono svolti in parallelo con le lezioni frontali.
Il contenuto dettagliato dei vari moduli e' specificato in seguito (vedi programma dettagliato).

Laboratorio
La parte di laboratorio viene svolta in parte in classe e in parte in un laboratorio guidato e prevede:

  • Introduzione all'uso del sistema operativo Linux e scripting in bash  (1 credito)
  • programmazione di sistema (2 crediti)
Gli argomenti vengono introdotti in parallelo ai corrispondenti moduli di teoria.  Durante il laboratorio guidato vengono consegnati dei fogli di esercizi.
Gli esercizi svolti possono essere consegnati (su aulaweb) e vengono utilizzati come base per la discussione orale della parte di laboratorio.
La loro correzione non e' fiscale per non appesantire il corso e per lasciare agli studenti la possibilita' di sperimentare le nuove tecnologie (scripting, gestione processi, segnali e thread) introdotte nel corso.


Programma dettagliato

Teoria

MA: Introduzione, storia, modelli e archietture dei sistemi operativi
Introduzione e storia dei sistemi operativi
Struttura dei sistemi di calcolo
Interazione tra hardware e software (trap ed interrupt)
Modelli ed architetture dei sistemi operativi
Kernel monolitici, a livelli, exo- e micro-kernel
Architettura di Unix, Linux e Windows (varie versioni)

GSP: Gestione dei processi (schedulazione e concorrenza)
Definizione di processi e thread e operazioni caratteristiche
Strutture dati per la loro gestione (process/thread control block)
Processi in Unix e Windows NT/XP (es. fork/create, gestione dei contesti)
Gestione dei processi
Schedulazione su mono/multi-processore
Algoritmi e strategie di schedulazione
Schedulazione in Unix, Linux (scheduler O(1)), Windows NT/XP
Concorrenza, cooperazione e sincronizzazione di processi
Definizione di un linguaggio per rappresentare processi concorrenti
Introduzione alle problematiche relative all'esecuzione concorrente di processi: race condition, sincronizzazione
Definizione del problema della sezione critica e descrizione di possibili soluzioni (hardware e software)
Meccanismi di sincronizzazione: semafori, monitor, messaggi
Soluzioni a problemi classici, es., produttore/consumatore, lettori/scrittori.
GMP: Gestione della memoria principale
Partizionamento e allocazione
Paginazione e segmentazione
Memoria virtuale
Architettura della memoria virtuale
Implementazione (tabella delle pagine a livelli, invertita)
Gestione dei page fault
Algoritmi di rimpiazzamento di pagine
Gestione della memoria in Unix, Linux e Windows NT/XP

GMS: Gestione della memoria secondaria (file system)
Definizione di file e operazioni caratteristiche
Implementazione del file system
Allocazione e indirizzamento blocchi su disco
Implementazione directory e navigazione in un file system
Panoramica storica sui file system: CP/M, FAT, NTFS, UFS, Ext
Indirizzamento sotto Unix e Linux (inodes) e NT (MFT)
Consistenza dei file system (dump e check di consistenza)

Laboratorio
Architettura di Linux e comandi principali
Scripting bash
costrutti principali
manipolazione di stringhe
uso di programmi di sistema (es. grep, find, sed)
Programmazione di sistema (uso di funzioni di sistema)
File (open, read, write) e directory
Processi (fork, exec, wait)
Thread (libreria Pthread)
Comunicazione tra processi (pipe e segnali)


Docente responsabile

Giorgio Delzanno

Altri docenti coinvolti

Vittoria Gianuzzi
Orario di ricevimento: Lunedì pomeriggio 14-17

Testi di riferimento

Lucidi e materiale disponibile sul modulo SO1 di Aulaweb.

Sistemi Operativi

Sistemi Operativi: Concetti ed Esempi - 6a ed. -
Slberschatz-Galvin-Gagne
Addison-Wesley
Cap: 1, 2, 4 (Sez. 1-5), 5, 6, 9, 10, 11, 12, 20, 21, 22
(no cap. 7 deadlock)

I Moderni Sistemi Operativi
Andrew S. Tannenbaum
Jackson-Libri Universita'
Cap: 1, 2, 4, 6, 10, 11, 13 (no cap. 3 deadlock)

UNIX e LINUX
[Bach] Unix: Architettura di un sistema
Maurice J. Bach - Jackson : Cap:1, 2, 4, 6, 8 (Sez. 1), 9 (sez. 1-2)

Marc J. Rochkind. Advanced UNIX Programming 2nd E di tion, Ad di son-Wesley Professional Computing Series, 2004.
Vedi anche il sito web del libro con sorgenti, esercizi e altre informazioni.

G. Glass, K. Ables. UNIX for Programmers and Users, Prentice Hall, 1999.

GaPiL: Guida alla Programmazione in Linux

Advanced Bash Scripting Guide (PDF)

Programmazione in C

Kernighan & Pike Programmazione nella pratica Ad di son-Wesley, 1999. ISBN 8871920724.

Kelley, Pohl. C: Didattica e Programmazione (seconda e di zione), Addi son-Wesley, 2004.

Modalità di erogazione dell'insegnamento

Tradizionale: Con ausilio di Aulaweb

Orario delle lezioni

Lunedì: 11:00 - 13:00, aula 506
Mercoledì: 11:00 - 13:00, aula 506
Venerdì: 11:00 - 13:00, aula 506 o SW1

Modalità di frequenza

Consigliata.
Per poter seguire esercitazioni guidate in classe e laboratorio

Metodo di valutazione

La verifica sulla parte di teoria viene fatta con un'esame scritto che consiste di 3 domande (descrizione di concetti ed algoritmi visti a lezione), 3 esercizi (simulazione di strategie di scheduling, rimpiazzamento, allocazione). La verifica sulla parte di laboratorio viene fatta con un'esame orale.

Modalità di iscrizione agli esami

Su Aulaweb

Statistiche

Voto Medio Numero Esami Anno
24.760552010
26.100202009
24.440322008
24.000402007
23.000522006
24.000822005