Gegenseit. Beeinfluss. v. Anwendungen auf Dual-CPU

Hallo zusammen,

ich fahre Win XP Prof SP2 auf einem HP Compaq dc7700 Convertible, Intel Core2 CPU mit 1,86 GHz, 2 GB RAM.

Kann es sein, dass sich verschiedene Anwendungen auf diesem System anders gegenseitig beeinflussen als auf einem System mit nur einem CPU-Kern?

Nach meiner Vorstellung laufen auf einem Ein-Kern-System alle Prozesse letztlich seriell ab und können sich daher auf unterster Ebene nicht in’s Gehege kommen, während auf einem Zwei-Kern-System zwei Prozesse nicht nur quasi-gleichzeitig, sondern tatsächlich gleichzeitig laufen und daher irgendwie sichergestellt sein muss, dass diese sich nicht bei irgendwelchen Aktionen in die Wolle geraten.

Gibt es hier bekanntermaßen Probleme, oder kann das nicht sein?

Gibt es eigentlich eine Möglichkeit, XP zu veranlassen, für alle Programme nur einen der beiden CPU-Kerne zu nutzen? Damit könnte man im Fall von Problemen feststellen, ob es etwas mit der Doppel-CPU zu tun hat.

Ich habe ein konkretes Problem (siehe Posting „Excel-Abstürze, wenn nicht damit gearbeitet wird“ in „Tabellenkalkulation“), http://www.wer-weiss-was.de/cgi-bin/forum/showarchiv… möchte diese Frage aber gerne mal generell geklärt haben, damit ich bei künftigen Problemen weiß, ob ich in diese Richtung suchen soll (und wie), oder nicht.

Vielen Dank.

Grüße
Sebastian

Hallo Sebastian,

Kann es sein, dass sich verschiedene Anwendungen auf diesem
System anders gegenseitig beeinflussen als auf einem System
mit nur einem CPU-Kern?

Im Prinzip JA…

Nach meiner Vorstellung laufen auf einem Ein-Kern-System alle
Prozesse letztlich seriell ab und können sich daher auf
unterster Ebene nicht in’s Gehege kommen, während auf einem
Zwei-Kern-System zwei Prozesse nicht nur quasi-gleichzeitig,
sondern tatsächlich gleichzeitig laufen und daher irgendwie
sichergestellt sein muss, dass diese sich nicht bei
irgendwelchen Aktionen in die Wolle geraten.

Richtig

Gibt es hier bekanntermaßen Probleme, oder kann das nicht
sein?

Mit Anwendungen habe ich noch keine Probleme gehabt, aber mit Treibern.
Im Gegensatz zu dir habe ich noch kein System mit Dual-Core, dafür habe ich zwei hier zwei CPUs im System.
Seit fast 4 Jahren habe ich einen USB-xD-Cardreader von Fuji. Funktioniert in einem System mit nur einem Core bestens. Wenn zwei Kerne vorhanden sind stürzt das System ab und zu ab, selbst wenn der Cardreader gar nicht angeschlossen ist. Wird der Treiber entfernt ist das System wieder stabil. Seit etwa einem halben Jahr gibt es eine neue Version, welche nicht mehr abstürzt … Allerdings: Wenn der Cardreader angeschlossen ist legt XP bei Festplattenzugriffen ab und zu 1 bis 2 Minuten eine Denkpause ein !! Wird der Cardreader mit „UBS-Gerät entfernen“ nach dem booten entfernt funktioniert es problemlos.

Bei Treibern besteht dass Problem, dass wenn die eine CPU gerade z.B. einen Interrupt abarbeitet und ein zweites Ereignis auftritt, es möglich ist, dass die zweite CPU die selbe Routine abarbeitet wie die Erste. Bei einem Hardware-Treiber führt das unweigerlich zu einem Chaos.
Grundsätzlich ist das ein Softwarefehler. Es gibt bestimmte Kernel-Aufrufe, mit denen man die kritischen Bereich schützen muss, aber man muss diese Aufrufe auch an den richtigen Orten im Code platzieren.
Ist eigentlich ganz gut in der MS-Doku beschrieben, wie es gemacht werden muss.
Der Mechanismus besteht aus EnterCriticalSection und ExitCriticalSection. Funktioniert eigentlich wie bei einem WC, wenn du reingehst stellst du den Riegel auf rot, beim rausgehen dann wieder auf grün. Programmtechnisch wird das als Semaphore bezeichnet.

Schätzungsweise in so 3 Jahren sollte es einen funktionierenden Treiber geben :frowning:(

MfG Peter(TOO)

Hallo Peter,

vielen Dank für Deine Antwort.

Bei Treibern besteht dass Problem, dass wenn die eine CPU
gerade z.B. einen Interrupt abarbeitet und ein zweites
Ereignis auftritt, es möglich ist, dass die zweite CPU die
selbe Routine abarbeitet wie die Erste. Bei einem
Hardware-Treiber führt das unweigerlich zu einem Chaos.
Grundsätzlich ist das ein Softwarefehler. Es gibt bestimmte
Kernel-Aufrufe, mit denen man die kritischen Bereich schützen
muss, aber man muss diese Aufrufe auch an den richtigen Orten
im Code platzieren.

Na super, das lässt ja hoffen, dass man früher oder später auch vor so einem Problem mit Hardwaretreibern steht.

Ist eigentlich ganz gut in der MS-Doku beschrieben, wie es
gemacht werden muss.

Tja, wer lesen kann, ist klar im Vorteil, aber wenn die Autoren solcher Treiber diese Doku nicht lesen …

Ich könnte mir vorstellen, dass zwar viele Autoren ihre Treiber anpassen, wenn ein neues Betriebssystem rauskommt, aber vielleicht nicht alle das gemacht haben, als die Mehrkern-CPUs kamen.

Der Mechanismus besteht aus EnterCriticalSection und
ExitCriticalSection. Funktioniert eigentlich wie bei einem WC,
wenn du reingehst stellst du den Riegel auf rot, beim
rausgehen dann wieder auf grün. Programmtechnisch wird das als
Semaphore bezeichnet.

An die Semaphoren kann ich mich dunkel erinnern, aber meine Entwicklerzeit liegt zu lange zurück, da hatte man solche Probleme noch nicht. Die Kommunikation über Semaphoren kam erst später.

Schätzungsweise in so 3 Jahren sollte es einen
funktionierenden Treiber geben :frowning:(

Oh, doch so bald schon … na dann …

Ich habe mal probehalber ein paar Applikationen, die sich in der Zusammenarbeit merkwürdig benehmen (Mail Client Pegasus, Textbausteinverwaltung GhostTyper, Clipboard-Tool ClipMate) alle auf eine CPU beschränkt, und siehe da, das Verhalten war auf einmal wieder wie früher gewohnt, die GhostTyper-Kürzel werden auch in Pegasus in die definierten Textbausteine aufgelöst.

Da hat man nun zwei CPU-Kerne und mehr Ärger als Nutzen. Das ist wie Ferrari fahren und Geschwindigkeitsbeschränkung auf 80 km/h.

Grüße
Sebastian

Hallo zusammen,

ich fahre Win XP Prof SP2 auf einem HP Compaq dc7700
Convertible, Intel Core2 CPU mit 1,86 GHz, 2 GB RAM.

Kann es sein, dass sich verschiedene Anwendungen auf diesem
System anders gegenseitig beeinflussen als auf einem System
mit nur einem CPU-Kern?

Hallo Sebastian,

einfache Antwort eines bekannten US-Entwicklers (Name ist mir nicht in Erinnerung, habe ich aus US-Entwickler-Veröffentlichungen): keine Software darf als fertig gelten, solange man sie nicht auf einem Mehrprozessorsystem ausführlich getestet hat.

In der Realität ist ein grosser Teil an Software noch nicht einmal „thread-save“, der Einsatz von Fremdroutinen geht also oft schon schief, wenn man in einem Programm mehrere Threads laufen lässt.

Aber das ist ein weites Feld…

Gruss Reinhard