• Non ci sono risultati.

Esercizio 1

N/A
N/A
Protected

Academic year: 2021

Condividi "Esercizio 1"

Copied!
6
0
0

Testo completo

(1)

Esercizio 1

• Scrivere un programma in C che:

– Il padre

• Crea un processo figlio.

• Riceve dal figlio una sequenza di stringhe che visualizza.

• Termina quando il figlio ha terminato la sequenza.

– Il figlio

• Apre un file di testo

• Legge il file una riga per volta

• Invia la riga al padre.

• Termina quando non vi sono più caratteri da leggere dal file.

• Padre e figlio comunicano attraverso una pipe.

(2)

Esercizio 2

Scrivere un programma in C in cui:

• Il padre

– Crea due processi figli.

– Attende la terminazione di entrambi i processi figli, F

0

, F

1

• Il figlio F

i

:

– Crea due processi figli, un lettore L

i

ed uno scrittore S

i

.

• Il processo S

i

:

– Apre un file di testo

– Legge il file una riga per volta

– Invia al processo lettore L

1-i

la riga letta.

– Termina quando non vi sono più caratteri da leggere dal file.

• Il processo lettore L

i

:

– Legge stringhe dal canale di comunicazione e le scrive in un file.

Lettori e scrittori comunicano attraverso pipe.

(3)

Esercizio 3

Scrivere due programmi in C in cui:

• Il primo programma:

– Riceve in input una stringa x

– Redirige lo standard output su una fifo

– Utilizzando una system call della famiglia exec Esegue il comando

“cat x”.

• Il secondo programma:

– Legge le stringhe dalla fifo e visualizza il numero totale di caratteri

che le compongono.

(4)

Esercizio 4

• Scrivere un programma in cui:

– Il master thread

• Riceve su riga di comando due interi a e b.

• Crea un thread passando come parametri – La stringa “Thread 1”

– L’intero a

• Crea un thread passando come parametri – La stringa “Thread 2”

– L’intero b

• Attende la terminazione di entrambi I thread.

• Visualizza un messaggio e termina.

– I thread

• Stampano a video la stringa e l’intero passati come parametri e

terminano

(5)

Esercizio 5

• Scrivere un programma in cui:

– Il master thread

• Crea due thread

• Attende la terminazione di entrambi I thread.

• Visualizza un messaggio e termina.

– Il thread 1

• apre il file text1.txt

• Legge il file una riga per volta e stampa la stringa a video.

– Il thread 2

• apre il file text2.txt

• Legge il file una riga per volta e stampa la stringa a

video.

(6)

Esercizio 6

Scrivere una applicazione client/server in cui

• Il client e’ identificato dal proprio pid.

– Invia al server uno dei seguenti comandi:

• LIST: Richiede l’elenco dei client connessi.

• SEND x: Invia a tutti I client connesi la stringa x

• EXIT: Termina il client.

• KILL: Genera la terminazione del server.

• Il server e’ una applicazione multi-thread in cui:

– Ogni client viene gestito da un thread diverso.

– Tutte le comunicazioni vengono gestite dal master thread:

• LIST: Il master thread invia al thread associato al client che ne ha fatto richiesta la lista dei pid dei client associati.

• SEND x: Il master thread comunica a tutti I thread attivi la stringa x.

– Quando un thread riceve KILL provoca la terminazione del server.

– Per evitare problemi di sincronizzazione, per ogni thread esiste un’area di memoria utilizzata esclusivamente per la comunicazione tra il thread ed il master thread.

Client e server comunicano attraverso socket TCP

Riferimenti

Documenti correlati

Il programma in C riportato in seguito usa funzioni di libreria definite nello standard POSIX (supportato da quasi tutti i sistemi UNIX) per creare più thread e mandarli in

•  Per attivare il thread deve essere chiamato il metodo start() che invoca il metodo run() (il metodo run() non può essere. chiamato direttamente, ma solo

implementazione del concetto di monitor: un oggetto java è associato ad un mutex ricorsivo tramite il quale è possibile disciplinare gli accessi da parte di diversi thread allo

 La funzione DEVE ESSERE CHIAMATA su una variabile mutex che sia già bloccata e di proprietà del thread chiamante. In tal caso la funzione pthread_mutex_unlock sblocca la

▪ Assegnare memoria e risorse per la creazione di nuovi processi è oneroso; poiché i thread condividono le risorse del processo cui appartengono, è molto più con- veniente creare

 Wait (and act) for a single thread within a large group of

 Tale valore risulta disponibile al thread che effettua una pthread_join..

• Il metodo run della classe di libreria Thread definisce l’insieme di statement Java che ogni thread (oggetto della classe) eseguirà.. concorrentemente con gli