Università degli studi dell'Insubria

SISTEMI OPERATIVI

A.A. di erogazione 2019/2020
Insegnamento obbligatorio

Laurea triennale in INFORMATICA
 (A.A. 2018/2019)

Docenti

Anno di corso: 
2
Tipologia di insegnamento: 
Caratterizzante
Settore disciplinare: 
INFORMATICA (INF/01)
Crediti: 
8
Ciclo: 
Primo Semestre
Ore di attivita' frontale: 
72
Dettaglio ore: 
Lezione (48 ore), Esercitazione (24 ore)

Il corso ha lo scopo di consentire agli studenti di conoscere il ruolo, l’obiettivo e le principali funzionalità e caratteristiche dei sistemi operativi, rendendoli capaci di comprendere e sviluppare elementari funzioni di software utilizzabili nell’ambito del sistema operativo.
Al termine del corso, lo studente sarà in grado di:
1. Conoscere l’evoluzione storica dei sistemi operativi, avendo la capacità di capire quali motivazioni e necessità abbiano guidato tale evoluzione.
2. Conoscere le funzionalità principali dei sistemi operativi, avendo la capacità di riconoscere, tra le possibili realizzazioni di una data funzionalità, quale si adatti meglio ad un dato contesto applicativo di interesse.
3. Conoscere i principi dell’ambiente a processi e della concorrenza, avendo la capacità di capire in profondità e in dettaglio la loro realizzazione.
4. Conoscere le problematiche di sincronizzazione tra processi, avendo la capacità di sviluppare codice in cui tali problematiche devono essere affrontate. Tale capacità verrà affinata nel corso delle esercitazioni.
5. Comprendere i principi dell’organizzazione del programma in thread, avendo la capacità di sviluppare software organizzato in thread concorrenti. Tale capacità verrà affinata nel corso delle esercitazioni.
Lo studente dovrà inoltre sviluppare una consapevole autonomia di giudizio con riferimento al riconoscimento delle problematiche tipiche dell’organizzazione del codice in processi o thread e alla scelta di tecniche da impiegare per ottenere dal sistema il comportamento corretto.
Lo studente svilupperà infine la conoscenza della terminologia specifica (talvolta standard) usata nell'ambito dei sistemi operativi.

È richiesta la capacità di programmare in un linguaggio imperativo di alto livello: lo studente deve padroneggiare i principali costrutti dei linguaggi di programmazione di alto livello e avere perfettamente chiari i concetti di compilatore, interprete, errore statico ed errore a tempo di esecuzione. Inoltre, è richiesta la conoscenza dei principali elementi dell'hardware, in particolare il ruolo di CPU, RAM, Unità di Controllo e ALU; lo studente deve conoscere il concetto di instruction set ed essere in grado di scrivere semplici programmi in assembly, anche con impiego di procedure ricorsive. Le conoscenze e abilità necessarie per un proficuo apprendimento di questo insegnamento sono impartite nei corsi fondamentali del primo anno di Programmazione e Architettura degli Elaboratori, che dunque costituiscono propedeuticità obbligatoria.

Le lezioni affronteranno i seguenti argomenti:
Introduzione ai sistemi operativi (4 h, obiettivo formativo 1)
• Ruolo e obiettivi del sistema operativo (2 h)
• Funzionalità tipiche del sistema operativo (2 h)
Principi dei sistemi operativi (8 h, obiettivo formativo 2)
• Hardware ed evoluzione dei sistemi operativi (2 h)
• Organizzazione dei dispositivi (2 h)
• Interruzioni e implementazione (2 h)
• Modalità user/kernel e transizioni (2 h)
Concorrenza (12 h, obiettivo formativo 3)
• Il ruolo delle interruzioni (4 h)
• Process Control Block (2 h)
• Context switch (6 h)
Scheduling e dispatch (10 h, obiettivo formativo 4)
• Processi (4 h)
• Scheduling con e senza preemption (2 h)
• Thread (4 h)
Gestione della memoria (6 h, obiettivo formativo 5)
• MMU (2 h)
• Memory Layout (4 h)
Macchine virtuali (8 h, obiettivo formativo 6)
• Paginazione (4h)
• Memoria virtuale (4 h)
Esercizi sulla sincronizzazione tra processi (24 h, obiettivo formativo 7)
• Esercizi sulla sincronizzazione usando i semafori

Il corso si articola in lezioni frontali (48 ore) ed esercitazioni (24 ore).
Le lezioni sono dedicate all'illustrazione degli elementi che caratterizzano i sistemi operativi, delle problematiche tipiche dei sistemi operativi, e delle tecniche adatte ad organizzare programmi in processi e thread sincronizzati in modo opportuno.
Gli argomenti trattati a lezione sono oggetto di esercitazioni che prevedono la partecipazione attiva degli studenti e richiedono una valutazione critica delle soluzioni proposte.

L’obiettivo della prova d’esame è l'accertamento dell’acquisizione delle conoscenze e delle abilità descritte nella sezione “Obiettivi del corso”, valutando il livello di conoscenza e soprattutto la capacità di mettere in pratica, anche integrandole tra loro, le tecniche per organizzare il codice in processi e thread sincronizzati in modo opportuno viste a lezione.
L'esame consiste in una prova scritta da svolgersi in aula. La prova della durata indicativa di 120 minuti richiede, di norma, di risolvere tre esercizi, ciascuno dei quali testa la conoscenza approfondita di uno o più argomenti trattati nel corso; specificamente, vengono sempre testate la capacita di riconoscere problematiche relative alla sincronizzazione in porzioni di codice, la capacità di esporre in modo sintetico le problematiche di una particolarità funzionalità del sistema operativo, e la capacità di scrivere codice organizzato in processi/thread che si sincronizzano in modo opportuno.
La conoscenza della terminologia specifica di dominio viene testata implicitamente, poiché domande e specifiche dei problemi utilizzano tale terminologia.

I testi consigliati sono:
• A. Tanenbaum: Modern Operating Systems. McGraw Hill.
• A. Silberschatz, G. Gagne, G.P. Baer: Sistemi Operativi – concetti ed esempi. Paerson – McGraw Hill.
• D.M. Dhamdhere: Operating Systems – A concept based approach. McGraw Hill.

Tuttavia, data la generalità degli argomenti trattati, esistono diversi libri che possono proficuamente essere utilizzati dagli studenti al posto di quelli consigliati.
Le slide delle lezioni in formato PDF sono messe a disposizione sulla piattaforma e-learning di Ateneo ove sono disponibili anche il testo dei problemi visti durante le esercitazioni e le soluzioni proposte.

Il docente riceve su appuntamento, previa richiesta via e-mail a simone.tini@uninsubria.it. Il docente risponde solo alle e-mail firmate e provenienti dal dominio studenti.uninsubria.it.

Cerchi il programma? Potrebbe non essere ancora stato caricato o riferirsi ad insegnamenti che verranno erogati in futuro.
Seleziona l‘anno in cui ti sei immatricolato e troverai le informazioni relative all'insegnamento del tuo piano di studio.

A.A. 2019/2020

Anno di corso: 2
Curriculum: PERCORSO COMUNE

A.A. 2017/2018

Anno di corso: 2
Curriculum: PERCORSO COMUNE

A.A. 2016/2017

Anno di corso: 2
Curriculum: PERCORSO COMUNE

A.A. 2015/2016

Anno di corso: 2
Curriculum: PERCORSO COMUNE

A.A. 2014/2015

Anno di corso: 2
Curriculum: PERCORSO COMUNE

A.A. 2013/2014

Anno di corso: 2
Curriculum: PERCORSO COMUNE