![]() |
Assembler im Kernel-Mode
Hallo zusammen.
Ich möchte gerne bei meinem Rechner die Leistung verringern indem ich ein HALT-Kommando an die CPU sende.
Delphi-Quellcode:
In
asm
HLT ; thx to Frickel[...]TM end; ![]() |
Re: Assembler im Kernel-Mode
Wozu nur? Der Idle Prozess (auch wenn es ja kein richtiger ist), der versetzt die CPU doch schon immer mit den Halt Kommandos in den Suspend, somit ist die Frage was du damit bezwecken willst? Mach einfach gar nix und du erreichst das gleiche...
Auch ist die Frage des reaktivierens aus dem Modus. Im Normalfall holt nur ein Hardwareereignis die CPU aus dem Halt Zustand wieder raus - wie willst du die denn bedienen bzw. programmieren? |
Re: Assembler im Kernel-Mode
Mein Ziel ist es, die Temperatur wieder zu reduzieren, sobald sie einen bestimmten Schwellwert überschritten hat. Soll für ein unbeaufsichtigtes System sein.
|
Re: Assembler im Kernel-Mode
Mit anderen Worten: Wennn die Temperatur überschritten wurde, setzt du die Priorität der anderen laufenden Prozesse runter, so dass der Idle-Task wieder mehr Prozessorzeit bekommt und damit die CPU kühler wird.
Du hast einen deutlichen Aufwand deinen Weg überhaupt zu implementieren. Zum einen arbeitest du dort auf der höchsten Ebene im Kernelbereich - ein kleiner Fehler und das System ist wech. Du musst detaillierte Kenntnisse über die Vorgehensweise des Systems in dem Bereich haben und zum anderen auch die Kenntnisse über die Auswirkungen des Halt Befehls. Auch musst du aufpassen und wissen was du tust, da du Hardwarezugriffe durchführst, welche wieder anderen Elementen missfallen könnten. Auch ist die Frage, ob du mit Delphi in den Bereichen überhaupt noch _vernünftig_ arbeiten kannst. |
Re: Assembler im Kernel-Mode
Ich möchte es zumindest versuchen. Alllerdings glaube ich, dass ich etwas
Starthilfe brauche, weil ich nicht weiß, wie ich den Befehl in Kernel-Ebene abgebe. Was muss ich dazu in Delphi machen. Ich bin doch nicht der erste der das versucht. Hast vielleicht etwas Source for mich? |
Re: Assembler im Kernel-Mode
@Muetze1
Nun eine andere Möglichkeit hat er aber auch nicht. Er kann ja nicht seine Prozess-Priorität hochsetzen und dann sleep aufrufen, denn die abfallende Rechenzeit wird ja nicht dem IDLE-Prozess übergeben, sonden dem nächsten Programm, welches Rechenzeit anfordert. |
Re: Assembler im Kernel-Mode
Zitat:
2. Die abfallende Rechenzeit wird dem nächsten Prozess zugeteilt - u.a. auch dem Idle Prozess. Und damit die anderen Prozesse nicht soviel Rechenzeit bekommen, diese in der Priorität herunter setzen. Nach deiner Aussage würde der Idle Prozess nie Rechenzeit bekommen, weil nach deiner Aussage verteilt er keine Rechenzeit auf diesen. Wann würde dieser denn bei dir überhaupt zum tragen kommen? @Codewalker: Du kannst es gerne versuchen, aber ohne dich vorher vllt. ein halbes Jahr zum Kernel zu belesen und dann vllt. nochmal ein Vierteljahr zu Assembler, wirst du nicht weit kommen. Und Code Ausschnitte bringen dabei eh nix, wenn man nicht weiss, was sie machen und wie und in welchem Umfeld man sie abändern/einsetzen kann. Und in Delphi dies zu probieren - naja, da könntest du wirklich vielleicht der erste sein. Ansonsten gibt es hier fähige Leute im Forum die sich dazu bestimmt nochmal im Detail äussern können. /EDIT: Nicknamen eingesetzt |
Re: Assembler im Kernel-Mode
Zitat:
Am einfachsten einen temperaturgeregelten Kühler für 'ne stärkere CPU draufsetzen. |
Re: Assembler im Kernel-Mode
@Codewalker: Warum willst du so ein Programm unbedingt selber schreiben? Je nachdem, welchen Prozessor du hast, gibt es deutlich effektivere Möglichkeiten als den HALT-State, und der wird unter NT-Systemen ohnehin benutzt, wenn gerade nichts zu tun ist. Und wenn etwas zu tun ist, sollte es auch getan werden, es ist nicht sinnvoll, möglicherweise wichtigen Prozessen einfach die Arbeitsgrundlage wegzunehmen.
Schau dir CPUCool an. Das unterstützt auch die effektiveren Kühlmodi, taktet deinen Prozessor auch temperaturgeregelt runter und ist wirklich sein Geld wert. |
Re: Assembler im Kernel-Mode
Assembler sollte im Kernelmode nicht benutzt werden. Nichtmal IN und OUT sollten direkt in Form der Assemblerbefehle benutzt werden. Dies hat nicht nur praktische Bedeutung (Portabilität dank HAL) sondern ist auch eine Sicherheitsfrage, genau wie die, daß im Kernelmode keine FP-Operationen verwendet werden sollen.
Wir brauchen hier auch garnicht diskutieren, ob irgendwelche Hacker in irgendwelchen e-zines schonmal gezeigt haben, daß man Assembler benutzen kann, denn das ist nicht die Frage. Die Frage ist, ob man ihn benutzen darf. Im Gegensatz zu 9x/Me, wo man anfänglich jeden Treiber fast ausschließlich in Assembler schrieb, rät MS für NT-Systeme genauso ab, wie andere Experten in Treiberfragen (zB OSR). Zitat:
![]() Ach ja, manchmal hat Assembler natürlich auch seine Bewandnis ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz