SISTEMI DI ELABORAZIONE DELL'INFORMAZIONE (m)
2oMODULO
A. A. 1997-98
Dott. Marco Ronchetti
Oggetto e obiettivi del corso
Il corso fornirà una introduzione teorica e pratica ai sistemi
operativi, esaminandone le varie componenti. Verranno introdotti i concetti
fondamentali e gli strumenti di base necessari per programmare un
sistema mutiutente, con cenni alla sua gestione. Durante il corso ci saranno esercitazioni su macchine Unix e lo sviluppo di un piccolo progetto finale che utilizza diverse system calls.
Programma
RAPPRESENTAZIONE DEI DATI
- Rappresentazione degli interi
- Rappresentazione dei Floating Point
- Rappresentazione dei caratteri
INTRODUZIONE AL LINGUAGGIO C
Assumendo la conoscenza di un linguaggio di programmazione imperativo,
passeremo in rassegna brevemente i costrutti del C, con particolare
attenzione a strutture, puntatori, arrays, stringhe, passaggio di parametri
a funzioni. Saranno discusse le funzioni per l'I/O e per il trattamento
di stringhe.
Come esercizio saranno discusse le liste linkate e le tabelle hash.
Il linguaggio C sarà 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 consigliati
- 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.