|
|
Sistemi Operativi: Programma a.a. 2002-2003
- Introduzione: cos'è un sistema operativo, diversi tipi
di s.o. (batch, multiprogrammato, time-sharing, ...);
- Struttura di un calcolatore: funzionalità, I/O, dispositivi
di memoria, sistemi RAID, meccanisimi di protezione hardware;
- Struttura di un s.o.: componenti, servizi, system calls,
programmi di sistema, struttura, macchine virtuali (JVM e VMware);
- Introduzione alla programmazione Java;
- Multitasking: processi e threads;
- Processi cooperanti: il problema Produttore-Consumatore; IPC
con memoria condivisa e scambio di messagi;
- Comunicazione in ambienti distribuiti: sockets in TCP/IP e
RPC;
- Sincronizzazione di processi: primitive java per attendere
completamento threads e processi, semafori, regioni critiche
e monitor; problema produttore/consumatore con buffer di memoria
limitato, problema lettori/scrittori, problema dei 5 filosofi;
esempi applicativi in Java; monitor, mutex lock e variabili
di condizione in Java;
- I/O asincrono: un esempio applicativo per multi-threading
e sincronizzazione;
- Multi Programming Modules (MPM) in Apache httpd;
- CPU scheduling: concetti di base (CPU e I/O burst, scheduler,
preemption, dispatcher), criteri di scheduling, algoritmi (first
come first served, shortest job first, round robin, coda multilivello,
coda multilivello con feedback, sistemi real-time); thread scheduling
nella macchina virtuale Java (green threads e threads nativi
sotto Windows);
- Il problema dello stallo;
- File system: file ed operazioni su di essi; struttura logica/fisica
e modalità di accesso; organizzione dei files directory
e operazioni su di esse; meccanismi di protezione; metodi di
allocazione; gestione dello spazio libero; cache del disco (algoritmi
di rimpiazzamento FIFO e LRU); i file systems di BSD Unix; i
file system di Linux (ext2, dev, proc); file systems avanzati
(ext3, JFS, XFS, ReiserFS); file systems distribuiti (NFS).
Materiale didattico
- Sistemi RAID [ documento
PDF (Adaptec) ]
- J.Sugerman, G.Venkitachalam, B.-H.Lim, “Virtualizing I/O
Devices on VMware Workstation's Hosted Virtual Machine Monitor”,
in proc. of USENIX Annual Technical Conference, 2001 [ documento
PDF ] (gli argomenti trattati nel corso sono trattati
in particolare nelle prime due sezioni)
- Specifica della Java Virtual Machine [ documento
HTML (Sun) ]
- Introduzione a Java [ documento
PDF ], [ sorgenti
Java ]
- Scheletro di un'implementazione Java di una generica VM [ sorgenti
Java ]
- Gestione di processi in C (Linux/UNIX) [ documento
PDF ]
- Esempi su processi [ sorgenti
C per UNIX/Linux ], [ sorgenti
Java ]
- Esempi su threads [ sorgenti
Java ]
- Produttore-consumatore; ad oggi il pacchetto Java comprende
le realizzazioni mediante [ sorgenti
Java ]:
- memoria condivisa,
- mailbox (code di messaggi)
L'esempio in C (UNIX/Linux) è una realizzazione basata
su due processi che comunicano mediante una memoria condivisa
[ sorgenti
C ]
- Comunicazione tramite socket TCP: server TCP multithreaded [ documento
PDF ], [ sorgenti Java ]
- Sincronizzazazione tra processi/thread [ sorgenti
Java ]
- elementare, mediante Thread.join()
- regione critica, mediante costrutto synchronized(object)
{ ... }
- monitor, mediante metodi sincronizzati e wait() / notify()
- variabili di condizione (applicazione al problema del buffer
limitato)
- altri esempi [ sorgenti Java ]
- lettura asincrona mediante bufferizzazione
- B.Gröne, A.Knöpfel, R.Kugel, O.Schmidt, “The
Apache Modelling Project”, [ documento
HTML (Università di Potsdam) ]. Di particolare
interesse per il corso, le sezioni:
- 2.2 Compiti di un server HTTP
- 2.3 Protocolli e standards
- 4.3 L'architettura multitasking di Apache
- Approfondimenti sui file systems per Linux:
- R.Card, T.Ts'o, S.C.Tweedie, “Design and Implementation of the Second Extended Filesystem”
[ documento HTML (Sourceforge) ]
- S.C.Tweedie, “Journaling the Linux ext2fs Filesystem”
[ documento PDF ]
- J.Mostek, W.Earl, D.Koren, “Porting the SGI XFS File System to Linux” [ documento PDF (SGI) ]
- S.Best, “Journaling File Systems”
[ documento HTML (Linux Magazine) ]
- AA.VV., “Common threads: Advanced filesystem implementor's guide”, parti 1-10,
[ documenti HTML (IBM) ]
Nota sul diritto d'autore: il materiale pubblicato su questa pagina,
fatta eccezione per quello prodotto da terzi, è diffuso per
il solo scopo di aiutare gli studenti del corso al superamento dell'esame.
Si diffida dalla pubblicazione/copia del suddetto materiale per
scopi diversi. In particolare è fatto divieto di diffusione
e riproduzione con fini di lucro.
Libri consigliati
- A. Silberschatz, P.G. Galvin, G. Gagne, "Operating
Systems Concepts", J. Wiley & Sons, 6th
edition, 2001 (disponibile anche in italiano)
oppure: A. Silberschatz, P.G. Galvin, G. Gagne, "Applied
Operating Systems Concepts", J. Wiley & Sons,
2000
- S. Oaks, H. Wong, "Java Threads", O'Reilly,
2nd edition, 1999.
Per approfondimenti su Java:
- H.M. Deitel, P.J. Deitel, “Java 2 Fondamenti di programmazione”, Apogeo, 2000.
- H.M. Deitel, P.J. Deitel, “Java Tecniche avanzate di programmazione”, Apogeo, 2001.
- Moka(the)Book, http://www.mokabyte.it/mokabook/
- B. Eckel, “Thinking in Java“, 3rd Edition, http://www.mindview.net/Books/TIJ/ (in inglese).
|