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 10/12/2008
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 C e Posix in ambiente Linux che, impiegando la libreria Pthread, generi tre
thread. I primi due thread sommano 1000 numeri generati casualmente ed ogni volta incrementano un
contatore. Il terzo thread attende che il contatore incrementato dai due thread raggiunga un valore limite
fornito da riga di comando, notifica l’avvenuta condizione e termina. Utilizzare le variabili condizione.

1. 9 punti (SOLO PER CFU 10)


Scrivere un programma C e Posix in ambiente Linux che generi due processi figli. Il padre ed i due figli si
sincronizzano in modo da scrivere in maniera alternata, nella prima posizione di un file temporaneo
creato opportunamente, i caratteri che di volta in volta leggono da tre file (uno per ogni processo) forniti
da riga di comando. Utilizzare i segnali per la sincronizzazione.

2. 6 punti (PER CFU 12 e 10)


Scrivere un programma C in ambiente Linux conforme allo standard Posix che accetta due directory, dir1
e dir2, da riga di comando cerca in dir1 il primo link simbolico che punta ad un file .txt, ne prende il
nome e ne crea una copia invertita all’interno della dir2 in un file con stesso nome ed estensione del file
individuato precedentemente. Alla copia bisogna assegnare i diritti di scrittura, lettura ed esecuzione per
il proprietario e sola lettura per il gruppo e per gli altri.

3. 6 punti (PER CFU 12 e 10)


Si consideri un utente X con uno stipendio S=1000 euro , che voglia acquistare un bene ad un prezzo Px.
Realizzare uno script che, immesso dall’utente il prezzo Px mediante il meccanismo dello scambio dei
parametri, lo confronti con lo stipendio S dell’utente in modo da definire se l’operazione di acquisto sia
fattibile o meno e, nel caso di risposta affermativa, consideri una soglia pari a 500 euro utile a definire
se il prodotto sia considerato COSTOSO o ECONOMICO. A seconda dell’esito, si scriva il responso (la
parola COSTOSO o ECONOMICO) in un file denominato “testo.txt” e se ne stampi a video il risultato,
mostrando a video anche il numero di byte di cui è costituito il file sopra citato.

4. 9 punti (PER CFU 12 e 10)


Si scriva un programma C e Posix in ambiente Linux che abbia un’interfaccia del tipo: esame Nfigli
Nlivello FileRisultati dove Nfigli e Nlivello sono due numeri interi, e FileRisultati è una stringa che
rappresenta il nome di un file. Il programma provvede a generare un numero Nfigli di processi figlio.
Ogni processo figlio scrive il proprio pid all'interno del file FileRisultati e inoltre genera a sua volta un
altro processo che si comporterà come ognuno dei processi figlio. Il numero intero Nlivello rappresenta
il livello di profondità della gerarchia di processi da creare. Ad esempio, nel caso in cui Nlivello sia 2, il
processo iniziale genererà il numero di figli (livello 1) richiesto e ognuno dei figli, dopo aver scritto il
proprio pid nel file, metterà in esecuzione un processo nipote (livello 2) che si limiterà alla scrittura del
proprio pid sul file, senza generare altri processi. Al termine, il processo iniziale deve visualizzare sulla
console il contenuto del file.

Potrebbero piacerti anche