Sistemi operativi avanzati (2018/2019)



Codice insegnamento
4S00067
Crediti
6
Coordinatore
Graziano Pravadelli
Settore disciplinare
ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Lingua di erogazione
Italiano
L'insegnamento è organizzato come segue:
Attività Crediti Periodo Docenti Orario
Teoria 4 II semestre Graziano Pravadelli

Vai all'orario delle lezioni

Laboratorio 2 II semestre Graziano Pravadelli

Vai all'orario delle lezioni

Obiettivi formativi

Il corso si propone di formare gli studenti sugli aspetti teorici e implementativi avanzati di speciali classi di sistemi operativi, con particolare riguardo a sistemi operativi distribuiti, real-time, ed embedded. L’obiettivo principale del corso è quindi quello di evidenziare le principali differenze tra sistemi operativi convenzionali e non convenzionali nell’ambito della gestione dei processi, della memoria e del file system.

A completamento del corso, lo studente dovrà dimostrare di avere acquisito le conoscenze fondamentali per comprendere l'organizzazione interna, il funzionamento e i servizi di sistemi operativi non convenzionali. In particolare, avrà compreso:
i) le differenze tra un sistema operativo convenzionale e i sistemi operativi distribuiti, embedded e real time;
ii) le strategie con cui i sistemi operativi non convenzionali gestiscono le risorse di un calcolatore;
iii) i campi di applicazione dei sistemi operativi non convenzionali.

Queste conoscenze consentiranno allo studente di:
i) sviluppare programmi con la consapevolezza di come un sistema operativo non convenzionale gestisce i processi che ne derivano;
ii) sviluppare applicazioni che utilizzano le primitive (chiamate a funzioni di sistema) messe a disposizione da particolari categorie di sistemi operativi embedded e real time;
iii) sviluppare e modificare componenti di un sistema operativo embedded e real time.

Al termine del corso lo studente avrà acquisito la capacità di valutare autonomamente vantaggi e svantaggi di differenti scelte progettuali nell'ambito dei servizi offerti da un sistema operativo non convenzionale.
Inoltre sarà in grado di:
i) realizzare un progetto laboratoriale di gruppo e di presentarne i relativi risultati motivando le scelte effettuate con appropriatezza di linguaggio:
ii) proseguire anche autonomamente lo studio e la ricerca nell'ambito dei sistemi operativi distribuiti, embedded e real time, affrontando tematiche avanzate sia in ambito industriale che in ambito scientifico.

Programma

Teoria:
-------

* Introduzione: classificazione HW/SW, architettura dei sistemi operativi non convenzionali.
* Introduzione ai sistemi operativi distribuiti: obiettivi e problematiche.
* Comunicazione nei sistemi operativi distribuiti: modello client-server, chiamata a procedura remota, comunicazione di gruppo.
* Sincronizzazione nei sistemi operativi distribuiti: sincronizzazione dei clock logici e fisici, identificazione dello stato globale, mutua esclusione distribuita, transazioni atomiche, gestione dei deadlock, algoritmi di elezione.
* Gestione dei processi nei sistemi operativi distribuiti: allocazione e migrazione dei processi, algoritmi di scheduling.
* Memoria condivisa distribuita: definizione e implementazione, meccanismi di consistenza.
* File system distribuiti: modello di accesso, semantica della condivisione, implementazione, migrazione e replicazione dei dati, meccanismi di consistenza.
* Introduzione ai sistemi operativi real-time: definizione, problematiche e vincoli in ambiente real-time.
* Scheduling nei sistemi operativi real-time: scheduling per task periodici, aperiodici e misti.


Laboratorio:
------------
* Sistemi operativi embedded: Introduzione al sistema operativo eCos.
* La comunicazione nei sistemi embedded: Introduzione al protocollo di comunicazione ZigBee.
* Terminali mobili: Introduzione agli ambienti di sviluppo.
* Smartphone: Introduzione agli ambienti di sviluppo (iPhone, Android, Windows Phone)

Modalità d'esame

Per superare l'esame gli studenti dovranno dimostrare di:
- aver compreso i principi alla base del funzionamento di un sistema operativo distribuito e real-time
- essere in grado di esporre le proprie argomentazioni in modo preciso e organico senza divagazioni
- saper applicare le conoscenze acquisite per risolvere problemi applicativi presentati sotto forma di esercizi, domande e progetti.

L'esame consiste in una prova scritta contenente domande ed esercizi di teoria e laboratorio. La prova è superata con un voto maggiore o uguale a 18/30 e permette di ottenere un voto massimo pari a 30/30.

E' possibile, ma non obbligatorio, realizzare un progetto pratico (a gruppi di 2/3 persone) che può consistere in:
- implementazione/modifica di una o più funzionalità di un sistema operativo real-time
- analisi, valutazione e presentazione di nuove tecnologie nell'ambito di sistemi operativi distribuiti o real-time.
Il progetto permette di ottenere al massimo 4/30 punti da sommare al voto dello scritto.

Opinione studenti frequentanti - 2017/2018