Benutzermodusanwendungen können die Benutzeroberfläche Ihres Betriebssystems im Allgemeinen nicht verlangsamen. Die Situation ist jedoch nicht so eindeutig wie es scheint. Es gibt keine einzige Anwendung im Benutzermodus, die sich zu 100% im Benutzermodus befindet, entweder aufgrund von Systemaufrufen (insbesondere des Dateisystems) oder aufgrund der Zuordnung von virtuellem Speicher.
In den meisten Fällen steckt das Betriebssystem nicht bei der CPU-Arbeit, sondern wartet auf einige E / A-Ressourcen. Dies ist besonders offensichtlich, wenn Sie keinen physischen Speicher mehr haben und in die Auslagerungsdatei gehen (obwohl das Betriebssystem in der Lage ist, Speicherplatz in die Auslagerungsdatei zu legen, selbst wenn genügend physischer Arbeitsspeicher zur Verfügung steht). Windows ist normalerweise ziemlich klug, aber es ist durchaus möglich, dies zu "brechen".
Wenn es sich wirklich um eine CPU handelt, liegt dies höchstwahrscheinlich an einem gierigen Treiber (der überwiegende Teil davon wird nicht von Microsoft geschrieben). Treiber im Kernel-Modus sind vom vorbeugenden Multitasking ausgenommen (sowohl aus Gründen der Latenz als auch aus Gründen der Zuverlässigkeit). Wenn also ein Treiber eine zweite lange Schleife auf der CPU ausführt, haben Sie kein Glück, es wird kein Vorgriff geleistet.
Ein großartiges und einfaches Werkzeug, um einige davon zu sehen, ist der Process Explorer (von SysInternals), der Ihnen die Kernel-Zeit einer CPU zeigt (dh, wie viel CPU-Kernarbeit im Kernel ausgeführt wird, im Gegensatz zum Benutzer) Anwendungen selbst). Windows 7 und höher fügt dies auch in ihren Task-Manager ein (die rote Linie in den CPU-Auslastungsdiagrammen).
Alles in allem rettet vorbeugendes Multitasking die OS-Entwickler nicht vor Kompromissen. Alles kostet immer alles und die Planung von Aufgaben ist in der Tat sehr schwierig (im Moment jongliert mein Betriebssystem über 2000 Threads - das ist ziemlich viel, und ich mache eigentlich gar nichts "). Wäre es besser, den Threads kleinere Zeitabschnitte zu geben und mehr Zeit damit zu verbringen, den Kontext zu wechseln? Wäre es besser, ihnen länger Zeit zu geben und die Latenz zu opfern?
Überprüfen Sie also, was die Festplatten tun. Überprüfen Sie, wie Ihr Speicher verwendet wird. Überprüfen Sie die Kernel-Zeit. Dies zeigt Ihnen wahrscheinlich, warum Windows bei schwerer Arbeit die Reaktionsfähigkeit verliert. Einige davon können behoben werden (Speicher freigeben, Speicher-Täter einschränken, CPU-Affinität manuell auswählen ...), andere werden einfach dadurch gelöst, dass die Treiber auf dem neuesten Stand gehalten werden (Grafiktreiber waren für die von ihnen verursachten Probleme ziemlich auffällig.) das hat wahrscheinlich dazu beigetragen, dass Windows sie in den letzten Versionen vom Kernel-Modus in den User-Modus zurückmeldete).
In Bezug auf die GPU verwendet das moderne Windows die GPU-Beschleunigung zum Rendern der grafischen Benutzeroberfläche (eigentlich auch Windows XP). Wenn Ihre Anwendung die GPU erheblich belastet, kann dies auch zu einer verlangsamten Reaktionszeit von Windows führen, insbesondere in Aero. Da GPUs zunehmend als GP-Hyper-CPUs eingesetzt werden, kann dies auch außerhalb von Spielen und dergleichen von Bedeutung sein.
Ein weiterer schwerwiegender Straftäter ist eine schlecht geschriebene Multithread-Anwendung. Es ist ziemlich einfach, das Zwischenspeichern von Speichern zu beenden, wenn Sie dumme Sachen machen, und der Arbeitsspeicher ist im Vergleich zur CPU selbst extrem langsam. Ohne effiziente Zwischenspeicherung wird die CPU sehr, sehr langsam (obwohl sie eigentlich die ganze Zeit wartet). Dies ist bei Multi-Core-CPUs (und Multi-CPU-Systemen) noch komplizierter, da viele Multithread-Vorgänge zur Sicherstellung der Konsistenz zwischengespeicherte Daten ungültig machen (damit eine CPU nicht auf den "alten" Wert der CPU zugreift Variable im Speicher aus dem Cache / den Registern). All diese Dinge sind unglaublich schnell, aber ... CPUs sind schneller. Viel schneller. Was natürlich auch die Probleme der verschiedenen CPU-Anbieter einleitet, die dieselben Dinge unterschiedlich behandeln, völlig unabhängig von dem viel übergeordneten Betriebssystem.Sie sind stark parallelisiert und führen nicht mehr eine Anweisung nach der anderen aus.
Selbst wenn das Betriebssystem alles perfekt macht (offensichtlich ein unmögliches Ideal), kann es dennoch aufgrund von Hardwareproblemen und der Kommunikation mit der Hardware zum Stillstand kommen. Was nützt es, dass Sie über eine 4-Kern-CPU verfügen, wenn es Ihrer Anwendung gelingt, den RAM R / W vollständig zu sättigen? Was nützt es, eine schnelle Festplatte zu haben, wenn jedes einzelne Byte, das es liest, durch die CPU laufen muss (PIO beachten?). Bei jeder Hardwareoperation, die keinen direkten Speicherzugriff verwendet, kann die CPU möglicherweise blockiert werden.
Und jetzt laufen die meisten Windows tatsächlich als Anwendungen im Benutzermodus. Und sie interagieren mit den Anwendungen, die ebenfalls ausgeführt werden. Wenn ich explorer.exe
etwas für mich tun möchte, kann es in der Zwischenzeit nichts anderes tun. Wenn ich eine Milliarde Fenstermeldungen an ein Fenster schicke, wird dies eine Spur hinterlassen.
Es ist immer so viel los, Garantien sind sehr schwierig. Beachten Sie, wie schnell die Dinge werden, sobald der Bildschirm "Strg-Alt-Löschen" tatsächlich eingeblendet wird - plötzlich ist es so, als ob nichts wäre. :)