Sistemi Operativi I a.a. 2007/08
Docenti
Giorgio Delzanno |
Web page:
http://www.disi.unige.it/person/DelzannoG/SO1
(pagine con link vari a.a.)
http://www.disi.unige.it/person/DelzannoG/SO1/aa0607.html
(pagine del precendente a.a.)
Indice
Trasparenze
viste a lezione (PDF),
Esame:
Risultati e calendario discussioni laboratorio
Registrazione agli appelli (sito DIDATTICA del
DISI)
Orario e ricevimento
Orario lezioni
Lunedi 11-13 (aula
506)
Mercoledì 11-13 (aula
506)
Venerdi 11-13 (aula
506)
Ricevimento:
Martedì 11-13 (ufficio
104)
Il programma prevede i seguenti argomenti (vedi programma dettagliato per il materiale on-line)
Introduzione (cenni storici
+ terminologia)
Struttura dei Sistemi di
Calcolo (trap, interrupt)
Struttura dei Sistemi
Operativi
Processi e Thread
Scheduling della CPU
Cooperazione tra Processi
(race conditions, semafori, monitor, algoritmi classici)
Gestione della Memoria
Memoria Virtuale
Modello della memoria in
Unix e Windows
Il File System
Implementazione del File
System
File System in Unix e DOS |
Laboratorio: uso, configurazione, programmazione di sistema
Teoria SO
[SGG]
Sistemi Operativi: Concetti ed Esempi - 6a ed. -
Slberschatz-Galvin-Gagne
Addison-Wesley
Cap: 1, 2, 4 (Sez. 1-5), 5,
6, 7, 9, 10, 11, 12, 20, 21, 22
[Tan]
I Moderni Sistemi Operativi
Andrew S. Tannenbaum
Jackson-Libri Universita'
Cap: 1, 2, 3, 4, 6, 10, 11,
13
UNIX
e LINUX
[Bach]
Unix: Architettura di un sistema
Maurice J. Bach - Jackson : Cap:1,
2, 4, 6, 8 (Sez. 1), 9 (sez. 1-2)
Marc J. Rochkind. Advanced UNIX
Programming 2nd Edition,
Addison-Wesley Professional Computing Series,
2004.
Vedi anche il sito web del libro con sorgenti, esercizi e altre informazioni.
G.
Glass, K. Ables. UNIX for Programmers and Users, Prentice
Hall, 1999.
F. G. Fiamingo, L. DeBula, L. Condron Introduction to Unix (PDF)
Un’ottima introduzione a comandi e programmazione shell
GaPiL: Guida alla Programmazione in Linux (PDF)
Advanced Bash Scripting Guide (PDF)
Programmazione in C
Kernighan & Pike Programmazione nella pratica Addison-Wesley, 1999. ISBN 8871920724.
Un ottimo libro per migliorare lo stile di programmazione: insieme di
consigli su come organizzare i programmi in modo ragionevole con esempi C e
Java.
(su C) Kelley, Pohl. C:
Didattica e Programmazione (seconda edizione),
Addison-Wesley, 2004.
Calendario delle lezioni e programma lezione x
lezione
Lunedi 24/9 11-13:
Introduzione al corso
Mercoledì 26/9 11-13
Storia, tipologia dei S.O, Struttura dei sistemi di calcolo Lucidi
Venerdi 28/9 11-13:
lezione cancellata (missione Bruxelles)
Lunedì 1/10: Struttura
dei sistemi di calcolo/SO Lucidi;
Mercoledi 3/10: Processi
Lucidi
Venerdi 5/10 e Lunedì
8/10: Processi Lucidi
e thread Lucidi
Lunedì 8/10, Mercoledì
10/10 e Venerdi 12/10: Cooperazione tra processi Lucidi
Lunedì 15/10: Unix:
comandi e shell Lucidi,
shell scripting Lucidi
Mercoledi 17/10:
Laboratorio su uso Linux e scripting: Lucidi
e manuali
e guide ; Testo
esercitazione
Venerdi 19/10: Semafori e
monitor Lucidi
Lunedì 22/10: Ancora shell
scripting Lucidi
Mercoledi 24/10:
Laboratorio su uso Linux e scripting: Testo
esercitazione
Venerdi 26/10: Semafori
monitor, messaggi ed esempi Lucidi
Lunedì 29/10: Shell: Manipolazione stringhe e
testo Lucidi Esercizi su concorrenza Foglio
esercizi
Mercoledi 31/10:
Laboratorio su uso Linux e scripting:
Testo
esercitazione
Lunedì 5/11: Scheduling Lucidi
Mercoledi 7/11:
Laboratorio su prog. di sistema Testo
esercitazione
Venerdi 9/11: lezione
rimandata al 13/11
Lunedì 12/11: Prog. di sistema: intro/files Lucidi
Martedi 13/11 – 14-16: Prog. di sistema:
fork/wait/exec Lucidi
Mercoledi 14/11 – 11-13: Esercitazione lab Testo
Venerdi 16/11 11-12 e Lunedi 19/11– 12:
Deadlock Lucidi
Lunedi 19/11 12– 13:
Prog. di sistema: pipe senza/con nome Lucidi
Mercoledi 21/11 11-13:
Esercitazione Testo
Venerdi 23/11 11–13:
Prog. di sistema: pthread Lucidi
Lunedi 26/11 11– 13:
Gestione della memoria Lucidi
Mercoledi 28/11 11– 13:
Gestione della memoria virtuale
Lucidi
Venerdi 30/11 10– 13:
Esercizi in classe
Lunedi 3/12 11– 13:
Gestione della memoria virtuale
Lucidi
Mercoledi 5/12 11– 13:
Esercitazione in lab Testo
Venerdi
7/12 11– 13: Gestione memoria virtuale Lucidi
esempi Unix e Windows Lucidi
Lunedì
10/12 e venerdi 14/12 11– 13: Gestione file system Lucidi
Lunedì
17/12 11– 13: Prog.
Sistema: segnali e mmap Lucidi
Nuovo materiale:
Dispense
di programmazione di sistema (PDF)
Unix
e Prog. sistema (HTML)
Storia,
tipologia dei S.O, Struttura dei sistemi di calcolo/SO PDF
Processi PDF
Thread PDF
Cooperazione tra processi PDF
Unix: comandi e shell PDF e shell scripting PPT
(versione estesa)
Semafori e monitor PDF
Messaggi ed esempi
classici (5 filosofi, lettori-scrittori) PDF
Shell: manipolazione stringhe PS e testo PS
Scheduling PDF
Programmazione di sistema: intro/op. su file PPT
Programmazione di sistema: op. su processi PPT
Gestione risorse e deadlock (stallo) : PDF
Programmazione di sistema: pipe PPT
Programmazione di sistema: thread HTML
Gestione della memoria PDF
Gestione della memoria virtuale PDF ed
esempi: Unix e Windows PDF
Gestione del file system PDF
ed esempi PDF
Programmazione di sistema: segnali PPT
Ulteriore materiale x laboratorio
Uso della bash da Windows cygwin
Appunti su Unix e Linux (x window, make, shell scripting) Prof. Gianuzzi
Introduction to Unix (PDF) (~130 pagine)
Manuali
in linea di comandi e funzioni di libreria e system call: man
nomefunzione/comando; man -k
argomento
Manuale
in linea della Bash HTML
Guida
in linea dei comandi shell in
Linux HTML
Guida
avanzata allo scripting Bash PDF
(~700 pagine)
Quick
reference: Comandi Unix PDF (1xfoglio); Bash PDF; Syscall Linux PDF; Linux admin PDF
Programmazione di Sistema
Guida alla programmazione di sistema (S.
Piccardo) PDF
Dispense
di programmazione di sistema
(Gervasi-Pelagatti-Ruggeri-Scozzari-Sperduti) (PDF)
Approfondimento su Windows 2000/XP
Lucidi Prof. Montresor-Prof.
Davoli (Bologna) fino a pag. 67 (fault tolerance esclusa):
PDF 2 lucidi per pagina
PDF
4 lucidi x pagina
Capitoli on-line
Sistemi operativi storici
Il sistema operativo Linux
Il sistema operativo Windows XP
Il sistema operativo Windows 2000
Appunti in linea (Prof.ssa
Gianuzzi e Prof.ssa Dodero)
Semafori,
Monitor e Problemi classici di programmazione concorrente
Gestione della
memoria principale
Appunti in linea (Dr. Bencetti)
Note su Linux, Hard
disk, Master Boot Record, Conf. Servizi
Esercizi su processi (Foglio1 con soluzioni)
Esercizi su memoria principale
Scritto sulla parte di
teoria con 3 domande di teoria e 3 esercizi (vedi testi anni precedenti e
sezione seguente) (da 0 a 26/27 punti)
NOTA: la teoria comprende anche la parte sui diversi esempi di
sistema operativo (ad es. process in Unix, file system NT, ecc)
ma NON comprende la parte su comandi
Unix, scripting e programmazione di sistema svolta in laboratorio
Discussione
degli esercizi di laboratorio (su scripting, comandi Unix e prog. di sistema)
svolti e consegnati durante l’anno (da 0 a 6 punti)
Chi non
ha consegnato gli esercizi durante
l’anno dovra’ svolgere degli esercizi sugli stessi temi durante la discussione
Materiale per esame:
Indicazioni
su capitoli e sezioni libri testo:
Vedi
Testi di riferimento
Materiale e riferimenti
lezione per lezione:
Vedi
Calendario delle lezioni
e Materiale in linea
Esempi e testo
Esempio di
esame con soluzioni
Esempio
di domande sulla II parte del corso
Testi e
soluzioni del primo compitino (febbraio 2004)
Testo e
soluzioni del secondo compitino (gennaio 2004)
Soluzioni del compitino 11
novembre 2004
Testo
A (prod.cons con monitor)
Esame: Risultati e calendario
discussione laboratorio
Appello Gennaio 2008 Testo
con soluzioni e voti
Appello Febbraio 2008 Testo
con soluzioni e voti
Appello Febbraio 2008 bis voti
Laboratorio: Calendario
discussioni: Contattare il docente per prendere appuntamento
Appello Giugno
2008 voti
Appello Luglio 2008
voti
Appello Settembre
2008 voti
Sviluppo commerciale
http://researchweb.watson.ibm.com/compsci/os/index.html
http://www.sgi.com/developers/technology/
http://www.hp.com/products1/unix/operating/
http://www.tru64unix.compaq.com/
http://research.microsoft.com/research/topics/
Sviluppo non commerciale
Sistemi
Operativi in the news
Microsoft studia Linux:
"Restiamo noi i migliori" di Riccardo Staglianò (La
Repubblica, 03.10.2002)
IBM's "Blue Gene" to run on Linux di
Michael Kanellos ( ZD Net News, 25.10.2002)
Riviste
Linux_Journal Una rivista mensile
interamente dedicata al sistema operativo Linux. Una parte degli articoli
presenti nella versione cartacea sono disponibili anche in linea.
Linux Magazine Un'altra rivista mensile
interamente dedicata al sistema operativo Linux. Una parte degli articoli
presenti nella versione cartacea sono disponibili anche in linea. Interessante
la sezione Gearheads Only
Libri on-line
M. Mitchell, J. Oldham, e A.
Samuel, Advanced Linux
Programming Un libro in inglese sulla programmazione di sistema in ambiente
Linux.
S. Piccardi, Guida alla Programmazione
in Linux Un libro in italiano sulla programmazione di sistema in ambiente Linux
ancora in fase di sviluppo.
T. Aivazian, Linux 2.4 Internals Un libro
introduttivo in inglese ai kernel 2.4 di Linux.
A. Rubini e J. Corbet, Linux Device Drivers, 2nd
Edition Un libro in inglese su come implementare driver di dispositivo per
kernel 2.4 di Linux.
Pagine web interessanti
Leonardo Giordani, Programmazione
concorrente: Principi e introduzione ai processi. LinuxFocus fornisce articoli di
supporto e documentazione su Linux nei paesi non aglofoni. Il presente articolo
introduce alla multiprogrammazione ed alla sua implementazione nel sistema
operativo Linux. La versione in italiano è disponibile qui.
Andries Brouwer, A small trail through
the Linux kernel Un interessante viaggio nel kernel 2.4 di Linux. Una
traduzione in italiano è disponibile qui.
Daniel Robbins, Introducing Ext3. Il settimo dei dodici
articoli della serie Advanced filesystem implementor's guide.
Russell Quong, Shell scripts in 20 pages. Molte risposte ai dubbi sulla programmazione di shell.
VX Heavens. Un sito in inglese interamente
dedicato ai virus, con tutorial, articoli, eseguibili e sorgenti. Le
informazioni contenute possono aiutare a capire meglio come difendersi.
Farsite. Un progetto della
Microsoft per la realizzazione di un file system distribuito.