Sistemi Operativi:
Laboratorio (Indirizzo Sistemi e Reti)
Anno di Corso: Secondo
Anno Accademico 2004/2005
Docente: Daniele Gunetti
ATTENZIONE: il termine per la presentazione dell'esercitazione
finale per l'anno accademico 2004-2005
è il 30 giugno 2006.
ATTENZIONE: dall'anno accademico 2005-2006,
il corso di laboratorio sarà tenuto dalla prof.ssa Cristina Baroglio.
Queste pagine vengono matenute attive per gli studenti degli anni
precedenti che devono ancora sostenere l'esame.
Indice:
Contenuto del corso:
Introduzione all'uso del sistema operativo Unix:
Implementazione del Kernel Unix:
Posix thread:
Testi di riferimento (tra parentesi la collocazione in biblioteca):
- M.J. Bach: "The Design of the UNIX Operating System", Prentice-Hall International
Editions (L3167 escluso dal prestito), per la parte relativa all'implementazione del kernel Unix.
- B. Kernigham, R. Pike: "UNIX", Zanichelli, 1985 (L2160)
- S.R. Bourne: "The Unix System" (L1856 escluso dal prestito, L1803, L2140)
- R. Stevens: "Advanced Programming in the UNIX Environment", Addison-Wesley, 1992
- R. Stevens: "Unix Networking Programming", Englewood Cliffs, 1990
- J.M. Rifflet: "La programmation sous UNIX", Ediscience international, 1993
(L3856 escluso dal prestito)
- K. Christian: "The Unix Operating System", John Wiley & Sons (L3147 escluso dal prestito)
- Brown: "UNIX: Distributed Programming", (capitolo 2: Unix Interprocess Communication),
Prentice-Hall, 1994 (cartellina Corso Lab. S.O.)
- B. Kernighan, R. Pike: "The UNIX programming environment", Prentice-Hall, 1984 (OP513 - OP517)
- Manuale di Unix in linea (comando man)
Gli studenti sono comunque invitati a fare riferimento a lucidi usati a lezione,
messi a disposizione su questa pagina in formato pdf (2 e 3 lucidi per pagina).
L'intero corso di laboratorio puo' essere preparato anche semplicemente usando i
lucidi e seguendo le lezioni.
Esempi di programmi per l'uso delle principali system call Unix
Questi sorgenti possono essere direttamente scaricati, compilati ed eseguiti. Sono stati testati su
macchine Solaris, ma dovrebbero funzionare correttamente anche su macchine con sistema Linux.
Esercitazioni finali degli anni scorsi:
Un emulatore di ambiente Linux per Windows
Cygwin è un emulatore di ambiente Linux per Windows, che permette di sperimentare le principali
caratteristiche dell'ambiente di lavoro del sistema operativo Linux. In particolare, cygwin mette
a disposizione vari interpreti dei comandi (bash, sh, csh) un compilatore C e la possibilità di
usare all'interno di un programma C le principali system call Unix/Linux (attenzione, attualmente
cygwin NON supporta le system call dell'Inter-Process Communication System).
- Cliccate qui per scaricare il file zippato necessario ad installare cygwin su un
sistema windows. Una volta estratti i file, lanciate setup.exe per installare l'emulatore.
- Alternativamente, in biblioteca
è disponibile un CD contenente una copia dei file necessari per l'installazione dell'emulatore.
- Il sito ufficiale di cigwin
per installare cygwin, una volta lanciato setup.exe, nelle varie schermate che si susseguono:
- Choose Installation Type: selezionate "Install from local directory";
- Select install root directory: lasciate le impostazioni predefinite (C:/cygwin);
- Local Package Directory: specificate la stessa directory in cui avete
un-zippato il file cygwin.zip (ad esempio C:\tmp\cygwin);
- Select Packages to install: Cliccate sul bottone "View" (in alto a destra) fino
a che compare a fianco la scritta "Full". Nella finestra centrale, la colonnna "Current" dovrebbe
risultare vuota, mentre sotto la colonna "New" dovrebbe comparire, per ogni riga, la scritta "skip"
o un numero (che indica la versione di software che verrà installata). Per una installazione,
completa dell'emulatore, cliccate con il mouse su ogni scritta "skip" cosicché al suo posto
compaia un numero. In questo modo il software corrispondente verrà installato. Quando non ci sono
più "skip" nella colonna "New" cliccate sul bottone "Next" per procedere con l'installazione.
Se volete fare una installazione mirata, potete anche selezionare i singoli pacchetti da installare,
cliccando sulle varie voci che compaiono sotto la colonna "New".
- Quando l'installazione è terminata, controllate nella directory /cygwin/bin che siano presenti
gli eseguibili di semplici comandi come ls.exe, mkdir.exe, cp.exe, e così via. (Attenzione:
il comando
more è stato sostituito in cygnus da "less". Se volete avere il more, basta copiare less.exe in
un nuovo file "more.exe"). Aprite il terminale cygwin (la cui icona dovrebbe essere stata messa
sul desktop) e verificate che si possa lanciare il compilatore C "gcc".
Per compilare un semplice programma c scritto in un file prog.c potete lanciare uno dei seguenti comandi:
- gcc prog.c (verrà generato un eseguibile di nome "a.out")
- gcc prog.c -o filename (verrà generato un eseguibile di nome "filename". E' buona regola
usare, come "filename" il nome del file che contiene il programma C senza l'estensione ".c".
Ossia: gcc prog.c -o prog)
Trovate informazioni più dettagliate sull'installazione e sull'ambiente cygwin sul
sito ufficiale di cigwin
Informazioni sulle modalità d'esame:
- L'esame del corso di laboratorio si può sostenere solo dopo aver passato l'esame
scritto del corso di
Sistemi Operativi.
- Per sostenere l'esame di Laboratorio di Sistemi Operativi lo studente deve
aver prima consegnato l'esercitazione finale di laboratorio richiesta per l'anno accademico
in corso. (Vedere più sotto per le modalità di consegna dell'esercitazione finale)
- L'esame di laboratorio è orale, si sostiene indivualmente
e può essere dato in qualsiasi periodo dell'anno su appuntamento.
- L'esame di laboratorio consiste nella discussione dell'esercitazione finale
presentata in precedenza, in modo da verificare l'effettiva partecipazione dello
studente allo sviluppo dei programmi e la sua conoscenza delle soluzioni adottate
e degli strumenti software usati (in particolare le system call Unix, e le funzioni C
usate nei vari programmi).
Lo studente deve dimostrare di avere anche una conoscenza di base
della shell unix.
- Il risultato dell'esame di laboratorio permette di incrementare/decrementare
di al massimo 3 punti il voto preso allo scritto del corso di Sistemi Operativi
(a meno che non si sia scelto di sostenere anche l'orale vero e proprio, nel qual
caso l'incremento (o in casi molto sfortunati il decremento) può essere maggiore.
Si vedano a tale proposito le modalità d'esame descritte sulla pagina del corso di Sistemi
Operativi.
Per sostenere l'esame di Laboratorio di Sistemi Operativi gli studenti devono
aver consegnato l'esercitazione finale proposta per l'anno accademico
in corso. per consegnare l'esercitazione:
- Prendete un appuntamento con me per far vedere girare i programmi che sono
stati sviluppati per l'esercitazione finale. Tenete pronte un numero di copie
stampate
dei programmi che avete sviluppato per l'esercitazione finale pari al numero di
componenti del gruppo + 1 (poiché io terrò per me una copia cartacea dei programmi).
- Se i programmi funzionano correttamente, gli studenti possono sostenere l'esame orale, fissando
un nuovo appuntamento.
Chi lo desidera puo' anche sostenere l'orale immediatamente dopo la consegna dell'esercitazione,
ovviamente se questa funziona correttamente, e purché abbia già passato lo scritto del corso.
Quando venite all'orale, ricordatevi di portare con voi la copia firmata dell'esercitazione finale.
Alcune osservazioni:
Tutte le esercitazioni possono essere svolte nel laboratorio Unix del Dipartimento (sulle cui
macchine gira la versione Solaris di Unix). Tuttavia,
chi ha a disposizione una macchina con un qualsiasi sistema Linux puo' usarla per le esercitazioni.
Anche l'esercitazione finale puo' essere sviluppata in ambiente Linux. In questo caso, per far vedere
girare i programmi ci sono due possibilita':
- Usare un notebook con sistema Linux, se disponibile, che potete usare per far vedere
girare i programmi (soluzione consigliata)
- Traferire i programmi su una delle macchine Unix del Dipartimento e ricompilarli.
In questo caso, occorre tenere conto che piccole differenze tra Linux e Solaris
possono riscontrarsi nell'uso delle system call e dei comandi di sistema.
E' quindi necessario verificare accuratamente che
i programmi continuino a funzionare correttamente anche dopo il passaggio
sulle macchine Solaris.
Miscellanea:
|