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
- A. Silberschatz, J.L. Peterson - Operating system concepts - Addison-Wesley, Reading, MASS (Esiste anche la versione italiana)
- A.W. Tanenbaum - Progettazione e sviluppo dei sistemi operativi - Gruppo Editoriale Jackson
- B.W. Kernighan, D.M. Ritchie - Linguaggio C - Gruppo Editoriale Jackson
- T. Muelner, P.W. Steele - C as a second language for native speakers of Pascal - Addison-Wesley, Reading, MASS
Prerequisiti del corso:
- Conoscenza dell'architettura e del funzionamento a basso livello di un sistema di elaborazione (TAMC).
- Conoscenza di base delle problematiche e delle tecniche di programmazione (Sistemi I).
- Conoscenza della struttura generale e delle principali caratteristiche di un linguaggio assembly (TAMC) e di alto livello (Sistemi I).
Struttura del corso:
- Lezioni teoriche: vertono essenzialmente sui principi generali dei sistemi operativi (parte I).
- Esercitazioni (sia in aula che all'elaboratore): vengono dapprima illustrate le caratteristiche del C e di MINIX (parti II e III); successivamente si sperimenta MINIX direttamente sull'elaboratore.
Orario delle lezioni:
- Lunedì, mercoledì, venerdì ore 14 - 16 (Aula III, Dip. Fisica, Città Universitaria).
Orario di ricevimento studenti:
- Martedì, venerdì ore 9:30 - 11:30 (Via Salaria 113, III piano).
Updated by G. Bongiovanni
Back to my home page