Advances in operating systems

A.Y. 2020/2021
Overall hours
Learning objectives
The purpose of this course is to allow the student to understand and be able to manage the mechanisms underlying the operation and implementation of an operating system: levels of abstraction, synchronous / asynchronous event management, clock management, peripheral management, communication, concurrency primitives, management and communication between processes, security of hardware components.
The "theoretical" exposure of the various topics will be accompanied by laboratory lessons during which students will have the opportunity to experience the concepts acquired on a commercial micro controller (STM32 Nucleo) made available to students, for the duration of the course only, by the ST Microelectronics company.
The laboratory lessons will also represent an opportunity for students to:
deepen C programming, learn how to use an integrated development environment for a commercial embedded system, master the FreeRTOS operating system.
Expected learning outcomes
1. Understanding of the main mechanisms underlying an operating system.
2. Understanding of the operating mechanisms of an embedded system.
3. Managing the FreeRTOS operating system
4. Designing and implementing a driver for I / O management
5. Understanding and modifying an interrupt handler
6. Design and implementing a real-time scheduler
7. Designing and implementing a sensor based application with the use of the STM32
8. Understanding side channel attacks
9. Perform elementary side channel attacks
Course syllabus and organization

Single session

Lesson period
Second semester
The course will be entirely carried out in synchronous on-line mode using the ZOOM platform even if it is not excluded the possibility of in-person meetings for small groups.
Course syllabus
During the course the following topics will be addressed:
- architectures and components of embedded systems
- the micro controller STM32
- hardware-software interfaces
- memory architecture
- software design methodology
- communication primitives
- embedded operating systems
- real-time scheduling
- shared resources
- low consumption and low energy consumption design,
- synthesis of the hardware architecture
- Side channel attacks.

The laboratory topics covered will be:
A. The STM32 micro controller
B. Bare Metal programming
C. The management of the UART interface (polling and interrupt)
C1. The management of the SPI interface (optional)
D. Interrupt management and DMA
E. The use of FreeRTOS
F. The management of task scheduling
G. Writing applications with FreeRTOS
Prerequisites for admission
Knowledge of the C language can speed-up the comprehension of some of the arguments which will be treated in the course.
Teaching methods
The teaching will be carried out in synchronous on-line mode using the ZOOM platform, theory lessons in frontal mode and laboratory lessons will alternate. The possibility of carrying out some laboratory lessons in the presence is not excluded.
The laboratory part will be carried out with the help of an STM32 micro controller based on ARM Cortex-M processor, and related development environment. The micro controller will be made available to students, who must undertake to return it intact at the end of the course.
The lessons will be recorded and made available asynchronously through the ARIEL platform. A discussion forum will also be activated on the same platform through which students can ask questions asynchronously to the teacher.
There will also be seminars and speeches by experts from the world of work.
Teaching Resources
Ed­ward A. Lee and Sanjit A. Se­shia: In­tro­duc­tion to Em­bed­ded Sys­tems, A Cyber-​Physical Sys­tems Ap­proach, Second Edi­tion, MIT Press, ISBN 978-​0-262-53381-2, 2017.

C. Noviello: Mastering STM32, (
Assessment methods and Criteria
The final exams will consists of two tests: a practical test and a written test.
The practical test will consist of the preparation of a project that can be carried out in groups of two persons, which will require the student to put into practice the various theoretical and operational notions acquired during the course. The test will be evaluated according to:
1. compliance of the implementation with the project specifications,
2. the complexity of the implementation carried out,
3. the originality of the ideas used.
The maximum grade achievable in this test is 20/30.
The written test will contain a series of open-ended questions on theoretical topics addressed during the course. The test will be evaluated up to 10/30.
The final evaluation will be determined by the sum of the marks of the two tests.
INF/01 - INFORMATICS - University credits: 6
Lessons: 48 hours
send an email to danilo[dot]bruschi[at]unimi[dot]it
Room P115, Via Comelico