| | | corso | | | | | |
Sistemi Operativi e Laboratorio
Codice: | 277AA | Crediti: | 12 | Semestre: | 1-2 | Sigla: | SOL | |
|
Settore disciplinare: | INF/01 - Informatica |
Obiettivi di apprendimento
Il corso è strutturato in due moduli: il primo modulo presenta i
fondamenti dei sistemi operativi e il secondo modulo di laboratorio
mostra un’applicazione concreta dei concetti teorici presentati nel
primo modulo.
Il primo modulo introduce i principi ed i concetti su cui si basano i
sistemi operativi e analizza la loro realizzazione nei sistemi reali.
In particolare, vengono presentate le tecniche che consentono di
coordinare e gestire le risorse di un sistema di elaborazione e che
permettono di trasformare la macchina fisica in una macchina astratta,
dotata di funzionalità più convenienti per l'utente. Il corso lascia
ampio spazio alla descrizione e all'esemplificazione di come i vari
concetti presentati sono realizzati nei sistemi Unix/Linux e in quelli
della famiglia Microsoft Windows.
Il secondo modulo fornisce le conoscenze di base relative alla
programmazione C con chiamate di sistema Unix/POSIX. In particolare,
vengono prese in considerazione le chiamate standard per il trattamento
di file e directory, processi, thread, segnali, pipe, socket e vari
meccanismi di sincronizzazione.
Conoscenze.
Lo studente raggiungerà la conoscenza delle problematiche dei sistemi
operativi e delle caratteristiche dei sistemi attualmente più usati
Capacità.
Lo studente raggiungerà la capacità di realizzare programmi in C usando librerie e chiamate di sistema UNIX/Posix.
Comportamenti.
Il corso non si pone obiettivi di apprendimento in termini di comportamenti attesi.
Descrizione
Indicazioni metodologiche
organizzazione del processo di apprendimento in moduli flessibili, posti in sequenza logica;
coordinamento con i docenti dei corsi indicati nei prerequisiti e dei corsi paralleli del semestre;
analisi di casi di studio tratti da esperienze reali riportate in letteratura;
valutazione in corso di erogazione il livello di raggiungimento degli obiettivi utilizzando
gli strumenti delle verifiche interme
Ore lezione: | 92 | Ore esercitazione: | 52 | Ore laboratorio: | 40 | | |
Modalità di esame
Scritto, orale e progetto (con relativa discussione).
Prova scritta sostituibile con due prove scritte intermedie.
Moduli:
Sistemi Operativi
Docente
Piero Maestrini
Tel. 0502212700Programma
- Funzioni, struttura e componenti dei Sistemi Operativi
- Processi e thread: concetti, realizzazione e gestione
- Sincronizzazione e comunicazione tra processi e tra thread
- Gestione del processore: obiettivi e politiche
- Errori di interazione: il problema dello stallo
- Gestione della memoria; memoria virtuale
- Gestione dei dispositivi di I/O e di memoria di massa
- Sistema di archiviazione e gestione degli archivi
- Protezione e sicurezza
- Introduzione ai sistemi distribuiti
- Studio di casi: i sistemi della famiglia Unix/Linux e Windows NT
Laboratorio di programmazione di sistema
Docente
Susanna Pelagatti
Tel. 0502212772Prerequisiti
Conoscenza del linguaggio C
Obiettivi di apprendimento
Imparare a risolvere semplici problemi attraverso scripting bash e programmazione C + Posix
Conoscenze. C approfondito, Bash, chiamate di sistema Posix relative a thread, processi, file, segnali, meccanismi di IPC
Capacità. Progettare, sviluppare e testare semplici programmi C + Posix in ambiente Unix/Linux
Descrizione
Il corso parte da una panoramica sugli strumenti utilizzati per la realizzazione di programmi C sequenziali, in particolare si discute il debugging, il testing, la strutturazione su piu' file, la creazione di librerie, la gestione di progetti con makefile. Successivamente viene introdotto il linguaggio di scripting della Bash e realizzati alcuni script per la gestione di attivita' rutinarie. Nell'ultima parte del corso si realizzano semplici programmi multithreaded usando le SC Posix e si realizza un sistema client server semplificato.
English Description
We give a broad view of standard tools for sequential C programs addressing debugging, testing, compiling, making libraries, using makefiles to manage large programs. Then we present the Bash shell scripting language and develop simple scripts for routine tasks. In the last part of the course we present Posix programming and develop a small client-server system using Posix threads.
Programma
- Unix e la shell bash
- Utilizzo di C in ambiente GNU per lo sviluppo di applicazioni di sistema
- Programmazione di sistema: file system, processi e memoria, thread
- Meccanismi di IPC: Pipe, Socket, Segnali
Ore lezione: | 20 | | Ore laboratorio: | 26 | | |
Bibliografia
Marc J. Rochkind. Advanced UNIX Programming 2nd Edition, Addison-Wesley Professional Computing Series, 2004.
Vedi anche il sito web del corso con indicazione di altri test consigliati.