• Non ci sono risultati.

Prova Pratica di Laboratorio di Sistemi Operativi 17 giugno 2014

N/A
N/A
Protected

Academic year: 2021

Condividi "Prova Pratica di Laboratorio di Sistemi Operativi 17 giugno 2014"

Copied!
1
0
0

Testo completo

(1)

Prova Pratica di Laboratorio di Sistemi Operativi 17 giugno 2014

Esercizio 0 (“Se copiate, vi cacciamo”)

Rendete la vostra directory home inaccessibile ad altri utenti (sia in lettura che in esecuzione). Rimuovete tutti i file che vi appartengono dalla directory /public.

Esercizio 1: Linguaggio C (obbligatorio): (20 punti) Occorre scrivere due programmi: mytar myuntar.

Mytar prende come parametro il nome di una directory e il nome di un file:

mytar ddd ddd.mytar

mytar crea il file indicato come secondo parametro e registra in esso tutti i file regolari presenti nella directory (ddd nell'esempio). Ogni file e' registrato nel secondo il seguente formato:

nome del file (stringa ASCII terminata da un byte 0)

lunghezza del file (stringa ASCII terminata da 0, la lunghezza e' registrata come stringa in rappresentazione in base 10 per non avere problemi di endianess e di ampiezza dei campi)

contenuto del file (un numero di byte corrispondente alla lunghezza indicata sopra).

Myuntar fa l'operazione inversa:

myuntar ddd.mytar newddd

crea la directory indicata come secondo parametro e, in essa, tutti i file registrati in ddd.mytar.

Per provare i due programmi, al termine dell'esecuzione di due comandi simili a quelli degli esempi mostrati qui sopra per mytar e myuntar, tutti i file regolari presenti in ddd devono esistere in newddd e devono avere tutti lo stesso contenuto.

Se create una directory ddd contenente solo file regolare l'output di “diff -R ddd newddd” deve essere vuoto.

Esercizio 2: completamento (10 punti)

Completate l'esercizio 1 inserendo nella codifica dei file la gestione dei permessi di accesso e la scansione ricorsiva delle directory. Si lascia al candidato ogni decisione in merito alla codifica e ai parametri dei programmi.

Esercizio 3: Script bash o Python: (10 punti):

Il comando che dovrete implementare come script shell o programma python e' maxfreq.

Maxfreq ha come parametro un carattere alfanumerico e una directory.

Es:

maxfreq q mydir

Cerca in tutto il sottoalbero del file system originato da mydir il file che ha la maggior frequenza della lettera indicata (in questo caso la maggior frequenza di 'q'). Fornisce in output il nome del file e la frequenza in percentuale.

Esercizio 4: (“Consegnate! E’ ora!”):

Consegnare lo script e il sorgente del programma C, in attachment separati, entro il tempo a disposizione, via e-mail a: renzo chiocciola cs.unibo.it. Il subject del mail deve essere uguale a PROVAPRATICA, i nomi dei file in attachment devono contenere il vostro cognome (per evitare confusioni in fase di correzione).

INOLTRE:

Se volete che il vostro lavoro venga giudicato, lasciate aperta la vostra sessione (incluso il vostro editor) e lasciate il laboratorio. Verrete richiamati uno alla volta per una breve discussione sul vostro elaborato.

Riferimenti

Documenti correlati

se esiste miofile.9 deve essere rinominato in miofile.10 se esiste miofile 8 deve essere rinominato in miofile 9 e cosi' via fino a miofile.2, rinominato miofile 3. ora se miofile.1

Scrivere un programma che per ogni file .c nella directory corrente chiami il compilatore gcc per generare il file oggetto (.o) a meno che esista gia' nella directory un file

deve creare il file 'file1' recuperando il contenuto dal file generato da myt2 dell'esercizio1 Esercizio 3: Script bash o Python: (10 punti):. Il comando che dovrete implementare

Quindi il programma “dovrebbe” stampare una riga di log per ogni file o directory creata o cancellata in tutto il sottoalbero che ha nella directory-base la radice.. Nota:

Il risultato del programma, stampato su standard output, deve essere un solo numero intero: la somma del numero di caratteri presenti nelle n-me colonne di tutti i file regolari,

Il risultato del programma, stampato su standard output, deve essere un solo numero intero: la somma del numero di caratteri presenti nelle n-me righe di tutti i file regolari,

Scrivere un programma che stampi il numero di inode di ogni file presente in una direcotory passata come argomento (o della direcotry corrente se il programma viene chiamato

lancian deve essere completato in modo che lo standard output di tutti le copie venga unificato ed emesso come standard output del programma lancian, in modo ordinato: l'intero