Sistemi per l'Elaborazione dell'Informazione II

Corso di Laurea in Scienze dell'Informazione
Prof. Giancarlo Bongiovanni


Il corso illustra le caratteristiche fondamentali dei sistemi operativi e le problematiche connesse col progetto e la realizzazione dei medesimi. Un sistema operativo è costituito da un insieme di programmi volti a facilitare l'interazione fra l'utente ed un sistema di calcolo. Di conseguenza, lo scopo di un sistema operativo è, da un lato, la gestione delle risorse offerte dal sistema di calcolo, dall'altro il nascondere ai programmi dell'utente le complicazioni ed i dettagli derivanti dalla specifica struttura dell'hardware sottostante.

Nella prima parte del corso, di carattere teorico, si approfondiscono i concetti fondamentali relativi ai sistemi operativi, quali la gestione dei processi, della memoria, dell'Input/output e del file system.

La seconda parte del corso è invece rivolta allo studio ed alla sperimentazione di Minix, un sistema operativo reale che è sostanzialmente una versione di Unix orientata alla didattica. Lo scopo di questa parte consiste nel mostrare come siano affrontate e risolte in un caso reale le problematiche discusse precedentemente da un punto di vista teorico.

Il corso include inoltre un ciclo di lezioni ed esercitazioni per introdurre alla programmazione nel linguaggio C.


Programma del corso

PARTE I: la teoria dei sistemi operativi

Introduzione ai sistemi operativi

Definizione di sistema operativo (s.o.) - Storia ed evoluzione dei s.o.: primi sistemi, monitor semplici, sistemi off-line, buffering e spooling, time-sharing, protezione - Chiamate di sistema - Componenti principali di un s.o.: gestione dei processi, gestione della memoria, gestione dell'I/O, gestione dei file - Servizi di un s.o. - Architettura generale di un s.o. - Struttura a livelli e kernel - Macchine virtuali.
Gestione dei processi
Concetto di processo - Modello a processi concorrenti - Stato di un processo - Il problema del produttore/consumatore - Il problema della sezione critica - Semafori - Problemi classici nel coordinamento dei processi: il problema dei lettori/scrittori, il problema dei filosofi affamati - Costrutti linguistici per la gestione della concorrenza: monitor, scambio di messaggi - Supporti hardware: istruzione test&set - Comunicazione fra processi: memoria condivisa, scambio di messaggi con rendez-vous o con buffering - Multiprogrammazione - Scheduling dei processi - Il problema dello stallo e le sue soluzioni: deadlock detection, prevention ed avoidance - L'algoritmo del banchiere.
Gestione della memoria
Macchina spoglia - Monitor residente - Monoprogrammazione - Multiprogrammazione a partizioni fisse e variabili - Paginazione - Segmentazione - Memoria virtuale a paginazione su richiesta.
Gestione dell'I/O
Dispositivi di I/O e loro caratteristiche - Controllori di dispositivi - Principi del software di I/O: gestione delle interruzioni e dei dispositivi - I dischi: gestione del direttorio e dello spazio libero, metodi di allocazione dei file, scheduling delle richieste di I/O.
Gestione del file system
Concetto di file e directory - Operazioni sui file - Caratteristiche di un file system - Architettura di un file system: struttura dei file e dei directory - Problema della sicurezza - Meccanismi di protezione.
PARTE II: Un sistema operativo reale

Caratteristiche generali del sistema operativo MINIX

Storia di MINIX - MINIX dal punto di vista utente: shell, processi e file - Componenti di MINIX: gestore dei processi, gestore della memoria, gestore dei dispositivi di I/O, file system - Struttura interna di MINIX - Organizzazione del codice sorgente - Gestione delle interruzioni.
Gestione dei processi in MINIX
Struttura dei processi - Comunicazione fra processi - Schedulazione dei processi - Realizzazione delle chiamate di sistema.
Gestione della memoria in MINIX
Allocazione della memoria - Trattamento dei messaggi e dei segnali - Realizzazione delle chiamate di sistema.
Gestione dell'I/O in MINIX
Gestione delle interruzioni di I/O - Gestione delle periferiche - Trattamento dello stallo - Gestione del disco, dell'orologio, del terminale - Realizzazione delle chiamate di sistema.
File system di MINIX
Architettura del file system - Inodi - Directory e cammini - Descrittori di file - Pipe e file speciali - Realizzazione delle chiamate di sistema.
PARTE III: Il linguaggio C
Struttura di un programma C - Tipi di dati - Istruzioni - Strutture di controllo - Funzioni.

Testi Consigliati


Prerequisiti del corso:

Struttura del corso:


Orario delle lezioni:

Orario di ricevimento studenti:


Updated by G. Bongiovanni

Back to my home page