Progettazione di sistemi operativi

A.A. 2020/2021
6
Crediti massimi
48
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
Scopo di questo insegnamento è quello di consentire allo studente di poter comprendere e saper gestire i meccanismi sottostanti il funzionamento e la realizzazione di un sistema operativo: livelli di astrazione, gestione degli eventi sincroni/asincroni, gestione dei clock, gestione delle periferiche, meccanismi di comunicazione, primitive di concorrenza, gestione e comunicazione tra processi, sicurezza delle componenti hardware.
L'esposizione "teorica" dei diversi argomenti sarà accompagnata da lezioni di laboratorio durante le quali gli studenti avranno modo di sperimentare i concetti acquisiti su un micro controllore commerciale (STM32 Nucleo) messo a disposizione degli studenti, per la sola durata del corso, dalla società ST Microelectronics.
Le lezioni di laboratorio rappresenteranno inoltre un'occasione per gli studenti per:
approfondire la programmazione in C, imparare ad usare un ambiente di sviluppo integrato per un sistema embedded commerciale, acquisire padronanza con il sistema operativo FreeRTOS.
Risultati apprendimento attesi
1. Comprensione dei principali meccanismi sottostanti il funzionamento di un sistema operativo.
2. Comprensione dei meccanismi di funzionamento di un sistema embedded.
3. Saper gestire il sistema operativo FreeRTOS
4. Saper progettare e implementare un driver per la gestione dell'I/O
5. Saper leggere e modificare una routine di risposta interrupt
6. Saper progettare ed implementare uno scheduler real-time
7. Saper progettare ed implementare un'applicazione sensor based con l'uso del micro controllore STM32
8. Comprensione dei side channel attack
9. Saper effettuare alcune forme elementari di side channel attack
Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Secondo semestre
In fase emergenziale la didattica sarà interamente svolta in modalità on-line sincrona utilizzando la piattaforma ZOOM anche se non sono da escludersi alcuni incontri in presenza per gruppi ristretti di studenti.
Programma
Durante il corso saranno affrontati i seguenti argomenti:
- architetture e componenti di sistemi embedded
- il micro controllore STM32
- interfacce hardware-software
- architettura di memoria
- metodologia di progettazione software
- primitive di comunicazione
- sistemi operativi embedded
- schedulazione in tempo reale
- risorse condivise
- basso consumo e progettazione a basso consumo energetico,
- sintesi dell'architettura hardware
- Sicurezza delle componenti hardware: side channel attacks

Gli argomenti di laboratorio trattati saranno:
A. Il micro controllore STM32
B. La programmazione Bare Metal
C. La gestione dell'interfaccia UART (polling e Interrupt)
C1. La gestione dell'interfaccia SPI (opzionale)
D. La gestione degli Interrupt e il DMA
E. L'uso di FreeRTOS
F. La gestione dello scheduling dei task
G. Scrivere applicazioni con FreeRTOS
Prerequisiti
La conoscenza del linguaggio di programmazione C può agevolare la comprensione di alcuni argomenti presentati a lezione.
Metodi didattici
La didattica sarà svolta in modalità on-line sincrona utilizzando la piattaforma ZOOM, si alterneranno lezioni di teoria in modalità frontale e lezioni di laboratorio. Non si esclude la possibilità di svolgere alcune lezioni di laboratorio in presenza.
La parte di laboratorio sarà svolta con l'ausilio di un micro controllore STM32 basato su processore ARM Cortex-M, e relativo ambiente di sviluppo. Il micro controllore sarà messo a disposizione degli studenti, che dovranno impegnarsi a restituirlo integro al termine del corso.
Le lezioni saranno registrate e messe a disposizione in modalità asincrona attraverso la piattaforma ARIEL. Sulla stessa piattaforma sarà attivato anche un forum di discussione attraverso cui gli studenti potranno porre domande in modalità asincrona al docente.
Sono inoltre previsti seminari ed interventi da parte di esperti provenienti dal mondo del lavoro.
Materiale di riferimento
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, (https://leanpub.com/mastering-stm32)
Modalità di verifica dell’apprendimento e criteri di valutazione
La verifica dell'apprendimento avverrà attraverso il superamento di due prove: una prova pratica ed una prova scritta.
La prova pratica consisterà nella predisposizione di un progetto che potrà essere svolto in gruppi composti da due persone, che richiederà allo studente di mettere in pratica le diverse nozioni sia teoriche che operative acquisite durante il corso. La prova sara valutata in funzione:
1. dell'aderenza dell'implementazione alle specifiche di progetto,
2. della complessità della realizzazione effettuata,
3. dell'originalità delle idee impiegate.
Il voto massimo acquisibile in questa prova è di 20/30.
La prova scritta conterrà una serie di domande a risposta aperta su temi teorici affrontati durante il corso. La prova sarà valutata sino a 10/30.
La valutazione finale sarà determinata dalla somma dei voti delle due prove.
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
Docente/i
Ricevimento:
su appuntamento e-mail: danilo.bruschi@unimi.it
Stanza 8024 via Celoria 18