Sei sulla pagina 1di 1

Università degli studi di Napoli “Parthenope” - Corso di Laurea in Informatica

Laboratorio di Sistemi Operativi


Docente: A. Staiano
Prova scritta 02/07/2007
Matricola 1 2 3 4 tot
/9 /6 /6 /9 /30

Il candidato risolva gli esercizi proposti nel tempo massimo di 3 ore. Non è consentito avvalersi di libri,
appunti o altro sussidio. I risultati degli esercizi vanno messi in una cartella, compressa ed inviata
all’indirizzo (antonino.staiano@uniparthenope.it) specificando nell’oggetto la stringa “LABSO” seguito da
Nome, Cognome, Matricola e Data dell’Esame.

1. 9 punti (SOLO PER CFU 12)

Si realizzi un programma in C e Posix sotto Linux che, utilizzando la libreria Pthread, lancia n thread per
cercare un elemento in una matrice nxn di caratteri. Ognuno dei thread cerca l'elemento in una delle
righe della matrice. Non appena un thread ha trovato l'elemento cercato, rende note agli altri thread le
coordinate dell'elemento e tutti i thread terminano.

1. 9 punti (SOLO PER CFU 10)

Scrivere un programma in C e Posix sotto Linux che stampa in output il nome del link simbolico presente
nella directory corrente che si riferisce al file regolare di taglia più grande.
NOTA: Si assume che i link simbolici non puntino ad altri link simbolici.

2. 6 punti (PER CFU 12 e 10)

Scrivere un programma in C e Posix sotto Linux che resta sempre in attesa di un segnale:
- se riceve SIGINT stampa a video il fattoriale di un numero, compreso tra 1 e 20, passato come
argomento da linea di commando;
- se riceve SIGUSR1 legge il contenuto del file prova.txt e lo conserva nell’heap (memoria allocate
dinamicamente);
- se riceve SIGUSR2 crea un file prova1.txt con diritti di lettura e scrittura per tutti tranne per gli “altri” e
vi scrive, a ritroso, il contenuto dell’heap.

3. 6 punti (PER CFU 12 e 10)


Realizzare uno script del tipo script2-7-07 file1 file2 che, forniti i due file file1 e file2 in
ingresso da utente, si preveda una comparazione del numero dei byte, in modo che se il file1 abbia una
dimensione in byte maggiore del file 2, venga presentato all’utente un menu con le seguenti opzioni:
- Contare le righe dei due rispettivi file, ed eliminare le righe in eccesso, in modo tale che i due file
risultino con lo stesso numero di righe;
- Eliminare le righe 1 e 4 del file1;
- Ricercare le occorrenze della parola “domani “ in modo da poterle eliminare.
Nel caso la dimensione in byte del file1 risulta inferiore a quella del file2 viene stampato un
messaggio a video che informa l’utente di quanto accaduto.
E’ richiesto un controllo preventivo dei parametri passati ed un semplice HELP in caso di errore di utilizzo
dello script da parte dell’utente.

4. 9 punti (PER CFU 12 e 10)

Scrivere un programma in C e Posix sotto Linux che gestisca la seguente situazione:


Un processo P1 crea una pipe ed un figlio F1. Un secondo processo P2 comunicherà con P1 tramite un file
TEMP. P2 ogni secondo genera un numero casuale da 1 a 100 e lo scrive in TEMP seguito dal proprio pid.
P1 dopo 20 secondi dalla creazione del figlio scrive nella pipe il pid di P2, seguito dal numero -1, poi
stampa un messaggio sullo schermo e termina la sua esecuzione. Durante questi 20 secondi P1 leggerà i
numeri dal file TEMP e scriverà sulla pipe il suo pid con il numero che ha letto.
F1 leggerà dalla pipe i pid seguiti dal numero. Se il numero è -1 ucciderà P2 e poi terminerà; altrimenti
stamperà al terminale il proprio pid seguito dal numero che ha letto.

Potrebbero piacerti anche