• Non ci sono risultati.

SISTEMI OPERATIVI e LABORATORIO DI SISTEMI OPERATIVI (A.A. 14-15) – 9 SETTEMBRE 2015

N/A
N/A
Protected

Academic year: 2021

Condividi "SISTEMI OPERATIVI e LABORATORIO DI SISTEMI OPERATIVI (A.A. 14-15) – 9 SETTEMBRE 2015"

Copied!
2
0
0

Testo completo

(1)

SISTEMI OPERATIVI e

LABORATORIO DI SISTEMI OPERATIVI (A.A. 14-15) – 9 SETTEMBRE 2015

IMPORTANTE:

LEGGERE LE INFORMAZIONI SUL RETRO DEL FOGLIO!!!

Esercizio

Si realizzi un programma concorrente per UNIX che deve avere una parte in Bourne Shell e una parte in C.

La parte in Shell deve prevedere 2 parametri: il primo deve essere il nome assoluto di un direttorio che identifica una gerarchia (G) all’interno del file system, mentre il secondo deve essere il nome assoluto di un file leggibile (AF), che si può supporre (senza controllarlo) non appartenente alla gerarchia G. Il programma deve per prima cosa calcolare la lunghezza in byte (D) del file AF e quindi deve cercare nella gerarchia G specificata tutti i direttori che contengono almeno due file leggibili la cui lunghezza in byte sia uguale a D. Si riporti il nome assoluto di tali direttori sullo standard output. In ogni direttorio trovato, si deve invocare la parte in C passando come parametri i nomi dei file che soddisfano la condizione (F1, F2, ... FN) e il nome assoluto del file AF.

La parte in C accetta un numero variabile N+1 di parametri (con N maggiore o uguale a 2) che rappresentano N+1 nomi di file (F1, F2,... FN e AF) con uguale lunghezza in byte (che viene assicurata dalla parte shell e non si deve controllare).

Il processo padre è associato al file AF e deve generare N processi figli (P0 … PN-1) ognuno dei quali è associato ad uno dei file Fi. Ogni processo figlio Pi deve leggere i caratteri del file associato Fi sempre fino alla fine solo dopo aver ricevuto l’indicazione dal padre di procedere.

Infatti, i processi figli devono attenersi a questo schema di comunicazione/sincronizzazione con il padre: il figlio P0, ricevuta l’indicazione dal padre che può procedere, legge il primo carattere e lo comunica al padre che lo confronta con il primo carattere del file AF; il figlio P1, ricevuta l’indicazione dal padre che può procedere, legge il primo carattere e lo comunica al padre che lo confronta con il primo carattere del file AF etc. fino al figlio PN-1, ricevuta l’indicazione dal padre che può procedere, legge il primo carattere e lo comunica al padre che lo confronta con il primo carattere del file AF; questo schema deve continuare per gli altri caratteri solo se il confronto ha successo (cioè i due caratteri sono uguali); se un confronto non ha successo, il padre non deve inviare al corrispondente figlio l’indicazione di procedere. Una volta che il padre termina la lettura del file associato AF, deve terminare forzatamente (con un apposito segnale) i figli per i quali il confronto non abbia avuto successo.

Al termine, i processi figli Pi che non sono stati terminati forzatamente devono ritornare al padre l’indicazione di successo secondo la semantica di UNIX; il padre deve stampare su standard output il PID di ogni figlio con l’indicazione di terminazione anormale o normale e in questo caso il valore ritornato dal figlio insieme con il nome del file il cui contenuto risulta uguale a quello del file AF.

(2)

IMPORTANTE:

1) Fare il login sui sistemi in modalità Linux usando il proprio username e password, aprire un browser sulla pagina ftp://lica02.lab.unimo.it/README, copiare il comando presente in un terminale ed eseguirlo rispondendo alle domande proposte: sul Desktop, viene creata automaticamente una directory studente_XXX al cui interno viene creato un file denominato student_data.csv che non va eliminato; infine , dopo avere copiato i propri file da chiavetta, passare in modalità testuale-

2) I file prodotti devono essere collocati nella directory studente_XXX dato che tale directory viene zippata e salvata automaticament sul server ad intervalli di tempo regolari. ALLA SCADENZA DEL TEMPO A DISPOSIZIONE VERRÀ ATTIVATA UNA PROCEDURA AUTOMATICA DI ESTRAZIONE, PER OGNI STUDENTE DEL TURNO, DEI FILE CONTENUTI NELLA DIRETTORY SPECIFICATA.

3) Il tempo a disposizione per la prova è di 120 MINUTI per lo svolgimento di tutto il compito e di 90 MINUTI per lo svolgimento della sola parte C.

4) Non è ammesso nessun tipo di scambio di informazioni né verbale né elettronico, pena la invalidazione della verifica.

5) L’assenza di commenti significativi verrà penalizzata, così come la mancanza del makefile!

6) AL TERMINE DELLA PROVA È INDISPENSABILE CONSEGNARE IL TESTO DEL COMPITO (ANCHE IN CASO CHE UNO STUDENTE SI RITIRI): IN CASO CONTRARIO, NON POTRÀ ESSERE EFFETTUATA LA CORREZIONE DEL COMPITO MANCANDO IL TESTO DI RIFERIMENTO.

7) SI RICORDA CHE IN CASO DI ESITO INSUFFICIENTE

Riferimenti

Documenti correlati

1) Fare il login sui sistemi in modalità Linux usando il proprio username e password, attivare syncexam.sh e passare in modalità testuale. 2) I file prodotti devono essere

Ogni processo nipote PPi, una volta ricevuto il carattere AM dal processo figlio Pi, deve calcolare a sua volta il numero di occorrenze Nocc (in termini di long int) di AM nel

Inoltre, per ogni file trovato, si deve riportare sullo standard output il suo nome assoluto, e quindi per ognuno di essi (file corrente), si deve invocare la parte in C passando

La parte in Shell deve prevedere un numero variabile di parametri N+1 (N maggiore o uguale a 2): i primi N parametri devono essere nomi assoluti di direttori che identificano

• Creare un progetto Java con nome “ESAME090915-«Turno»-«Numero»” e scrivere le classi Java della soluzione nel package di default (senza nome) di tale progetto..

Fissare a priori tra client e server una chiave (posta ad esempio in un header file) che sarà utilizzata dal server per creare la

uid_t geteuid (void); effective user ID del processo chiamante gid_t getgid (void); real group ID del processo chiamante gid_t getegid (void); effective group ID

 in ogni caso il padre può chiedere informazioni sullo stato di uscita del figlio; questo è fatto chiamando le funzioni wait e waitpid}. La bo ra to rio d i S ist em i O pe ra