Vai al contenuto principale

Università degli Studi di Parma, il mondo che ti aspetta

SISTEMI OPERATIVI E IN TEMPO REALE ( cod. 1002540)

Insegnamento di INGEGNERIA INFORMATICA (Corsi di Laurea Magistrale)

Facoltà di Corsi di Laurea Magistrale (D.M. 270/04)

 

TIPOLOGIA DELL'INSEGNAMENTO: ATTIVITÀ FORMATIVE CARATTERIZZANTI LA CLASSE

 
Lingua Insegnamento: 
Italiano

FREQUENZA FACOLTATIVA

Obiettivi

Finalità Il corso si propone di presentare le architetture e le funzionalità dei moderni sistemi operativi, introdurre i concetti principali dei sistemi concorrenti, e rendere lo studente in grado di programmare applicazioni multiprocesso e multithread in ambiente C/C++/POSIX. Il corso presenta inoltre i principi, le metodologie, ed alcuni significativi strumenti per la progettazione di sistemi di elaborazione operanti in tempo reale e per la realizzazione di software di controllo di sistemi embedded ed applicazioni industriali. Al termine del corso lo studente disporrà di metodologie e strumenti appropriati per affrontare le problematiche della programmazione di sistema, concorrente e in tempo reale in molteplici contesti tecnologici ed applicativi.

Prerequisiti

Conoscenza degli elementi di base dei sistemi operativi. Conoscenza della programmazione in linguaggio C/C++.

Contenuti dell'insegnamento

Programma Architetture dei sistemi operativi Evoluzione, ruolo e funzioni del sistema operativo. Multiprogrammazione. Processi, thread e spazi di indirizzamento. Protezione. Commutazione di thread e di processi. Sistemi a macchine virtuali. Componenti dei sistemi operativi Gestione dei processi e dei thread. Scheduling della CPU. Gestione della memoria. Memoria Virtuale. Gestione dell'I/O. Gestione dei file. Sicurezza. Tecniche di prevenzione e gestione del blocco critico. Programmazione concorrente nel modello a memoria condivisa Mutua esclusione e primitive di sincronizzazione. Gestione di risorse mediante semafori. Regioni critiche condizionali. Monitor. Supporti per la programmazione concorrente in Java. Programmazione concorrente nel modello a memoria locale Primitive send e receive. Remote procedure call. Comandi con guardia. Sistemi distribuiti Modello cliente-servitore. RPC in ambiente distribuito. Sincronizzazione, mutua esclusione e coordinamento distribuiti. Sistemi in tempo reale Sistemi embedded. Sistemi di elaborazione operanti con vincoli temporali. Tipologie dei sistemi in tempo reale e parametri caratteristici. Modello di riferimento per i sistemi di elaborazione in tempo reale. Schedulazione in tempo reale Scheduling di task aperiodici. Scheduling di task periodici mediante executive ciclico. Scheduling di task periodici basato su priorità. Algoritmi di scheduling Rate Monotonic ed Earliest Deadline First. Scheduling congiunto di task periodici, aperiodici e sporadici. Protocolli di accesso a risorse condivise. Gestione della inversione di priorità. Programmazione di sistemi multithread e in tempo reale Funzionalità dei moderni sistemi operativi a supporto dell'elaborazione in tempo reale. Supporti per il multithreading in Linux. Lo standard POSIX. Thread e processi. Sincronizzazione tra thread. Segnali. Meccanismi di IPC. Scheduling. Gestione del tempo. Gestione della memoria. Gestione dell'I/O. Pattern per la programmazione di sistemi in tempo reale. Sistemi operativi real-time dedicati. Middleware per sistemi in tempo reale distribuiti. Attività d'esercitazione Esercitazioni in laboratorio relative alla programmazione di sistema in C/C++ nei sistemi operativi UNIX e Linux. Esercitazioni in laboratorio con uso dell'API POSIX per la programmazione multithread e real-time in ambiente UNIX e Linux.

Bibliografia Consigliata

Sono rese disponibili sul sito del corso, lezione per lezione, le diapositive utilizzate in aula. I diversi aspetti affrontati nel corso sono trattati organicamente nei testi indicati di seguito. A. Silberschatz, P.B. Galvin, G. Gagne, “Sistemi operativi”, settima edizione, Pearson Education Italia, 2006. P. Ancilotti, M. Boari, “Programmazione concorrente e distribuita”, McGraw-Hill, 2007 J.W.S. Liu, Real-Time Systems, Prentice-Hall, 2000. D. Butenhof, Programming with POSIX Threads, Addison-Wesley, 1997.

Docenti

Anno accademico: 
2012
Anno di corso: 
1
Semestre: 
2
Numero CFU: 
9
SSD: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Ambito: 
Ingegneria informatica
Ore di attivita frontale: 
63
Ore studio individuale: 
135