Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio15:esercitazionia:esercitazione6

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
informatica:sol:laboratorio15:esercitazionia:esercitazione6 [20/04/2015 alle 09:23 (10 anni fa)] – [Esercizio 2] Massimo Torquatiinformatica:sol:laboratorio15:esercitazionia:esercitazione6 [28/04/2015 alle 06:37 (10 anni fa)] (versione attuale) – [Esercizio 3] Massimo Torquati
Linea 12: Linea 12:
 ===== Esercizio 2 ===== ===== Esercizio 2 =====
  
-Scrivere un programma, utilizzando chiamate di sistema, che implementi l'equivalente del comando ''cp''. Il programma deve accettare 3 argomenti come segue:+Scrivere un programma, utilizzando chiamate di sistema, che implementi l'equivalente del comando Unix ''cp''. Il programma deve accettare 3 argomenti come segue:
 <code> <code>
 mycp_sc filein fileout [buffersize] mycp_sc filein fileout [buffersize]
 </code> </code>
-L'argomento 'buffersize' e' la dimensione del buffer da utilizzare per le letture e scritture con le SC read e write: +L'argomento 'buffersize' e' la dimensione del buffer da utilizzare per le letture e scritture con le SC ''read'' ''write'' (se non specificato assegnare un valore di default, es. 256bytes)
-Realizzare quindi lo stesso programma del punto, utilizzando invece che SCs le chiamate di libreria ''fread'' ''fwrite''. Chiamiamo questa versione 'mycp_std'. Confrontare le performance del programma 'mycp_sc' e 'mycp_std' al variare del parametro buffersize (provare un po' di casi: 1 4 8 16 32 ..... 8192).+Realizzare quindi lo stesso programma, utilizzando le chiamate di libreria ''fread'' ed ''fwrite''. Chiamiamo questa seconda versione 'mycp_std'. Confrontare le performance (usando il comando ''time''del programma 'mycp_sc' e 'mycp_std' al variare del parametro 'buffersize(provare un po' di casi: 1 4 8 16 32 ..... 8192). Che cosa si nota ?\\ 
 + 
 +Opzionale: scrivere uno script bash che lanciato da una regola del makefile esegue mycp_sc e mycp_std scrivendo i risultati in due file separati. Plottare i dati dello 'user' e 'sys' time con ''gnuplot''.  
 + 
 + 
 +===== Esercizio 3 ===== 
 + 
 +Scrivere un programma C chiamato 'lsdir' che, dato come argomento un nome di directory, visita ricorsivamente tutto il sottoalbero di file e directory che ha come root la directory passata come argomento e stampi sullo standard output le informazioni nel seguente formato: 
 +<code> 
 +Directory: <nomedir1> 
 +file1     size    permessi 
 +file2     size    permessi 
 +------------------ 
 +Directory: <nomedir2> 
 +file1     size    permessi 
 +file2     size    permessi 
 +------------------ 
 +</code> 
 +Durante la visita dell'albero di directory non cosiderare le directory ''.'' e ''..''
 +===== Esercizio 4 ===== 
 + 
 +Scrivere un programma C che prende come argomento un intero N>1. L'intero N rappresenta il numero di processi figli che devono essere creati in totale.  I processi vanno creati come segue: il processo main stampa il suo pid e crea un figlio attendendone quindi la sua terminazione, il processo figlio a sua volta stampa il suo pid e crea un altro figlio attendendone la terminazione e cosi' via fino ad ottenere N processi figli in tutto. L'output formattato che si richiede che venga stampato sullo standard output e' il seguente:  
 +<code> 
 +./family 4 
 +---- 20894: creo un processo figlio 
 +--- 20895: creo un processo figlio 
 +-- 20896: creo un processo figlio 
 +- 20897: creo un processo figlio 
 +20898: sono l'ultimo discendente 
 +20898: terminato con successo 
 +- 20897: terminato con successo 
 +-- 20896: terminato con successo 
 +--- 20895: terminato con successo 
 +---- 20894: terminato con successo 
 +</code>
  
informatica/sol/laboratorio15/esercitazionia/esercitazione6.1429521809.txt.gz · Ultima modifica: 20/04/2015 alle 09:23 (10 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki