- 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. 5826)
Conoscenze e abilità da conseguire
Conoscenza delle problematiche di progetto relative all'organizzazione di sistemi concorrenti. Modelli di riferimento per la sincronizzazione e comunicazione tra processi. Metodologie di analisi e sintesi di sistemi concorrenti.
Contenuti
1.Protezione e sicurezza
- Richiami sulla protezione: modelli, politiche e meccanismi
- Sicurezza multilivello
- Reference Monitor e sistemi fidati
2. 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
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
- Primitive send e receive
- Comandi con guardia
- Rendez-vous e chiamata di procedura remota
Uso di Linguaggi concorrenti nel modello a scambio di messaggi: go, ada.
6. Nucleo di un sistema a processi basato sul modello a memoria comune:
- 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 distribuiti
- applicazioni distribuite: approccio centralizzato e decentralizzato. Scalabilità e tolleranza ai guasti.
- algoritmi per la sincronizzazione i sistemi distribuiti: orologi logici, mutua esclusione distribuita, algoritmi di elezione.
8. Programmazione parallela
- 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
- P.Ancilotti, M.Boari: 'Programmazione concorrente e distribuita', McGraw-Hill.
- 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 A.Ciampolini,G.Lipari: ' Sistemi Operativi', seconda edizione, McGraw-Hill
- W.Stallings: 'Sistemi operativi', Jackson Libri
- 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
Lezioni ed esercitazioni si terranno in conformità con le linee guida di Ateneo anti COVID-19.
Modalità di verifica e valutazione dell'apprendimento
Prova di laboratorio: sviluppo di applicazioni concorrenti nel modello a memoria comune e nel modello a scambio di messaggi.
Prova orale.
Strumenti a supporto della didattica
Le lezioni in aula vengono svolte anche con l'ausilio di slides e videoproiettore.
Le slides vengono rese disponibili a tutti gli studenti tramite il sito web del corso.
Assegnazione di una macchina virtuale ad ogni studente del corso.
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.