- Docente: Anna Ciampolini
- Credits: 8
- SSD: ING-INF/05
- Language: Italian
- Teaching Mode: Traditional lectures
- Campus: Bologna
- Corso: Second cycle degree programme (LM) in Computer Engineering (cod. 5826)
Learning outcomes
Knowledges of main design aspects concerning the organization of concurrent systems. Models for sincronization and communication between processes/threads. Methods for analysis and synthesis of concurrent systems.
Course contents
1.System protection and security
- models, policies and mechanisms
- multilevel security
- Reference Monitor and trusted systems
2.Virtualization
- hardware virtualization: goals and solutions
- virtual machine monitor implementation
- Case study analysis: xen hypervisor
- Virtualization and cloud computing
3.Concurrent programming
- preliminaries
- non sequential processes.
- forms of interaction between concurrent processes
- architectures and languages for concurrent programming
4.Shared memory model
- mutual exclusion
- semaphores
- monitors
- conditions
Use of concurrent languages in the shared memory model. The pthread library for concurrent programming.
5.Message passing model
- preliminaries
- channels and communication primitives
- send and receive
- guarded commands
- Rendez-vous and RPC
Use of concurrent languages in the message passing model: go, ada.
6.Shared memory kernel
- Implementation of thread management/synchronization in a mono-processor kernel
- Implementation of thread management/synchronization in a multi-processor kernel: SMP, loosely-coupled kernels.
7. Distributed Systems
- distributed programming: centralized and decentralized algorithms.Scalability, fault tolerance.
- algorithms for the synchronization of distributed processes: logical clocks, distributed mutual exclusion, election algorithms.
8. Parallel Programming
- Parallel architectures, HPC systems.
- Architetture per il calcolo parallelo. Sistemi HPC.
- Parallel programming models: shared memory and distributed memory.
- Parallel software development: MPI and OpenMP libraries.
- Outlines on CUDA programming.
Readings/Bibliography
- 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.
Teaching methods
Classroom lessons and laboratory projects.
Assessment methods
Practical examination: solution of synchronization problems.
Oral examination.
Teaching tools
Lessons are presented with the support of slides.
Slides can be downloaded from the course website.
A virtual machine will be assigned to each student.
Office hours
See the website of Anna Ciampolini
SDGs



This teaching activity contributes to the achievement of the Sustainable Development Goals of the UN 2030 Agenda.