Scheda insegnamento
-
Docente Anna Ciampolini
-
Crediti formativi 8
-
SSD ING-INF/05
-
Modalità didattica Convenzionale - Lezioni in presenza
-
Lingua di insegnamento Italiano
-
Campus di Bologna
-
Corso Laurea Magistrale in Ingegneria informatica (cod. 5826)
SDGs
L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.



Anno Accademico 2023/2024
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
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, in modalità e-learning.
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