Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Devel] C thread e biprocessore
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian)
View previous topic :: View next topic  
Author Message
tolipth
Guru
Guru


Joined: 01 Dec 2003
Posts: 301

PostPosted: Tue Aug 24, 2004 8:42 am    Post subject: [Devel] C thread e biprocessore Reply with quote

ciao,
cercavo documentazione su come utilizzare in C (thread) una architettura multicpu,
avete qualche url da suggerire?
grazie
Back to top
View user's profile Send private message
akiross
Veteran
Veteran


Joined: 02 Mar 2003
Posts: 1170
Location: Mostly on google.

PostPosted: Tue Aug 24, 2004 12:40 pm    Post subject: Reply with quote

Ciao
Io non sono molto esperto in materia di thread, visto che per ora uso solo fork (processi, non thread), ma non cambia poi molto.

url da suggerire:
www.google.com cerca "pthread library linux" o simili
oppure guarda la documentazione IBM per i developer linux, sicuramente trovi qualcosa anche sui thread
http://www-106.ibm.com/developerworks/linux/

Ora ho poco tempo, ma quanto torno ti cerco sicuramente qualcosa (un paio d'ore credo)

per quanto riguarda i processori multipli... non vorrei sparare cagate, ma a te non dovrebbe cambiare molto, anzi proprio nulla: il sistema operativo si occupa della shedulazione dei processi, quindi la differenza sta nel fatto che vengono eseguiti 2 processi contemporaneamente, invece che 1.
So pero' che e' possibile cambiare gli algoritmi di shedulazione (Linux & Co n° 40, a proposito dei sistemi real-time), guarda la funzione sched_setscheduler() magari per i sistemi con piu' CPU ha qualche algoritmo in piu' od opzione particolare.

Al mio ritorno cerco nei preferiti e vedo se ho qualcosa a proposito di thread.

Ciauz
_________________
Libera scienza in libero stato.
Horizon of Events
Back to top
View user's profile Send private message
akiross
Veteran
Veteran


Joined: 02 Mar 2003
Posts: 1170
Location: Mostly on google.

PostPosted: Tue Aug 24, 2004 2:12 pm    Post subject: Reply with quote

Questi sembrano interessanti
http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html
http://pauillac.inria.fr/~xleroy/linuxthreads/

Ciauz!
_________________
Libera scienza in libero stato.
Horizon of Events
Back to top
View user's profile Send private message
Frez
Apprentice
Apprentice


Joined: 29 Aug 2003
Posts: 166

PostPosted: Tue Aug 24, 2004 2:39 pm    Post subject: Reply with quote

Io ho iniziato a spippolare con i thread leggendo Advanced Linux Programming

Volendo c'e' anche la versione completa del libro scaricabile.
Mi piaceva e I'ho comprato (alla faccia di chi crede che i sostenitori del free software siano solo comunisti che vogliono tutto gratis)

Se invece conosci gia' bene la programmazione multi thread e volevi solo sapere qualcosa sui sistemi multiprocessore ... ho spammato :)
_________________
There is one more thing ... it's been emotional
Back to top
View user's profile Send private message
akiross
Veteran
Veteran


Joined: 02 Mar 2003
Posts: 1170
Location: Mostly on google.

PostPosted: Tue Aug 24, 2004 2:53 pm    Post subject: Reply with quote

[un po' OT]

Quote:
Mi piaceva e I'ho comprato (alla faccia di chi crede che i sostenitori del free software siano solo comunisti che vogliono tutto gratis)


Riguardo a questo inizio ad avere seri problemi: un manuale cartaceo credo che sia imbattibile in fatto di comodita', pero' ho anche pensato che uno elettronico non solo puo' essere piu' aggiornato, ma non occupa spazio sulla mia libreria :D
Pero' uno cartaceo ha anche il vantaggio di essere organizzato bene, e spesso trovi quello che cerchi.

Quindi, meglio cartaceo o digitale? Bisognerebbe aprire un Poll :D
[/un po' OT]

Quel libro potrebbe essere interessante anche per me :D

Grazie!

Ciauz!
_________________
Libera scienza in libero stato.
Horizon of Events
Back to top
View user's profile Send private message
xdarma
l33t
l33t


Joined: 08 Dec 2003
Posts: 719
Location: tra veneto e friuli (italy)

PostPosted: Wed Aug 25, 2004 8:48 pm    Post subject: Reply with quote

scusatemi se sparo boiate, ma se compilo un programma XYZ con i flag -mthreads e/o -lpthread, XYZ non verra' creato un binario che gira usando i threads e quindi permettendo al kernel di saturare gli n-processori a disposizione?

xdarma
Back to top
View user's profile Send private message
motaboy
Developer
Developer


Joined: 15 Dec 2003
Posts: 1483

PostPosted: Wed Aug 25, 2004 9:17 pm    Post subject: Reply with quote

Devi prima creare un programma che utilizzi i thread. non é che sei fai un programma qualsiasi esso viene spezzato in piú thread ma deve essere una cosa volontaria. Soprattutto per il fatto che la programmazione multithread comporta la conoscenza di varie problematiche come la contention, i deadlock etc...
_________________
...
Back to top
View user's profile Send private message
akiross
Veteran
Veteran


Joined: 02 Mar 2003
Posts: 1170
Location: Mostly on google.

PostPosted: Wed Aug 25, 2004 9:21 pm    Post subject: Reply with quote

Umm no.
Cioe': il flag -mthreads non so cosa faccia, probabilmente e' una sorta di ottimizzazione riservata ai thread (ma sparo eh). Sicuramente non e' qualcosa che "crea i thread dal nulla", nel senso che per coordinare l'uso dei thread ci vuole la mente umana, non credo sia un processo adatto alle macchine. Al massimo loro possono analizzare la situazione e migliorarla, ottimizzarla per spazio o velocita', ma non creano i thread dal nulla.

Per quanto riguarda -lpthread stai solamente dicendo di usare la libreria pthread, cioe' quella di cui parlavo io all'inizio.
Ovviamente anche qui deve essere l'uomo a fare un programma con i thread, non e' la macchina che lo fa.

Comunque, non vorrei sbagliarmi, ma xdarma mi sembra che tu non abbia molto presente che significato abbiano i thread:
se tu fai un programma con 2 thread, o 2 processi concorrenti, succede che una CPU eseguira un processo alla volta, per un tempo fissato di 10 millisecondi. Visto che l'esecuzione dei due e' in serie ma molto veloce, sembreranno essere eseguiti in parallelo, come su 2 cpu, ma non e' cosi'.
Quando si hanno 2 CPU non e' che si devono avere 2 thread per forza: conta che il sistema e' multitask, questo significa che (anche con 1a sola CPU), il sistema deve elaborare il tuo programma, ma anche X11, anche BASH, anche il kernel, anche lo swapper, l'init ecc ecc
Quindi e' facile immaginare che con 1a CPU tutti questi programmi vengono eseguiti, un pezzo alla volta, ogni 10millisecondi, a ciclo (in base alle priorita' ovviamente).

Se si hanno 2 cpu, succedera' solo che 2 cpu lavoreranno contemporaneamente, per 10msec, a 2 processi, non per forza appartenenti allo stesso programma. Quindi, se il programma in questione e' ad un solo thread, non significa che verra' eseguito da una sola CPU (anche se e' probabile), e non significa che se lo dividiamo in piu' thread esso verra' eseguito da entrambe le CPU. In ogni caso il doppio processore garantisce minor tempo nell'esecuzione dei processi, e teoricamente e' come avere una CPU che va al doppio della velocita' effettivo.

Probabilmente c'e' un modo per dire al sistema che il programma in questione deve avere una certa priorita', e quindi forzare il sistema ad utilizzare le 2 cpu contemporaneamente. Ovviamente solo in caso che il programma abbia 2 o piu' thread.

Spero di essere stato chiaro e utile. Magari lo sapevi gia, e magari mi sbaglio anche, ma e' meglio precisare (non sono precisamente sicuro che sia cosi', non al 100%, ma questa mi sembra la deduzione piu' logica partendo da tutte le mie conoscenze di thread, cpu e scheduling dei processi)

Ciauz!
_________________
Libera scienza in libero stato.
Horizon of Events
Back to top
View user's profile Send private message
xdarma
l33t
l33t


Joined: 08 Dec 2003
Posts: 719
Location: tra veneto e friuli (italy)

PostPosted: Thu Aug 26, 2004 9:02 pm    Post subject: Reply with quote

era proprio una boiata, peccato ;-)

grazie per il chiarimento e la pazienza

ciao
xdarma
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum