![]() |
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 ... |
Re: Assembler im Kernel-Mode
Ich merk schon... das wird nicht so einfach. Ich habe mir auch schon CPUCool angesehen, aber ich möchte das selbst schreiben, weil ich die Funktion mit einigen anderen in mein Programm einbinden will. Dann werd ich mich da wohl durchbeißen müssen. Gibt's denn keine Beispiele zu den Stromsparmodi die CPUCool einsetzt. (Das System ist ein kleiner Server mit Xeon-Prozessor).
@Frickeldrecktuxer_TM: Ich will den Programmen ja nicht die Arbeitsgrundlage entziehen, sondern es soll nur etwas weniger zur Verfügung stehen. Im BIOS habe ich einen Eintrag gefunden der "Processor Throttle" heisst. Damit kann man das System in 10%-Schritten auf bis zu 50% reduzieren. Wie läuft das denn dann? Kann man nicht Rechenzeit beanspruchen ohne zu rechen? (Ich ahne schon, nur im Kernel-Mode?) Vielleicht hat ja jemand noch einen alternativen Vorschlag, wie man das ganze halbwegs allgemeingültig lösen kann (ohne dabei auf spezielle Hardware zu setzen, wie regelbare Kühler) @Muetze1: Hast du vielleicht einen Lesetipp dazu für mich? |
Re: Assembler im Kernel-Mode
Zitat:
|
Re: Assembler im Kernel-Mode
ja klar, nur der nimmt halt nur die Idle-Time. Ich würde den dann gern mit höherer Priorität als "Idle" ausführen. Kann man dessen Priorität nicht ändern?
|
Re: Assembler im Kernel-Mode
Zitat:
|
Re: Assembler im Kernel-Mode
Zitat:
Zitat:
Zitat:
Wie warm wird den dein Prozessor? Vielleicht erfährt man dann etwas mehr über deine Motivation, den Prozessor kühler zu halten. |
Re: Assembler im Kernel-Mode
Also man könnte doch die Taktfrequenz ändern. Wenn bei 1,7GHz die CPU-Last bei z.B. 20% liegt, könnte man doch den Multiplikator verkleinern, dann wäre die CPU z.B auf 300Mhz getaktet und würde Strom sparen. Die Auslastung wäre dann evtl. 60%...
Die Frage ist nur, wie man mit Delphi den Multiplikator ändert. Ich habe dazu nix im WWW gefunden.. |
Re: Assembler im Kernel-Mode
Zitat:
|
Re: Assembler im Kernel-Mode
Zitat:
|
Re: Assembler im Kernel-Mode
Also mit Asm geht das?
Naja, man kann doch mit der giveio.sys oder mit der uallCollecton direkt auf die Hardware zugreifen, oder? |
Re: Assembler im Kernel-Mode
Zitat:
|
Re: Assembler im Kernel-Mode
Hi,
ich will die CPU ja nicht anhalten, ich will sie runtertakten. Hat da jmd ein Codebeispiel oder eine WWW-Adresse zu? |
Re: Assembler im Kernel-Mode
das ist für jede CPU anders. Du musst das MSR (modelspefic register) und die Werte kennen, die den jeweiligen Multiplikator festlegen.
|
Re: Assembler im Kernel-Mode
Gibt es noch ne andere Möglichkeit?
FSB ändern oder so? |
Re: Assembler im Kernel-Mode
Für den FSB musste den PLL kennen, der auf dem Mainboard verbaut ist und wissen wie der angespeuert wird.
|
Re: Assembler im Kernel-Mode
Zitat:
Klar, man kann auch gleich einen Treiber schreiben, der einen von dir zu erfindenden Binärcode als Interpreter auswertet um jede beliebige Aktion immer gleich im Kernelmode auszuführen .... :shock: Zitat:
Zitat:
Sag mal, du hast dich noch nicht gefragt, wie es kommt, daß du immer eine simple Lösung willst, egal was dir gerade vorgeschlagen wird? Geh doch bitte erstmal Hausaufgaben machen ... Ist doch wahr! :roll: :| |
Re: Assembler im Kernel-Mode
Zitat:
:freak: |
Re: Assembler im Kernel-Mode
Mit anderen Worten: es fehlt ihm hier an grundlegendem Wissen, somit ist die Diskussion hier nicht gross von Nutzen.
|
Re: Assembler im Kernel-Mode
Zitat:
|
Re: Assembler im Kernel-Mode
Zitat:
/EDIT2: Juhu verklickt... *peinlich* :oops: :wall: |
Re: Assembler im Kernel-Mode
Oh mann. Ich hätte nicht gedacht, dass ich da so was lostrete. Da fehlt es wohl an generellem Material darüber....
Ich werd mich damit jetzt mal ein wenig befassen, auch wenn ich nicht wirklich weiß, wo ich anfangen soll. :gruebel: Zitat:
|
Re: Assembler im Kernel-Mode
@Olli
Zitat:
Mich hat das ganze einfach interessiert. Im übrigen habe ich unter DOS mit Assembler gearbeitet und mir ist auch klar, was direkter Zugriff auf die Hardware unter Windows bedeutet. Trotzdem danke für die schnellen Antworten. |
Re: Assembler im Kernel-Mode
Zitat:
(;)) |
Re: Assembler im Kernel-Mode
Zitat:
Zitat:
|
Re: Assembler im Kernel-Mode
Also dann ist gut. Unter Dos habe ich mit Asm programmiert wo es langsam mit protected mode losging, als im realmode. Das war auf 80386, bei 80486 kamen ja noch ein paar sachen dazu und da war ich einfach nur zu faul damit weiterzumachen. Dank dem Turbopascal bin ich ja dann auf bei Delphi gelandet. Obwohl ich glaube, das man mit C/C++ mehr machen kann und auch mehr dazu im Inet findet. Leider bin ich zu dusselig für C, das wirkt auf mich durch die ganzen Klammern so kompliziert...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 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