- Docente: Anna Ciampolini
- Crediti formativi: 8
- SSD: ING-INF/05
- Lingua di insegnamento: Italiano
- Modalità didattica: Convenzionale - Lezioni in presenza
- Campus: Bologna
- Corso: Laurea Magistrale in Ingegneria informatica (cod. 6719)
-
dal 17/09/2025 al 19/12/2025
Conoscenze e abilità da conseguire
Al termine del corso lo studente possiede conoscenze approfondite a) sull’organizzazione dei sistemi di elaborazione concorrenti e paralleli, in relazione alle caratteristiche dell’hardware utilizzato e con particolare riguardo ad architetture multiprocessore, multicomputer e a sistemi paralleli ad elevate prestazioni (HPC); b) sulle caratteristiche e sulla struttura interna dei sistemi operativi a supporto dell’esecuzione di applicazioni concorrenti e parallele; c) sui modelli e sugli strumenti per la sincronizzazione tra processi nel modello a memoria comune e nel modello a scambio di messaggi; d) sulle metodologie e sui linguaggi per il progetto di applicazioni concorrenti; e) sulle metodologie e sui linguaggi per il progetto di applicazioni parallele in sistemi paralleli ad elevate prestazioni (HPC), con particolare riguardo al modello architetturale MIMD. In particolare, sa risolvere problemi di sincronizzazione tra attività concorrenti/parallele nel modello a memoria comune e in quello a scambio di messaggi, sa sviluppare programmi concorrenti utilizzando linguaggi di alto livello basati sia sulla condivisione di variabili sia sullo scambio di messaggi, sa sviluppare programmi paralleli in sistemi HPC, con particolare riguardo al modello architetturale MIMD, e sa valutarne le prestazioni.
Contenuti
1.Richiami e complementi di sistemi operativi
Virtualizzazione:
- Virtualizzazione dell'hardware: finalità e soluzioni
- Realizzazione di virtual machine monitor: virtualizzazione e paravirtualizzazione
- Analisi e sperimentazione di tecnologie: il caso di xen
- Virtualizzazione come supporto al cloud computing
Protezione e sicurezza:
- Richiami sulla protezione: modelli, politiche e meccanismi
- Sicurezza multilivello
- Reference Monitor e sistemi fidati
3. Programmazione concorrente
- Introduzione e definizioni
- Processi non sequenziali.
- Tipi di interazione
- Architetture e linguaggi per la programmazione concorrente
4. Modello a memoria comune
Richiami su:
- Mutua esclusione
- Semafori
- Monitor
- Variabili condizione
Uso di linguaggi concorrenti nel modello a memoria comune. La libreria pthreads.
5. Modello a scambio di messaggi
- Aspetti caratterizzanti
- Richiami su canali e primitive
- Primitivedi comunicazione
- Comandi con guardia
- Rendez-vous e chiamata di procedura remota
Uso di Linguaggi concorrenti nel modello a scambio di messaggi: go, ada.
6. Sistemi concorrenti basati sul modello a memoria comune:
- caratteristiche e problematiche
- Realizzazione dei meccanismi di gestione dei thread e di sincronizzazione all’interno del kernel di un sistema monoprocessore
- Estensione al caso multiprocessore: Modello a nucleo condiviso SMP, Modello loosely-coupled.
7. Sistemi concorrenti basati su memoria distribuita
- caratteristiche e problematiche
- applicazioni distribuite: approccio centralizzato e decentralizzato. Scalabilità e tolleranza ai guasti.
- algoritmi per la sincronizzazione nei sistemi distribuiti: orologi logici, mutua esclusione distribuita, algoritmi di elezione.
8. Sistemi paralleli
- Architetture per il calcolo parallelo. Sistemi HPC.
- modelli di programmazione parallela: memoria comune e memoria distribuita
- Sviluppo di applicazioni parallele: le libreria MPI e open MP
- Cenni a GPGPU e alla libreria CUDA.
Testi/Bibliografia
- G.R.Andrews: "Foundations of Multithreaded, Parallel and Distributed Programming", Addison-Wesley
- Peter Pacheco, An Introduction to Parallel Programming, Morgan Kauffmann, 2011
- P.Ancilotti, M.Boari: 'Programmazione concorrente e distribuita', McGraw-Hill
- P.Ancilotti, M.Boari A.Ciampolini,G.Lipari: ' Sistemi Operativi', seconda edizione, McGraw-Hill
- S. Tanenbaum: 'I Moderni Sistemi Operarivi', Jackson Libri
- A.Silberschatz, P.Galvin, G.Gagne: 'Applied Operating System Concepts' I edizione, John Wiley & Son, Inc.
Metodi didattici
Le lezioni frontali saranno integrate con attività di laboratorio assistite che si svolgeranno presso i laboratori della Scuola di Ingegneria e Architettura.
In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai Moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio [https://elearning-sicurezza.unibo.it/], in modalità e-learning.
Modalità di verifica e valutazione dell'apprendimento
L'esame è articolato in 2 prove obbligatorie:
- Prova di laboratorio: sviluppo di applicazioni concorrenti/parallele.
- Prova orale.
La prova orale può essere sostenuta soltanto dopo il superamento della prova di laboratorio.
Strumenti a supporto della didattica
Le lezioni in aula vengono svolte anche con l'ausilio di slides e videoproiettore.
Le slides presentate a lezione vengono rese disponibili a tutti gli studenti tramite la piattaforma "Virtuale".
Assegnazione di una macchina virtuale ad ogni studente del corso per esercitarsi in autonomia.
Orario di ricevimento
Consulta il sito web di Anna Ciampolini
SDGs



L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.