Corso di LABORATORIO DI SISTEMI OPERATIVI
Diploma di Informatica
A.A. 2000/2001
BIBLIOGRAFIA:
B.W. Kernighan, D.M. Ritchie, "Linguaggio C", Jackson, 2a edizione,
1989.
G. Glass, K. Ables, "UNIX for Programmers and Users", Prentice
Hall, 2a edizione, 1999.
Altri riferimenti:
P. Cornes, "The Linux A-Z", Prentice Hall, 1997.
K. Haviland, D. Gray, B. Salama, "UNIX System Programming", Addison
Wesley, 2a edizione, 1999.
Progetto I: Il linguaggio C
Si scriva un programma C simple_tail, versione semplificata
del comando UNIX tail, che stampa le ultime 10 linee del
proprio input. Per memorizzare le linee in input, si utilizzi un
array di stringhe con terminatore il NULL-pointer. Il programma deve
poter accettare il parametro opzionale -n sulla linea di
comando, dove n è un intero. Nel caso il parametro
-n sia presente sulla linea di comando, il programma
dovrà stampare le ultime n linee dell'input.
Si commenti opportunamente il codice.
Si provi il
programma su alcuni esempi significativi e si scriva una breve
relazione, discutendo le soluzioni proposte ed i risultati dei test.
Il termine di consegna del progetto è: 8 Gennaio 2001.
I progetti possono essere consegnati direttamente al docente oppure
inviati (come file TEXT) per posta elettronica al seguente indirizzo:
lenisa@dimi.uniud.it.
Sono comunque richieste due copie cartacee, opportunamente rilegate.
Progetto II: La shell Unix
Si risolva il seguente esercizio utilizzando l'interprete di comandi
Unix bash.
Si progetti uno script che accetta come parametri il percorso di una
directory ed il nome di un file contenente un elenco di nomi di
file. Lo scopo dello script è di rimuovere tutti i file aventi il
nome compreso nel file passato come secondo argomento, presenti
nella directory passata come come primo argomento o in una sua sottodirectory.
Si commenti opportunamente il codice.
Si provi il
programma su alcuni esempi significativi e si scriva una breve
relazione, discutendo la soluzione proposta ed i risultati dei test.
Il termine di consegna del progetto è: 12 Marzo 2001.
I progetti possono essere consegnati direttamente al docente oppure
inviati (come file TEXT) per posta elettronica al seguente indirizzo:
lenisa@dimi.uniud.it.
Sono comunque richieste due copie cartacee, opportunamente rilegate.
Progetto III: Programmazione di sistema in Unix
Esercizio 1
Si scriva un programma C che realizza una
versione semplificata del comando UNIX ls. Il programma
dovrà ricevere sulla linea di comando una lista di file ordinari
e directory e dovrà fornire, per ciascun file, la dimensione,
per ciascuna directory, ricorsivamente, la dimensione di ogni file
nell'albero della directory stessa.
Il programma
dovrà utilizzare le system call per la gestione di file e
directory.
Si commenti opportunamente il codice.
Si provi il
programma su alcuni esempi significativi e si scriva una breve
relazione, discutendo la soluzione proposta ed i risultati dei test.
Esercizio 2 (Facoltativo)
Si scriva un programma C che esegue una fork per creare un processo figlio e
mette in
comunicazione processo padre e processo figlio attraverso il meccanismo di IPC
della
memoria condivisa.
Il processo
padre copia nella memoria
condivisa il contenuto di un file (passato come parametro), carattere per
carattere,
mentre il processo figlio stampa su standard output i caratteri contenuti
nella memoria
condivisa.
Si gestisca opportunamente il problema della sincronizzazione dei due
processi.
Il termine di consegna del progetto è: 25 Giugno 2001.
I progetti possono essere consegnati direttamente al docente oppure
inviati (come file TEXT) per posta elettronica al seguente indirizzo:
lenisa@dimi.uniud.it.
Sono comunque richieste due copie cartacee, opportunamente rilegate.
Valutazione del I Progetto:
GRUPPO | DATA DI CONSEGNA | VALUTAZIONE |
| | |
Azzano, D'Andrea, Polon | 08/01/01 | B |
Bagnariol, Bertuzzo | 07/01/01 | A |
Beltrame, Kuk | 12/01/01 | C |
Benedetti, Dorigo | 28/06/01 | B |
Bergamo, Fasolino | 06/01/01 | B++ |
Castenetto, Contarin | 10/01/01 | C |
Cecchini, Zorzini | 08/01/01 | A |
Craighero, De Cicco, Zurini | 03/01/01 | A |
D'Andrea, D'Este, Scortegagna | 15/11/01 | C/B |
Del Cet, Valeri | 28/12/00 | C |
Del Negro | 08/01/01 | A |
Petrucco | 08/01/01 | B |
Screm | 07/01/01 |
A |
Serli, Viola | 03/01/02 |
B |
Zanet | 28/12/00 |
B |
Valutazione del II Progetto:
GRUPPO | DATA DI CONSEGNA | VALUTAZIONE |
| | |
Bagnariol, Bertuzzo | 12/03/01 | A |
Beltrame, Kuk | 12/03/01 | A |
Benedetti, Dorigo | 28/06/01 | B/A |
Castenetto, Contarin | 29/05/01 | B |
Cecchini, Polon, Zorzini | 12/03/01 | A |
D'Andrea, D'Este, Scortegagna | 15/11/01 | C/B |
Del Cet, Valeri | 16/03/01 | A |
Craighero, De Cicco, Zurini | 03/04/01 | A - - |
Del Negro | 18/03/01 | A |
Petrucco, Zanet | 02/04/01 | A - - |
Serli, Viola | 03/01/02 |
B <
|
Valutazione del III Progetto:
GRUPPO | DATA DI CONSEGNA | VALUTAZIONE |
| | |
Bagnariol, Bertuzzo | 15/06/01 | A |
Beltrame, Kuk | 13/06/01 | A |
Benedetti, Dorigo | 28/06/01 | A |
Castenetto, Contarin | 25/06/01 | B |
Cecchini, Polon, Zorzini | 27/06/01 | A |
Craighero, De Cicco, Zurini | 12/06/01 | A |
D'Andrea, D'Este, Scortegagna | 15/11/01 | C/B |
Del Cet, Valeri | 23/11/01 | B |
Del Negro | 18/07/01 | B/A |
Petrucco, Zanet | 25/06/01 | A |
Serli, Viola | 03/01/02 |
B |