SISTEMI DI ELABORAZIONE DELL'INFORMAZIONE (m,f)
2oMODULO
A. A. 1996-97
Dott. Marco Ronchetti
Corso dedicato alla memoria di Ernesto Omerti
Argomenti effettivamente svolti e modalità d'esame
Il corso ha fornito una introduzione teorica e pratica ai sistemi operativi, esaminandone le varie componenti. Ha introdotto i concetti fondamentali e gli strumenti di base necessari per programmare un sistema mutiutente, con cenni alla sua gestione. Durante il corso sono stati presentati esempi pratici relativi a Unix. La parte pratica ha previsto esercitazioni su macchine Unix e lo sviluppo di un piccolo progetto finale che utilizza diverse system calls.
RAPPRESENTAZIONE DEI DATI
(Questa sezione non è richiesta agli studenti del Diploma)
- Rappresentazione degli interi
- Rappresentazione dei Floating Point
- Rappresentazione dei caratteri
INTRODUZIONE AL LINGUAGGIO C
Assumendo la conoscenza di un linguaggio di programmazione imperativo, abbiamo passato in rassegna brevemente i costrutti del C, con particolare attenzione a strutture, puntatori, arrays, stringhe, passaggio di parametri a funzioni. Sono state discusse le funzioni per l'I/O e per il trattamento di stringhe.
Come esercizio sono state discusse le liste linkate e le tabelle hash. Il linguaggio C è stato poi utilizzato nel corso per illustrare le system calls di Unix.
INTRODUZIONE AI SISTEMI OPERATIVI
Sviluppo storico e concetti di base. Sistemi batch, time sharing, paralleli, distribuiti, real time. Funzioni di un sistema operativo. Monotasking, multitasking vero e cooperativo. System calls: Kernel mode e User mode. Cenni di reti.
GESTIONE DELLA MEMORIA
- Spazio logico e spazio fisico degli indirizzi. Protezione e rilocazione. DMA. Il problema dei 640 Kb in DOS.
- Uso della memoria da parte di un processo: heap, stack, zona text. Discussione di come da linguaggio C si accedono le varie zone di memoria tramite variabili locali e automatiche, uso di malloc e free.
- Uso della memoria fisica in un sistema multitasking: gestione della memoria tramite partizioni fisse, buddy systems, bitmap, liste linkate.
- Memoria virtuale: paginazione, MMU.
FILE SYSTEM
- Concetto di File e di Directory. Nomi, struttura, tipo, attributi dei files. Operazioni su files e directories.
- Implementazione delle directories in DOS e Unix. Meccanismi di protezione, setUID.
- Implementazione di File-systems: allocazione contigua, liste linkate, i-nodes, FAT. Cenni a NFS.
- Partizionamento e formattazione dei dischi.
- Files condivisi: hard e soft links.
- System calls: open, creat, read, write, lseek.
PROCESSI
- Concetto di processo. Politiche di scheduling di processi. Stati di un processo.
- System calls: fork, exec, wait, getpid, getppid. Gerarchia dei processi (init, getty, login, sh)
- Struttura di una shell. Processi in foregrorund e background. Redirezione di I/O.
- Process table. Condivisione dei files tra processi.
INTERPROCESS COMMUNICATION
- Comunicazione tramite pipes: pipe, FIFO, dup2, mknod.
- Shared memory: shmget, shmctl, shmat, shmdt
- I problemi della concorrenza: sincronizzazione di processi: race condition, sezione critica, esclusione mutua, busy waiting. Soluzione di Peterson.
- Semafori: semget,semat,semctl.
- Problemi classici di interprocess communication: Dining Philosophers, Producer and Consumer, Readers and Writers.
- Deadlocks: Condizioni per il verificarsi di deadlocks. Starvation.
Testi di riferimento
Per il linguaggio C:
KERNIGHAN-RITCHIE, "Il linguaggio C", Prentice Hall
Per la teoria dei sistemi operativi:
A.S.TANENBAUM, "Modern Operating Systems", Prentice Hall 1992. (Disponibile in edizione italiana dalla Editoriale Jackson)
Per le system call di Unix:
W.R.STEVENS, "Unix Network Programming", Prentice Hall,oppure
W.R.STEVENS, "Advanced Programming in the Unix Environment", Prentice Hall
Per una introduzione a Unix come utente:
LEVINE-LEVINE, "Usare Unix senza fatica", Mc Graw-Hill
Modalità e svolgimento dell'esame
L'esame consiste nello svolgimento di un progetto finale e di un orale. Il progetto finale va sviluppato in C: si deve scrivere un sistema di gestione dati basato su più processi concorrenti che accedono ad informazioni condivise, curando le problematiche derivate dalla concorrenza.
Date dei prossimi appelli d'esame:
Orale: 24.9.97 ore 9,00
Orale: