Pagina 1 di 1

Programmazione Concorrente[RISOLTO]

Inviato: mar mag 06, 2008 11:39
da afterjames
Salve a tutti, ho bisogno di fare esercizi sulla programmazione concorrente (clone,fork, etc.).Qualcuno ha del materiale da consigliarmi?Grazie in anticipo

Re: Programmazione Concorrente

Inviato: mar mag 06, 2008 11:43
da JohnnyMnemonic
Se parliamo di linguaggio C un ottimo punto di partenza è il GAPIL di Simone Piccardi, trovi facilmente la versione pdf scaricabile liberamente

Re: Programmazione Concorrente

Inviato: mar mag 06, 2008 12:44
da afterjames
Conosco la Gapil!A me serviva qualcosa di specifico su clone e fork..Senza usare la pthread.Più che altro esercizi.

Re: Programmazione Concorrente

Inviato: mar mag 06, 2008 17:13
da 414N
Questa è la home page del corso di Sistemi Operativi L-A della facoltà di ingegneria di Bologna. Trovi slides di teoria e anche di esercizi su fork, pipe e compagnia bella.

Re: Programmazione Concorrente

Inviato: mar mag 06, 2008 18:12
da ZeD
se vuoi studiare la programmazione concorrente butta il C e studiati erlang :)

Re: Programmazione Concorrente

Inviato: mar mag 06, 2008 19:34
da FireEater
http://ulisse.polito.it/matdid/3ing_inf_N5030_TO_0/indexProgetto.html questa la pagina dell'esame di tecnologia dei sistemi operativi del politecnico di Torino.
Se vuoi ti posso spedire anche altro materiale, ho dato l'esame 2 settimane fa. 8)

Re: Programmazione Concorrente

Inviato: mar mag 06, 2008 21:23
da afterjames
Grazie a tutti..A me serve qualcosa principalmente sulla Clone.Vi pongo questa domanda,e scusate l'inesperienza.Ho scritto questa cosa:

Codice: Seleziona tutto

#include<stdio.h>
#include<stdlib.h>
#include<sched.h>
#include<signal.h>
#include<unistd.h>
int flag=5;
int clone_function(){
while(1){
   pause();
   printf("Sono nella clone..\n");

   
   }

_exit(0);
}
void gestore_segnale(){

   printf("Gestore Decremento\n");
   flag--;

}
int main(int argc,char **argv){

char stack[1024];
int i;
signal(SIGUSR1,gestore_segnale);
int pid=clone(clone_function,&stack[1024],CLONE_VM,NULL);

for(i=0;i<5;i++){
   
   printf("Invio un segnale..\n");
   kill(pid,SIGUSR1);       //invio 5 segnali intervallati da attese di 2 secondi
   sleep(2);
}
printf("Elimino il clone..\n");
kill(pid,SIGKILL);
printf("Flag %d\n",flag);

return 0;

}



Dalle specifiche dell'esercizio si richiedeva di inviare 5 segnali al clone intervallati da due secondi di attesa.Il Clone deve semplicemente aspettare di ricevere un segnale e stampare un messaggio.Funziona.Ma se provo a commentare la

Codice: Seleziona tutto

printf("Invio un segnale..\n");

Il programma si blocca prima ed ottengo un segmentation_fault durante l'esecuzione!Non è la prima volta che mi capitano queste stranezze con la clone, qualcuno saprebbe aiutarmi?

Re: Programmazione Concorrente

Inviato: mar mag 06, 2008 21:49
da afterjames
Ho aumentato la dimensione dello stack e funziona.Secondo voi quanto deve essere grande per stare tranquillo?