Elementi di sistemi operativi - Teoria (2007/2008)

Corso disattivato non visibile

Codice insegnamento
4S01832
Docente
Tiziano Villa
crediti
4
Settore disciplinare
ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Lingua di erogazione
Italiano
Sede
VERONA
Periodo
1° Q dal 3-ott-2007 al 4-dic-2007.

Per visualizzare la struttura dell'insegnamento a cui questo modulo appartiene, consultare * organizzazione dell'insegnamento

Orario lezioni

1° Q
Giorno Ora Tipo Luogo Note
lunedì 14.30 - 16.30 lezione Aula A  
martedì 16.30 - 18.30 lezione Aula A  
mercoledì 12.30 - 14.30 lezione Aula D  

Obiettivi formativi

Teoria

Lo scopo del corso e' di presentare l'organizzazione di un sistema operativo e le problematiche connesse di correttezza ed efficienza.

Saranno trattati capitoli scelti dai seguenti argomenti:
- definizione e storia dei sistemi operativi e di programmazione;
- programmi di utilita', sottosistemi, sistemi a multiprogrammazione;
- processi, comunicazione tra processi e sincronizzazione;
- allocazione della memoria, segmentazione e impaginazione;
- caricamento e collegamento, librerie;
- allocazione delle risorse, schedulazione, valutazione delle prestazioni;
- sistemi d'ingresso e uscita, dispositivi di memorizzazione, organizzazione degli archivi;
- concetti elementari di reti, protocolli e archivi distribuiti, protezione, sicurezza e riservatezza.

Il corso di teoria e' svolto in 32 ore (4 crediti) di lezioni frontali. A latere si svolge un laboratorio di 24 ore (2 crediti).

Laboratorio

Il corso, svolto in 24 ore di esercitazione (2 crediti), introduce alla programmazione di sistema facendo riferimento ai sistemi operativi UNIX system V e Linux. Al termine del corso lo studente avrà acquisito la capacità di realizzare procedure di sistema e programmi C per utilizzare il sistema operativo con correttezza ed efficienza.

Programma

Teoria

- Nozione di sistema operativo e storia dei sistemi operativi
- Interfaccia utente-sistema operativo; chiamate di sistema
- Processi e fili esecutivi ("threads"); creazione, esecuzione e distruzione di fili esecutivi; modelli di fili esecutivi di utente e di sistema operativo
- Sincronizzazione; meta-esempio di protocolli di mutua esclusione; primitive atomiche di sincronizzazione; lucchetti ("locks") e loro acquisizione/rilascio; disabilitazione delle interruzioni durante la sezione critica o durante l'acquisizione/rilascio dei lucchetti; istruzioni macchina atomiche e loro utilizzo per realizzare lucchetti; problema dell'attesa occupata e sua limitazione all'acquisizione/rilascio dei lucchetti
- Primitive di programmazione per la sincronizzazione; semafori con esempio dei produttori-consumatori; osservatori, variabili di condizione ed esempio dei lettori-scrittori; supporto alla sincronizzazione nei linguaggi di programmazione
- Processi concorrenti e blocco critico ("deadlock")
- Algoritmi di assegnamento ("scheduling") del processore
- Gestione e protezione della memoria (sistema operativo e spazi d'indirizzamento);
gerarchia della memoria e memorie temporanee veloci ("caches"); memoria virtuale, traduzione degli indirizzi e tavole associative di traduzione; richiesta selettiva, allocazione e rimpiazzo delle pagine di memoria
- Sistemi d'ingresso/uscita; gestione della memoria su disco
- Organizzazione degli archivi di documenti ("file systems"); nomi e strutture dati di memorizzazione e ricerca
- Cenni su reti e sistemi operativi distribuiti

Laboratorio

- Introduzione alla programmazione C:
compilatore, caricatore ("loader") e collegatore ("linker"); librerie e programma make
- La struttura di un programma C:
variabili; istruzioni; funzioni e passaggio dei parametri; puntatori e allocazione della memoria dinamica; stringhe; gestione dell'ingresso/uscita
- Programmazione di sistema tramite procedura d'interfaccia (per shell bash):
struttura del programma d'interfaccia; selezione e iterazione; ingresso e uscita; variabili; comandi di sistema
- Programmazione di sistema in C:
documenti ("files") e cartelle ("directories"); processi (fork/exec); concatenazione di processi ("pipe" e "named pipe"); semafori; memoria condivisa; code di messaggi
- Programmazione e sincronizzazione di fili esecutivi

Testi di riferimento
Autore Titolo Casa editrice Anno ISBN Note
Abraham Silberschatz, Galvin P. Baer, Gagne Greg Sistemi operativi. Concetti ed esempi. Pearson Education Italia 2006

Modalità d'esame

Teoria

L'esame consiste in una prova scritta, contenente domande teoriche ed esercizi.
L'esame deve essere completato (teoria+laboratorio) entro 4 sessioni a partire da quella in cui è stata sostenuta con successo la prova di teoria o la prova di laboratorio (a seconda di quale delle due viene superata per prima).
Il voto finale si ottiene dalla seguente media pesata:
Voto = Voto_teoria*0,6 + Voto_laboratorio*0,4.
Esempio: Uno studente che supera la prova di teoria (o laboratorio) in uno degli appelli della sessione autunnale dell'anno X, dovrà superare la prova di laboratorio (o teoria) entro la sessione estiva dell'anno X+1, pena l'annullamento del voto della prova di teoria (o laboratorio).

Laboratorio

L'esame consiste in una prova scritta, contenente domande teoriche ed esercizi.
L'esame deve essere completato (teoria+laboratorio) entro 4 sessioni a partire da quella in cui è stata sostenuta con successo la prova di teoria o la prova di laboratorio (a seconda di quale delle due viene superata per prima).
Il voto finale si ottiene dalla seguente media pesata:
Voto = Voto_teoria*0,6 + Voto_laboratorio*0,4.
Esempio: Uno studente che supera la prova di teoria (o laboratorio) in uno degli appelli della sessione autunnale dell'anno X, dovrà superare la prova di laboratorio (o teoria) entro la sessione estiva dell'anno X+1, pena l'annullamento del voto della prova di teoria (o laboratorio).

Materiale didattico

Documenti