Dettagli sull'Insegnamento per l'A.A. 2018/2019
Nome:
Sistemi Operativi / Operating Systems
Informazioni
Crediti:
: Laurea in Ingegneria dell'Informazione 6 CFU (b)
Erogazione:
Laurea in Ingegneria dell'Informazione 3rd anno curriculum Comune Compulsory
Lingua:
Italiano
Prerequisiti
Nozioni di base dell'architettura di un calcolatore elettronico ed esperienza di utilizzo. Tecniche di programmazione di base, con esperienza di programmazione in linguaggio C/C++. Conoscenza di base delle principali strutture di dati elementari (array, liste, pile, code) e avanzate (alberi e grafi).
Obiettivi
Il corso si propone di fornire le nozioni necessarie alla comprensione del funzionamento dei moderni sistemi di elaborazione, sia relativamente agli aspetti metodologici che a quelli tecnologici, per far sì che l’allievo acquisisca una maggiore professionalità e consapevolezza nell'utilizzo del calcolatore. Il corso affronta problematiche legate alla gestione della CPU, alla gestione del sistema di memorie e alla gestione delle periferiche. Gli argomenti vengono trattati sia da un punto di vista metodologico generale, che con riferimento a sistemi operativi reali diffusi sul mercato, in modo da fornire una panoramica sulle soluzione tecnologiche avanzate e al contempo competenze teoriche e professionalizzanti che non mutino al variare dei sistemi e delle loro versioni.
Sillabo
- Introduzione ai Sistemi Operativi: definizione, obiettivi e tipologie di Sistemi Operativi; multiprogrammazione e time-sharing; comunicazione con le periferiche. ([1] Capitolo 1).
- Struttura dei Sistemi Operativi: componenti e servizi di un Sistema Operativo; gestione delle risorse; chiamate di sistema; approccio stratificato e macchine virtuali; ([1] Capitolo 2).
- Processi e Threads: concetto di processo, scheduling dei processi, processi cooperanti, comunicazione tra processi; modelli e questioni di programmazione multithreads; ([1] Capitoli 3 e 4 escluse le sezioni 3.5, 3.6, 4.4 e 4.5).
- Scheduling della CPU: concetti di base, criteri di scheduling, algoritmi di scheduling, valutazione degli algoritmi di scheduling ([1] Capitolo 5 escluse le sezioni 5.5 e 5.6.1).
- Sincronizzazione dei processi: concetti fondamentali, sezioni critiche, semafori, problemi tipici di sincronizzazione: Produttore/Consumatore, Lettori/Scrittori, 5 Filosofi. ([1] Capitolo 6 escluse le sezioni 6.7, 6.8 e 6.9).
- Sincronizzazione dei processi in ambiente GNU/Linux: le chiamate di sistema getpid(), fork(), waitpid(), memoria condivisa, semafori, realizzazione del produttore/consumatore. Sincronizzazione dei processi in ambiente Windows: memoria condivisa, processi, threads, semafori, realizzazione del produttore/consumatore. ([2])
- Stallo dei processi: definizione, caratterizzazione, tecniche per prevenire, evitare, rilevare e rimuovere il deadlock ([1] Capitolo 7).
- Gestione della memoria centrale: tecniche fondamentali e supporto hardware; indirizzi logici e fisici, allocazione contigua, paginazione e segmentazione. Memoria virtuale: algoritmi di paginazione, analisi delle prestazioni ([1] Capitoli 8 e 9 escluse le sezioni 8.5.2, 9.6.2, 9.6.3, 9.7, 9.8, 9.9, 9.10).
- Gestione del file system: nozioni di file e directory, metodi di accesso, struttura delle directory, condivisione di file e protezione, struttura del file system, metodi di allocazione, gestione dello spazio libero, efficienza e prestazioni ([1] Capitoli 10 e 11 escluse le sezioni 11.3.2, 11.9).
Descrittori di Dublino
Alla fine del corso, lo studente dovrebbe
-
Have profound knowledge of basic concepts common to all the operating systems and of the basic mechanisms and policies of operating systems; has knowledge and understanding of how these concept impact on the performance of a computer; have knowlege of the basic principles of unix/linux and windows system programming, and of the basic notions about concurrent programming in both operating systems.
-
Have ability to relate different topics; ability to solve problems of concurrent programming never faced in classroom, but solvable through logic deductions and reasoning; ability in using unix/linux and windows system calls and in facing and solving simple concurrent programming problems.
-
Have ability to analyze and synthesize concepts; ability to apply these concepts to real world operating systems; interest in design and pragmatic implementation aspects of operating-system technology.
-
Demonstrate ability to understand and explain the knowledge acquired by the course.
-
Have capacity to read and understand other texts/papers on related topics using notions learnt by the course and understand their applications.
Testi di riferimento
- Mattia D’Emidio, Daniele Frigioni and Daniele Romano, Elementi di programmazione concorrente in ambienti GNU-Linux e Microsoft Windows , Libreria Universitaria Benedetti. 2012.
- Abraham Silberschatz, Peter B. Galvin, Greg Gagn, Sistemi Operativi - Concetti ed Esempi (ottava edizione) , Addison-Wesley. 2009.
Modalità d'esame
Prova unica
Aggiornamenti alla pagina del corso
Le informazioni sulle editioni passate di questo corso sono disponibili per i seguenti anni accademici:
Per leggere le informazioni correnti sul corso, se ancora erogato, consulta il catalogo corsi di ateneo.
Ultimo aggiornamento delle informazioni sul corso: 19 febbraio 2014, 11:36