Dipartimento di Informatica e Scienze dell'Informazione
Corsi di Sistemi Operativi e
Laboratorio di Sistemi Operativi - a.a.1997/98
(Corso di Laurea in Informatica e Diploma in Informatica)
Docenti: dottoressa
Vittoria Gianuzzi
(email
gianuzzi@disi.unige.it)
e dottoressa
Gabriella Dodero
(email
dodero@disi.unige.it)
Lo scopo dei corsi e' di fornire competenze sull'argomento dei sistemi
operativi, sia come strutture interne e principi di progettazione, sia
come utilizzatore esperto e sistemista.
Il corso di Laboratorio, abbinato
al corso di Sistemi Operativi, verte sui sistemi operativi Linux e Minix.
Gli studenti avranno accesso al codice sorgente di Minix
e ne modificheranno una parte come progetto di fine corso.
Nel successivo programma le parti indicate come "Laboratorio" fanno
riferimento ad alcune ore di lezioni in aula, collegate al corso di
Laboratorio.
Una parte dei
lucidi
delle lezioni e' disponibile (in formato Word 7)
-
Introduzione
- Principi di base sui Sistemi Operativi: cenni storici e richiami
al concetto di "Struttura degli elaboratori": sistemi monolitici,
a livelli, macchine virtuali, modello client-server, sistemi distribuiti.
- Definizione e struttura dei processi sequenziali e files. Interruzioni e
chiamate di sistema.
- Esempio di organizzazione interna di un sistema operativo: Unix.
Primitive di sistema relative alla gestione dei processi, dei dispositivi
di I/O, della memoria centrale e dei file, con relative strutture dati.
- Laboratorio. Esempio di Sistema Operativo: Linux (da utente):
principali comandi, shell e make.
-
Sistemi Centralizzati
- Definizione e struttura dei processi sequenziali e concorrenti
- Problemi classici di comunicazione e sincronizzazione fra processi
e mutua esclusione.
- Deadlock: metodi di avoidance, prevention e detection-recovery.
- Schedulazione dei processi.
Scheduling FCFS, SJF, Round Robin, Multi level queue, Aging, Deadline.
- Laboratorio: gestione dei processi in Unix e Minix; struttura
del kernel Minix.
- Gestione della memoria: complementi su paginazione e segmentazione.
Paginazione a richiesta, politiche di rimpiazzamento, paging e swapping.
- Laboratorio: metodi di implementazione del Memory Management; struttura
e sorgenti del Memory Manager di Minix.
- Gestione degli archivi: descrittore di file, allocazione dei blocchi,
cenni sulla security.
- Laboratorio: metodi di implementazione del File System.
- Laboratorio: Linux da superuser.
-
Sistemi Distribuiti
- Reti di computer: concetti hardware e topologie di reti.
- Comunicazione: Livelli OSI (cenni),
Protocolli Ethernet e Token Ring, Problemi di naming su rete,
Protocolli IP, TCP e UDP, Caratteristiche di Internet,
Application Interface di Unix, modello client-server.
- Problemi di sincronizzazione: Tempo globale e time-stamp,
Mutua esclusione centralizzata (elezione del leader) e distribuita,
Implementazione di azioni atomiche.
E' indispensabile aver frequentato il corso di Architetture (I anno) e
relativo Laboratorio, anche se non e' richiesto il superamento dell'esame.
E' indispensabile aver frequentato il corso di Algoritmi (I anno) e
relativo laboratorio, in particolare saper svolgere semplici esercizi
di programmazione C; non e' richiesto il superamento dell'esame.
- J.L.Peterson - A.Silbershatz, Operating Systems Concepts,
2nd Ed., Addison-Wesley, 1985.
- A.S.Tanenbaum, Operating Systems, Design and Implementation,
Prentice Hall Int., 1987.
- A.S.Tanenbaum, Modern Operating Systems, Prentice Hall Int., 1992.
- Bach, The design of the Unix Operating System, Prentice Hall, 1986
(ed. italiana: Unix: Architettura di Sistema, Jackson).
Per superare l'esame e' necessario avere svolto le esercitazioni
indicate.
- Utilizzo del Sistema Operativo Linux:
principali comandi, Bourn Again Shell, programmi per la gestione di
file e processi, uso di make.
Esempi
su FTP.
- Prima esercitazione: memory manager di Minix. Il testo e` disponibile in
formato
Word 7 e come
solo testo
- Seconda esercitazione: