Seite 1 von 2

QT Prozesse und Dualcore

Verfasst: 22. Mai 2008 11:04
von grisu1972
Hallo Leute,

meine Frage:
Ich habe eine QT Applikation die verschiedenen Prozesse erzeugt. Werden bei einem dualcore Prozessor von Intel/AMD automatisch beide Kerne benutzt oder kann man das konfigurieren oder ist es gar nicht möglich?
Generell wird gcc (3.x) vewendet und das Zielsystem ist Linux!
Ich habe das System nicht sondern möchte vorerst nur die Informationen haben!

Grüsse Carsten

Verfasst: 22. Mai 2008 11:07
von Christian81
1 Prozess == 1 Kern
Erst wenn der Prozess mehrere Threads benutzt kann auch mehr als 1 Kern benutzt werden.

Verfasst: 22. Mai 2008 11:10
von grisu1972
Ist mir nicht ganz klar, ich dachte ein Prozess kann mehrere Thread haben die in der gleichen Umgebung laufen also z.B. den gleichen Stack benutzen. Dann bräuchte man doch mehrere Prozesse sodas das OS die Prozesse auf die Kerne verteilen kann!
Ist das Falsch?

Verfasst: 22. Mai 2008 11:19
von Christian81
Ich weiß nicht was Du meinst - Threads haben erstmal nichts mit irgendwelchen Stacks zu tun. Jeder Thread hat seinen eigenen Stack.
1 Prozess hat normalerweise nur einen Thread --> nur auf einem Kern
Hat ein Prozess mehrere Threads können die sich auf mehrere Kerne verteilen.

Verfasst: 22. Mai 2008 12:19
von grisu1972
Also eine Applikation läuft als ein Prozess, von diesem Prozess können mehrere Threads erzeugt werden die quasiparallel arbeiten, dieses meiner Meinung nach auf einem Kern! Bei einem dualcore würde der zweite Kern nicht beteiligt. Erst wenn ein zweiter Prozess erzeugt wird ist eine parallele Bearbeitung möglich! (wie gesagt, meine Meinung!)

Dazu lautete meine Frage, ob automatisch die Prozesse (durch das OS) auf die Prozessoren verteilt werden?

Verfasst: 22. Mai 2008 12:27
von Christian81
Natürlich werden die Prozesse automatisch vom BS verteilt - wer sollte es sonst machen?
Und die Threads genauso. Ein Thread ist quasi ein 'kleiner' Prozess.

Verfasst: 25. Mai 2008 19:33
von Picaschaf
Zur Aufklärung:

Möchtest du mehrere Kerne oder Prozessoren nutzen musst du Prozesse erzeugen. Threads reichen nicht aus, da Threads nicht ausgelagert werden können, sie laufen auf dem Prozessor auf dem der Parent-Prozess läuft. Parallelisierung von Threads gibt es auch und nennt sich bei Intel beispielsweise Hyperthreading (wurde mit der Core Architektur allerdings wieder abgeschafft, soll allerdings in der nächsten Generation wieder eingeführt werden).

Die Verteilung der Prozesse kannst du nicht beeinflussen, das ist Aufgabe des Betriebssystems. Das Einzige was ich mir vorstellen könnte wäre ein Linux mit einer Erweiterung die genau das ermöglicht (ist mir allerdings nicht bekannt). Unter Windows und MacOS X geht es auf jeden Fall nicht.


SG
Alex

Verfasst: 25. Mai 2008 19:39
von Christian81
Picaschaf hat geschrieben: Möchtest du mehrere Kerne oder Prozessoren nutzen musst du Prozesse erzeugen. Threads reichen nicht aus, da Threads nicht ausgelagert werden können, sie laufen auf dem Prozessor auf dem der Parent-Prozess läuft. Parallelisierung von Threads gibt es auch und nennt sich bei Intel beispielsweise Hyperthreading (wurde mit der Core Architektur allerdings wieder abgeschafft, soll allerdings in der nächsten Generation wieder eingeführt werden).
Aua... schreib hier nicht so einen Müll und informiere dich bitte erstmal.

Verfasst: 25. Mai 2008 20:14
von Picaschaf
Na dann klär mich auf wenn du es besser weißt.

Verfasst: 25. Mai 2008 20:23
von Christian81
Was soll ich noch schreiben? Habe doch schon alles gesagt...

Verfasst: 25. Mai 2008 20:30
von Picaschaf
Tja, das ist allerdings falsch. Ein Thread kann außerhalb seines Prozesses nicht existieren, ist auch gut so, sonst hätte er keinen Sinn. Dir muss doch selbst auffallen, dass da in deiner Logik was falsch ist wenn du sagst, dass zwei Threads eines Prozesses auf 2 Prozessoren laufen können.

Der Vorteil eines Threads ist es, dass der Wechsel ohne Prozesswechsel stattfinden kann. Und da willst du den Usern einreden, dass stattdessen ein kompletter Prozessorwechsel inkl. evtl. benötigtes Umkopieren der Speicher notwendig sein kann?

Junge, *du* solltest dich mal informieren, ich mache das beruflich und ich glaube kaum, dass Dokumentation und Inspector mich anlügen ;)

Verfasst: 25. Mai 2008 20:42
von Christian81
Ich zitiere mal kurz aus Wikipedia weil ich zu faul bin was selbst zu schreiben.

http://de.wikipedia.org/wiki/Multicore-Prozessor :
... Dabei verteilt das Betriebssystem Prozesse und Anwendungen auf die einzelnen Prozessoren, die diese dann unabhängig parallel ausführen. Wird hingegen nur eine Anwendung ausgeführt, so muss diese für die mehreren Prozessoren parallelisiert werden. Das bedeutet, die Anwendung wird so modifiziert, dass sie komplett oder auch nur Fragmente davon gleichzeitig auf mehreren Prozessoren als Threads ausgeführt werden.

Verfasst: 25. Mai 2008 20:45
von Picaschaf
Ja, daran ist auch nichts falsch. Falsch ist, dass 2 Threads aus einem Prozess auf 2 verschiedenen Prozessoren laufen können. Ein Thread läuft immer auf dem Prozessort auf dem der Prozess läuft.

Verfasst: 25. Mai 2008 20:49
von Christian81
Meine CPU hat zwei Prozessoren und trotzdem kann ein Prozess beide Prozessoren voll auslasten... komisch komisch.

Verfasst: 25. Mai 2008 20:52
von Picaschaf
Wenn deine CPU 2 echte Kerne hat, ist das nicht möglich. Ich verstehe auch nicht warum hier über so etwas diskutiert wird. Wenn du dich mit Prozessorarchitekturen auseinandersetzen würdest wüsstest du das.

Ich würe mal prüfen ob dein 2. Kern nicht vom Hyperthreading her rührt ;)