Modulo | Crediti | Settore disciplinare | Periodo | Docenti |
---|---|---|---|---|
Laboratorio | 2 | ING-INF/05-SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI | 1° Q |
Nicola Drago
|
Teoria | 4 | ING-INF/05-SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI | 1° Q |
Tiziano Villa
|
Modulo: Teoria
-------
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.
Modulo: Laboratorio
-------
Il corso, svolto in 24 ore di lezione/esercitazione (2 crediti), fornisce una INTRODUZIONE 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 script di shell e programmi C per gestire le problematiche riportate nel programma sottostante.
Modulo: Teoria
-------
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
Modulo: Laboratorio
-------
* Introduzione alla programmazione C: compilatore, linker, librerie.
* La struttura di un programma C: variabili, istruzioni, funzioni e passaggio dei parametri, puntatori e allocazione della memoria dinamica, gestione di I/O e stringhe.
* Programmazione di sistema
- La programmazione tramite script di shell (bash)
o La struttura del programma di shell
o La selezione e l'iterazione
o L'input e l'output
o Le variabili
o I comandi di sistema
- La programmazione di sistema in C
o File e cenni sulle cartelle
o Processi (fork / exec)
o signal e kill
o Pipe e named pipe
o Semafori
Modulo: Teoria
-------
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).
Modulo: Laboratorio
-------
L'esame consiste nel risolvere alcuni problemi di programmazione di sistema (tramite programmi C o script di shell) durante uno degli appelli ufficiali.
Per le modalità di superamento della prova del modulo di teoria si veda il relativo corso. Tuttavia, l'esame (teoria+laboratorio) deve essere completato entro 30 settembre 2008.
E' facoltà del docente richiedere una integrazione ORALE della prova scritta qualora lo ritenga necessario.
Autore | Titolo | Casa editrice | Anno | ISBN | Note |
Abraham Silberschatz, Galvin P. Baer, Gagne Greg | Sistemi operativi. Concetti ed esempi. | Pearson Education Italia | 2006 |
******** CSS e script comuni siti DOL - frase 9957 ********p>