• Non ci sono risultati.

Prova Pratica di Laboratorio di Sistemi Operativi 15 febbraio 2013

N/A
N/A
Protected

Academic year: 2021

Condividi "Prova Pratica di Laboratorio di Sistemi Operativi 15 febbraio 2013"

Copied!
1
0
0

Testo completo

(1)

Prova Pratica di Laboratorio di Sistemi Operativi 15 febbraio 2013

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)

Scrivere un programma C di nome lanciaxp che esegua in modo concorrente tutti i file eseguibili con come palindromo nella directory corrente.

Se la directory corrente contiene i file:

$ ls -l total 28

-rwxr-xr-x 1 renzo renzo 21 Feb 10 11:10 anna -rwxr-xr-x 1 renzo renzo 4851 Feb 10 11:12 bib -rw-r--r-- 1 renzo renzo 82 Feb 10 11:12 bib.c -rwxr-xr-x 1 renzo renzo 21 Feb 10 11:10 emma -rw-r--r-- 1 renzo renzo 5 Feb 10 11:13 erre -rwxr-xr-x 1 renzo renzo 21 Feb 10 11:10 laura

lanciaxp deve eseguire file anna, emma e bib. Al contrario non devono essere esguiti laura (il nome non e' palindromo), bib.c e erre(perche' non sono eseguibili). Lanciaxp termina quando tutti i processi attivati sono terminati.

Esercizio 2: completamento (10 punti)

La scelta di quali file eseguire deve essere selezionabile con parametri:

-p: palindromo

-b: script (i primi due caratteri del file contengono la stringa “!#”).

-c: in modo concorrente. Se -c non e' specificato viene lanciato un programma alla volta e si attende la terminazione prima di attivare il successivo

Quindi:

lanciax -p -c

ha lo stesso effetto del programma dell'esercizio 1 lanciax

lancia tutti gli eseguibili uno dopo l'altro lanciax -b -p

esegue tutti gli script che hanno il nome palindromo (non il bib dell'esempio sopra), uno alla volta.

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

Scrivere un programma python o uno script bash listexe che fornisca in output l'elenco dei processi attivi nel sistema mettendo in output per ogni processo il pid e il path dell'eseguibile.

L'informazione deve essere trovata scandendo la directory proc, infatti ad ogni processo attivo corrisponde una directory in /proc che ha come nome il numero del processo (ad esempio al processo 9801 corrisponde la directory /proc/9801) e all'interno di queste directory il file exe e' un link simbolico all'eseguibile.

Esempio:

$ ls -l /proc/9801/exe

lrwxrwxrwx 1 renzo renzo 0 Jan 22 18:26 /proc/9801/exe -> /bin/bash l'output del programma listexe dovrebbe essere:

$ listexe

…..

9801 /bin/bash 9933 /usr/bin/vim

…..

(alcuni link simbolici possono essere non leggibili per sicurezza, verranno omessi).

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

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,

l'ouput significa che se contiamo tutti i caratteri contenuti nella prima riga di tutti i file in mydir otteniamo 234 (mydir/file1 puo' avere 40 caratteri nella prima riga,

se dir1 contiene i file pippo, pluto e paperino e la directory paperopoli e quest'ultima contiene i file paperino, qui quo e qua, all'interno di dir2 divranno essere contenuti

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

In particolare il programma deve eseguire una fork, quando l'utente digita un numero letto dal processo padre, il processo figlio deve stampare un numero uguale di x.. (negli esempi

L'informazione puo' essere trovata scandendo la directory proc, infatti ad ogni processo attivo corrisponde una directory in /proc che ha come nome il numero del processo (ad