AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Assembler im Kernel-Mode

Ein Thema von Codewalker · begonnen am 23. Mai 2006 · letzter Beitrag vom 2. Jun 2006
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#1

Assembler im Kernel-Mode

  Alt 23. Mai 2006, 07:36
Hallo zusammen.

Ich möchte gerne bei meinem Rechner die Leistung verringern indem ich ein HALT-Kommando an die CPU sende.

Delphi-Quellcode:
asm
  HLT ; thx to Frickel[...]TM
end;
In diesem Thread habe ich schon erfahren, dass dies wohl ein privilegiertes Kommando ist und nur aus Ring0 (= Kernel) gesendet werden kann und wurde dabei auf die uAllCollection verwiesen. Leider hat mir das nicht wirklich weitergeholfen. Kennt sich jemand mit der uAllCollection aus oder kann mir sagen, wie ich das realisieren kann?
Thomas
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Assembler im Kernel-Mode

  Alt 23. Mai 2006, 08:19
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?
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Assembler im Kernel-Mode

  Alt 23. Mai 2006, 11:32
Mein Ziel ist es, die Temperatur wieder zu reduzieren, sobald sie einen bestimmten Schwellwert überschritten hat. Soll für ein unbeaufsichtigtes System sein.
Thomas
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Assembler im Kernel-Mode

  Alt 23. Mai 2006, 11:54
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.
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Assembler im Kernel-Mode

  Alt 23. Mai 2006, 12:02
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?
Thomas
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#6

Re: Assembler im Kernel-Mode

  Alt 23. Mai 2006, 12:03
@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.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Assembler im Kernel-Mode

  Alt 23. Mai 2006, 12:09
Zitat von Vjay:
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.
1. Wer sagt denn, dass er seine eigene hochsetzen soll? Dann würde der Idle Task nie zum Zuge kommen.
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

Re: Assembler im Kernel-Mode

  Alt 23. Mai 2006, 12:11
Zitat:
Mein Ziel ist es, die Temperatur wieder zu reduzieren, sobald sie einen bestimmten Schwellwert überschritten hat.
Hast du auch mal daran gedacht einfach die Kühlleistung raufzusetzen?

Am einfachsten einen temperaturgeregelten Kühler für 'ne stärkere CPU draufsetzen.
$2B or not $2B
  Mit Zitat antworten Zitat
Frickeldrecktuxer_TM
(Gast)

n/a Beiträge
 
#9

Re: Assembler im Kernel-Mode

  Alt 23. Mai 2006, 12:21
@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.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#10

Re: Assembler im Kernel-Mode

  Alt 23. Mai 2006, 12:35
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 von Peter Viscarola (OSR):
DON'T EMBED ASSEMBLY LANGUAGE IN WINDOWS DRIVERS.

It's highly system specific, it's WAAAAAY too easy to THINK you know what you're doing ("it worked on DOS") but get an unexpected result (as in INT 1 versus INT 3), and it won't even compile in the x64 cross compiler.

It has NEVER been acceptable to use an INT 1 or an INT 3 or any other such convention in a Windows NT driver. Really.
[Quelle]

Ach ja, manchmal hat Assembler natürlich auch seine Bewandnis ...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz