SISTEMI OPERATIVI
OPERATING SYSTEMS
A.A. | CFU |
---|---|
2022/2023 | 12 |
Docente | Ricevimento studentesse e studenti | |
---|---|---|
Emanuele Lattanzi | Lunedì ore 16.00-18.00 |
Didattica in lingue straniere |
---|
Insegnamento con materiali opzionali in lingua straniera
Inglese
La didattica è svolta interamente in lingua italiana. I materiali di studio e l'esame possono essere in lingua straniera. |
Assegnato al Corso di Studio
Giorno | Orario | Aula |
---|
Giorno | Orario | Aula |
---|
Obiettivi Formativi
Il Corso ha lo scopo di illustrare la struttura di un sistema operativo multiprogrammato e le relative politiche di amministrazione delle risorse computazionali, con particolare riferimento alla schedulazione della CPU e alla gestione della memoria centrale, del file system e dei dispositivi di I/O.
Programma
-- Primo semestre --
01. Introduzione:
01.01 Introduzione ai sistemi operativi.
01.02 Strutture dei sistemi operativi.
01.03 Principali funzioni di un sistema operativo.
01.04 Chiamate di sistema.
02. Processi:
02.01 Gestione dei processi.
02.02 Context switch.
02.03 Thread vs. processi.
02.04 Comunicazione tra processi.
03. Sincronizzazione:
03.01 Il problema della sezione critica.
03.02 Strumenti per la sincronizzazione e loro uso.
03.03 Problemi di sincronizzazione e deadlock.
04. Scheduling:
04.01 Concetti fondamentali.
04.02 Algoritmi di scheduling.
04.03 Scheduling nei sistemi multiprocessore.
05. Scheduling in Linux:
05.01 Process descriptor.
05.02 Caratteristiche principali.
05.03 Lo scheduler 2.4.x.
05.04 Lo scheduler 2.6.x.
05.05 Lo scheduler CFS - “Completely Fair Scheduler”.
06. Memoria principale:
06.01 Organizzazione della memoria principale.
06.02 Paginazione.
06.03 Struttura della tabella delle pagine.
06.04 Segmentazione.
06.05 Esempi: Pentium Intel e AMD64.
07. Memoria virtuale:
07.01 Paginazione su richiesta.
07.02 Sostituzione delle pagine.
07.03 Allocazione dei frame.
07.04 File mappati in memoria.
-- Secondo semestre --
08. File system:
08.01 Concetto di file system.
08.02 Struttura della directory.
08.03 Montaggio, condivisione e protezione.
08.04 Metodi di allocazione.
08.05 Gestione dello spazio libero.
09. Memorie di Massa:
09.01 Struttura di un disco magnetico.
09.02 Performance dei dischi.
09.03 Algoritmi di scheduling.
09.04 Dischi allo stato solido (SSD).
10. Crittografia:
10.01 Crittografia a chiave simmetrica.
10.02 Crittografia a chiave pubblica.
10.03 Autenticazione.
10.04 Esempi: DES, AES, SSL, MD5, SHA-1
11. Macchine virtuali:
11.01 Macchine virtuali astratte.
11.02 Macchine virtuali reali.
11.03 Struttura delle macchine virtuali.
11.04 JVM - Java Virtual Machine.
12. Il sistema operativo Android:
12.01 Struttura.
12.02 Le Virtual Machine Dalvik e ART.
12.03 Applicazioni.
12.04 Message passing: Intents.
13. Attività di laboratorio:
13.01 Gestione dei processi nei sistemi UNIX-like.
13.02 Gestione dei thread nei sistemi UNIX-like.
13.03 Gestione dei thread in Java.
13.04 Strumenti per la sincronizzazione dei thread in Java
Eventuali Propedeuticità
Non vi sono propedeuticità obbligatorie.
Si suggerisce di sostenere l'esame di Sistemi Operativi dopo aver sostenuto gli esami di Programmazione Procedurale, Reti Logiche, Architettura degli Elaboratori,Algoritmi e Strutture Dati e prima di sostenere l'esame di Reti di Calcolatori.
Risultati di Apprendimento (Descrittori di Dublino)
- Conoscenza e capacità di comprensione: Lo studente al termine del corso acquisirà le conoscenze fondamentali sulla struttura e funzionalità dei moderni sistemi operativi. Conoscerà i più diffusi algoritmi di gestione delle risorse, le metriche per valutare le performance dei sistemi operativi, nonché acquisirà i principi di base della programmazione concorrente.
- Conoscenza e capacità di comprensione applicate: Lo studente acquisirà competenze sulla creazione e gestione dei processi e thread, tuning dello scheduler e API di programmazione in ambiente Linux. Inoltre, acquisirà le metodologie di programmazione concorrente in ambiente Java e sarà in grado di utilizzare strumenti di sincronizzazione quali lock, semafori e variabili condizione.
- Autonomia di giudizio: Lo studente sarà in grado di valutare le performance degli algoritmi di gestione delle risorse che stanno alla base dei moderni sistemi operativi e di comprendere e risolvere problemi tipici della programmazione concorrente. Le discussioni critiche in aula e le esercitazioni serviranno a stimolare e sviluppare l'autonomia di giudizio dello studente.
- Abilità comunicative: Lo studente acquisirà la capacità di esprimere i concetti fondamentali che stanno alla base del funzionamento e della progettazione dei moderni sistemi operativi con terminologia appropriata e rigorosa. Imparerà a descrivere i problemi inerenti la programmazione concorrente e le metodologie adottate per la loro soluzione.
- Capacità di apprendere: Lo studente acquisirà la capacità di studiare ed apprendere la struttura ed il funzionamento dei moderni sistemi operativi.
Materiale Didattico
Il materiale didattico predisposto dalla/dal docente in aggiunta ai testi consigliati (come ad esempio diapositive, dispense, esercizi, bibliografia) e le comunicazioni della/del docente specifiche per l'insegnamento sono reperibili all'interno della piattaforma Moodle › blended.uniurb.it
Modalità Didattiche, Obblighi, Testi di Studio e Modalità di Accertamento
- Modalità didattiche
Lezioni frontali ed esercitazioni di laboratorio.
- Obblighi
Sebbene fortemente consigliata, la frequenza delle lezioni non è obbligatoria.
- Testi di studio
- Silbershatz, Galvin, Gagne, "Sistemi Operativi Concetti ed Esempi", Pearson
- Tanenbaum, "I Moderni Sistemi Operativi", Pearson
- Ancilotti, Boari, "Programmazione Concorrente e Distribuita", McGraw-Hill.
- Bovet, Cesati, "Understanding the Linux Kernel", O'Reilly
- Goetz, Peierls, Bloch, Bowbeer, Holmes, Lea, "Java Concurrency in Practice", Addison-Wesley
- Modalità di
accertamento Prova di programmazione concorrente al calcolatore (durata 3 ore) e prova orale.
La prova di programamzione è composta da un esercizio di programmazione concorrente da svolgere in aula (al calcolatore) della durata di 3 ore. La prova di programmazione viene valutata in trentesimi ed è ritenuta sufficiente se il relativo voto, che rimane valido per il solo appello in cui la prova viene sostenuta, è di almeno 18/30. Tale prova pemetterà al docente di valutare la conoscenza dei principi di base della programmazione concorrente ed in particolare sarà uitile per valutare la capacità di programmare in ambiente Java utilizzando strumenti di sincronizzazione quali lock, semafori e variabili condizione.
La prova orale, che può essere sostenuta solo previo superamento della prova scritta, comporta un aggiustamento per eccesso o per difetto di al più 10/30 del voto della prova pratica, determinando così il voto finale. Tale prova permetterà al docente di valutare le conoscenze fondamentali sulla struttura e funzionalità dei moderni sistemi operativi e la conoscenza degli algoritmi di gestione delle risorse che stanno alla base dei moderni sistemi operativi. Infine, tale prova permetterà al docente di valutare l'autonomia di giudizio e le abilità comunicative acquisite dallo studente
- Disabilità e DSA
Le studentesse e gli studenti che hanno registrato la certificazione di disabilità o la certificazione di DSA presso l'Ufficio Inclusione e diritto allo studio, possono chiedere di utilizzare le mappe concettuali (per parole chiave) durante la prova di esame.
A tal fine, è necessario inviare le mappe, due settimane prima dell’appello di esame, alla o al docente del corso, che ne verificherà la coerenza con le indicazioni delle linee guida di ateneo e potrà chiederne la modifica.
« torna indietro | Ultimo aggiornamento: 07/07/2022 |