QT Prozesse und Dualcore

Alles rund um die Programmierung mit Qt
grisu1972
Beiträge: 66
Registriert: 9. November 2007 16:08

QT Prozesse und Dualcore

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

1 Prozess == 1 Kern
Erst wenn der Prozess mehrere Threads benutzt kann auch mehr als 1 Kern benutzt werden.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
grisu1972
Beiträge: 66
Registriert: 9. November 2007 16:08

Beitrag 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?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
grisu1972
Beiträge: 66
Registriert: 9. November 2007 16:08

Beitrag 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?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Picaschaf
Beiträge: 13
Registriert: 21. Mai 2008 12:53

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Picaschaf
Beiträge: 13
Registriert: 21. Mai 2008 12:53

Beitrag von Picaschaf »

Na dann klär mich auf wenn du es besser weißt.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Was soll ich noch schreiben? Habe doch schon alles gesagt...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Picaschaf
Beiträge: 13
Registriert: 21. Mai 2008 12:53

Beitrag 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 ;)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Picaschaf
Beiträge: 13
Registriert: 21. Mai 2008 12:53

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Meine CPU hat zwei Prozessoren und trotzdem kann ein Prozess beide Prozessoren voll auslasten... komisch komisch.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Picaschaf
Beiträge: 13
Registriert: 21. Mai 2008 12:53

Beitrag 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 ;)
Gesperrt