Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
I corsi di Scienze Matematiche Fisiche e Naturali
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Clemente Galdi » 17.Esercitazioni su programmazione multi-processo


Esercizio 1

Scrivere un programma in linguaggio C che visualizza:

  • PID, GID, PPID
  • Effective UID e GID
  • REAL UID e GID

Modificando opportunamente gli attributi dell’eseguibile, identificare I casi in cui:

  • Effective UID e real uid differiscono;
  • Effective GID e real gid differiscono.

Esercizio 2

Scrivere un programma in linguaggio C in cui:

  • Un processo crea un figlio e si mette in attesa della sua terminazione;
  • Il figlio visualizza un messaggio e termina con exit(1);
  • Il padre crea un secondo figlio e si mette in attesa della sua terminazione;
  • Il figlio visualizza un messaggio e termina con abort();
  • Il padre visualizza un messaggio e termina.

Quando un figlio termina, il padre visualizza le informazioni “di terminazione del figlio”.

Esercizio 3

Scrivere un programma in linguaggio C che riceve su riga di comando un intero n.

  • Il processo crea n figli.
  • Il figlio i-esimo visualizza il messaggio “Figlio” seguito dal valore di i e termina.
  • Il padre aspetta la terminazione di tutti I figli.

Esercizio 4

Scrivere un programma in C che ricrea l’albero dei processi rappresentato in figura:

  • Il processo al livello zero ha tre processi figli;
  • Ogni processo al livello uno ha due figli;
  • Ogni processo al livello due ha un unico figlio.

Ogni processo nell’albero visualizza l’elenco dei pid dei processi che collegano il proprio nodo alla radice.

L’albero da ricreare in memoria.

L'albero da ricreare in memoria.


Esercizio 5

Generalizzare il programma dell’esercizio precedente come segue:

  • Il programma riceve in input un intero n.
  • Il processo al livello zero crea n processi figli
  • Ogni processo al livello 1 crea n-1 figli
  • Ogni processo al livello 2 crea n-2 figli
  • Ogni processo al livello I crea n-I figli.

Ogni processo nell’albero visualizza l’elenco dei pid dei processi che collegano il proprio nodo alla radice.

Esercizio 6

Scrivere un programma “mini-shell” in linguaggio C che:

  • Riceve un input una stringa da standard input;
  • Crea un processo figlio che “esegue” la stringa.

Il processo termina quando l’utente digita il comanda “exit”.

Esercizio 7

Modificare l’esercizio 4 in modo da consentire l’utilizzo della redirezione.

E.g., la “mini-shell+” interpreta correttamente comandi del tipo
Comando par1 par2… < input > output 2> error.

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion