SISTEMI OPERATIVI
cod. 16593

Anno accademico 2014/15
2° anno di corso - Secondo semestre
Docente
Settore scientifico disciplinare
Informatica (INF/01)
Field
Discipline informatiche
Tipologia attività formativa
Caratterizzante
72 ore
di attività frontali
9 crediti
sede: PARMA
insegnamento
in - - -

Obiettivi formativi

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.

Prerequisiti

Architettura 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.

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 gestione del processore, RAM e periferiche. 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 alla interfaccia a basso livello con il sistema operativo e alla programmazione di sistema. 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 offrono uno spunto di 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.

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 della macchina fisica. Saper riprodurre tecniche di schedulazione di processi e disco. Conoscere le tecniche di gestione della memoria. Utilizzare le tecniche di base per la gestione concorrente di processi.

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 alla consegna delle relazioni delle esercitazioni di laboratorio. E' possibile sostenere più volte la prova scritta ma ogni scritto consegnato annulla lo scritto precedente.

Altre informazioni

- - -