SISTEMI OPERATIVI

Crediti: 
9
Settore scientifico disciplinare: 
INFORMATICA (INF/01)
Anno accademico di offerta: 
2017/2018
Semestre dell'insegnamento: 
Secondo Semestre
Lingua di insegnamento: 

italiano

Obiettivi formativi

Proporre un percorso che, partendo dalla gestione dei processi, copre le varie attivita’ del sistema, passando per la gestione della memorie, risorse e I/O.
Il corso prevede, oltre a lezioni teoriche, una serie di esercitazioni in laboratorio per la gestione del sistema operativo e la programmazione di sistema.

Con riferimento agli Indicatori di Dublino:

Conoscenza e capacità di comprensione
Il corso introduce i primi concetti relativi ai sistemi operativi. Particolare enfasi è data alla comprensione delle dei modelli di gestione e ottimizzazione delle risorse. Il testo di riferimento è in italiano, ma viene altresì utilizzata durante le lezioni la terminologia in lingua inglese come avviamento alla consultazione di letteratura scientifica internazionale.

Capacità di applicare conoscenza e comprensione
Le conoscenze teoriche presentate vengono sempre applicate alla risoluzione di problemi specifici. Le esercitazioni che affiancano il corso sono incentrate sulla risoluzione di esercizi e problemi, con particolare riferimento all’utilizzo del sistema operativo. Spesso i metodi risolutivi vengono presentati sotto forma algoritmica, sviluppando negli studenti la capacità di strutturare procedure utili in numerose parti dell'informatica e non solo nello studio dei sistemi operativi

Autonomia di giudizio
Gli esercizi, che vengono proposti relativamente alla parte teorica svolta a lezione, possono venire risolti individualmente o in gruppo. Il confronto con i compagni di corso, nel lavoro a casa o durante gli svolgimenti in aula, favorisce lo sviluppo di capacità specifiche per poter a chiarire ai compagni o ai docenti le proprie argomentazioni. Spesso gli esercizi proposti possono venire risolti in modi molto diversi e l'ascolto delle soluzioni proposte da altri permette di sviluppare la capacità di individuare strutture comuni, al di là delle apparenti differenze superficiali.

Abilità comunicative
Le numerose discussioni sui diversi metodi per risolvere i problemi proposti consentono di migliorare le capacità di comunicazione. Vengono inoltre abitualmente utilizzate durante le spiegazioni (ed esplicitamente evidenziate in classe) alcune modalità di comunicazione specifiche della tecnologia informatica.

Capacità di apprendimento
Lo studio delle origini delle soluzioni tecnologiche e la loro introduzione motivata da considerazioni quantitative contribuisce a realizzare negli studenti la capacità di apprendere in modo profondo e non soltanto superficiale e ripetitivo. Le conoscenze così acquisite non sono mai rigide e definitive, ma sono perfettamente adattabili ad ogni evoluzione e cambiamento di prospettiva e di contesto.

Prerequisiti

Architetture degli Elaboratori

Contenuti dell'insegnamento

Il corso introduce i principi ed i concetti fondamentali su cui si basano i sistemi operativi. In particolare, vengono analizzate le tecniche che consentono di coordinare e gestire le risorse di un sistema di elaborazione e che permettono di trasformare la macchina fisica in una macchina astratta, dotata di funzionalità più convenienti per l'utente.

Programma esteso

Introduzione.
Richiami sulla struttura del calcolatore
Processi e Thread.
Modello a processi, stato, generazione e terminazione. Il modello a thread, uso e implementazione. Paradigmi di interazione: condivisione, sincronizzazione, comunicazione. Scheduling di thread e processi.
Le Risorse.
Modelli di gestione delle risorse. Politiche elementari di gestione. Il problema dello stallo: caratterizzazione, metodi per evitarlo, impedirlo, riconoscerlo ed eliminarlo. Attesa indefinita. Alcuni problemi classici.
Gestione della memoria.
Il problema di base. Swapping. Paginazione. Algoritmi di sostituzione. Cenni sulla tecnica di segmentazione ed sulle problematiche implementative.
Gestione dei dispositivi di Ingresso/Uscita.
Dispositivi e processi controller. Caratteristiche del software di I/O, vari livelli di gestione: interruzioni, driver dei dispositivi, I/O software indipendente dai dispositivi. Gestione di alcuni dispositivi: dispositivi a caratteri, dischi magnetici.
File System.
Modello logico del sistema di archiviazione, file, directory. Implementazione di un file system. Esempi di file system.

La shell di Unix. La shell Bash, shell scripting, i filtri.
Programmazione di Sistema in C. Chiamate e librerie di sistema, controllo dei processi, comunicazioni tra processi, thread e multithreading, accesso al file-system e I/O.

Bibliografia

A. Silberschatz. Sistemi Operativi, (concetti ed esempi). Ottava Edizione. Pearson.

Metodi didattici

lezioni frontali e laboratorio

Modalità verifica apprendimento

Risultati dell'apprendimento e modalità di verifica
Saper comprendere e utilizzare in modo appropriato le tecniche relative alla gestione di un sistema operativo. Saper lavorare a livello logico con gli algoritmi di gestione dei processi, memoria e I/O. Conoscere l'architettura di base di un sistema operativo e conoscere la sua gestione tramite riga di comando e programmazione di sistema.

Modalità di verifica/esame
L'esame consiste in una prova scritta e un colloquio orale a cui si accede solo al superamento della prova scritta. E' possibile sostenere più volte la prova scritta ma ogni scritto consegnato annulla lo scritto precedente. Sono previste delle lezioni di laboratorio con relative relazioni che saranno valutate in sede di prova orale. La prova scritta consiste in un insieme di domande aperte sul programma del corso, mentre quella orale comprende alcune domande sugli aspetti di base e generali trattati nell'intero corso.
E’ prevista una prova intermedia a novembre sulla prima meta’ del corso, che, se superata, permette l’esonero della prima parte della prova scritta negli appelli da Giugno a Settembre inclusi. In questo caso il voto complessivo della prova scritta e’ calcolato come media aritmetica tra la prova scritta e quella intermedia.