ID:
SCV0030
Durata (ore):
72
CFU:
8
SSD:
INFORMATICA
Sede:
Como - Università degli Studi dell'Insubria
Anno:
2024
Dati Generali
Periodo di attività
Primo Semestre (25/09/2023 - 21/12/2023)
Syllabus
Obiettivi Formativi
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.
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.
Prerequisiti
È 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.
Metodi didattici
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.
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.
Verifica Apprendimento
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.
Il voto è espresso in trentesimi. Le tre abilità sopra descritte contribuiranno al punteggio con i seguenti pesi: 30%, 10%, 60%.
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.
Il voto è espresso in trentesimi. Le tre abilità sopra descritte contribuiranno al punteggio con i seguenti pesi: 30%, 10%, 60%.
Contenuti
Le lezioni affronteranno i seguenti argomenti:
Introduzione ai sistemi operativi (4 h)
• Ruolo e obiettivi del sistema operativo (2 h)
• Funzionalità tipiche del sistema operativo (2 h)
Principi dei sistemi operativi (8 h)
• 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)
• Il ruolo delle interruzioni (4 h)
• Process Control Block (2 h)
• Context switch (6 h)
Scheduling e dispatch (10 h)
• Processi (4 h)
• Scheduling con e senza preemption (2 h)
• Thread (4 h)
Gestione della memoria (6 h)
• MMU (2 h)
• Memory Layout (4 h)
Macchine virtuali (8 h)
• Paginazione (4h)
• Memoria virtuale (4 h)
Esercizi sulla sincronizzazione tra processi (24 h)
• Esercizi sulla sincronizzazione usando i semafori
Introduzione ai sistemi operativi (4 h)
• Ruolo e obiettivi del sistema operativo (2 h)
• Funzionalità tipiche del sistema operativo (2 h)
Principi dei sistemi operativi (8 h)
• 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)
• Il ruolo delle interruzioni (4 h)
• Process Control Block (2 h)
• Context switch (6 h)
Scheduling e dispatch (10 h)
• Processi (4 h)
• Scheduling con e senza preemption (2 h)
• Thread (4 h)
Gestione della memoria (6 h)
• MMU (2 h)
• Memory Layout (4 h)
Macchine virtuali (8 h)
• Paginazione (4h)
• Memoria virtuale (4 h)
Esercizi sulla sincronizzazione tra processi (24 h)
• Esercizi sulla sincronizzazione usando i semafori
Lingua Insegnamento
ITALIANO
Altre informazioni
Il docente riceve su appuntamento, previa richiesta via e-mail a roberto.pazzi@uninsubria.it. Il docente risponde solo alle e-mail firmate e provenienti dal dominio studenti.uninsubria.it.
Corsi
Corsi
INFORMATICA
Laurea
3 anni
No Results Found
Persone
Persone
Borsisti
No Results Found