Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Interrupts abschalten? (https://www.delphipraxis.net/26780-interrupts-abschalten.html)

Borti 29. Jul 2004 11:33


Interrupts abschalten?
 
Hallo!
ich muss ein Delphi-Programm so schnell wie möglich laufen lassen. hierfür wollte ich, damit dieses Programm die ungeteilte Aufmerksamkeit des Prozessors hat, alle anderen Interrupts deaktivieren: Ist das überhaupt mit Delphi möglich?
Gruß,
Borti

neolithos 29. Jul 2004 11:37

Re: Interrupts abschalten?
 
Nein!

Das einzigste was möglich wäre, aber gefährlich, ist die Prozessprior... auf Realtime zu stellen.

Luckie 29. Jul 2004 11:46

Re: Interrupts abschalten?
 
aber davon rate ich wirklcih ba. Denn dann hat dein Prozess eine höhere Priorität wie wichtige Systemprozsse. Selbst der Taskmamnger läuft nur mit der Priorität hoch. Ich glaube kaum, dass das Verhalten deines Programmes dem Benutzer gefallen würde. Optimiere lieber den Code und versuche, wenn mögloch eine Anpassung der Priorität nach oben zu vermeiden. Windows findet bei der Zuteilung der Rechenzeit meist einen guten Kompromiss, den man eigentlich nur ver "schlimmbessern" kann.

Borti 29. Jul 2004 11:47

Re: Interrupts abschalten?
 
Zitat:

Prozessprior... auf Realtime
die prozessorpriorität auf realtime zu stellen?
Was ist damit gemeint?

Luckie 29. Jul 2004 11:50

Re: Interrupts abschalten?
 
Les dir hiermal mein Threading Tutorial durch, dann wird es dir klarer: http://tutorials.luckie-online.de Was ich da mit Threads mache kann man auch mit Prozessen machen -> MSDN-Library durchsuchenSetPriorityClass.

w3seek 29. Jul 2004 11:51

Re: Interrupts abschalten?
 
Zitat:

Zitat von Borti
die prozessorpriorität auf realtime zu stellen?
Was ist damit gemeint?

Ok, wenn du das schon nicht weisst, traue ich dir schon gar nicht zu, zu wissen, was es mit den interrupts auf sich hat... :roll:

Borti 29. Jul 2004 11:52

Re: Interrupts abschalten?
 
ok, mach ich mal mit den tutorials.
aber gint's nicht die möglichkeit alle anderen prozesse anzuhalten ohne die priorität meines programms zu verändern?

neolithos 29. Jul 2004 11:52

Re: Interrupts abschalten?
 
Tschuldigung!

Nicht Processor sondern Process!

Leider habe ich nur MSDN-Library durchsuchenSetThreadPriority gefunden. Wie man die Priorität des Process im allgemeinen Ändern *mmmh*???

Aber ich warne nochmal: dieses Vorgehen ist in einem Multitask OS nicht gerade gut. Der Rechner könnte sich bei Programmierfehlern schnell aufhängen.

EDIT: Man bin ich heute schlecht in der Reschschreibung

w3seek 29. Jul 2004 11:55

Re: Interrupts abschalten?
 
Zitat:

Zitat von Borti
aber gint's nicht die möglichkeit alle anderen prozesse anzuhalten ohne die priorität meines programms zu verändern?

Prozesse kann man nicht anhalten. Man kann lediglich Threads suspendieren. Und wenn ueberhaupt auch nur wenn du die entsprechenden Rechte dazu hast, System-Threads kannst du jedenfalls nicht anhalten. Ausserdem wuerd ich lieber den code deiner Anwendung optimieren, als solche sehr kritischen dinge zu tun...

Luckie 29. Jul 2004 11:59

Re: Interrupts abschalten?
 
Zitat:

Zitat von Borti
aber gint's nicht die möglichkeit alle anderen prozesse anzuhalten ohne die priorität meines programms zu verändern?

Das widerspricht zum einem der Philosphie eines preemtiven Multitasking Betriebssystemes zum anderen ist es sehr gefährlich für die anderen Anwendungen und für die Stabilität des Betriebssystems überhaupt.

Bei einem koorperativen Multitsaking geht das. Dort ist jeder Prozess selber dafür verantwortlich Rechenzeit abzugeben. Und wenn er das nicht tut, dann "verhungern" die anderen Threads. Da waren die anderen Anwendungen im wahrsten Sinne des Wortes auf die Koorparationsbereitschaft der anderen Prozesse angewiesen. da dies wie schon erwähnt gefährlich ist, gibt es ab 32-Bit Window snur das preemptive, also dass das windows die Zuteilung der Rechenzeit übernimmt. Wie man die noch etwas beeinflussen kann, was das für auswirkungen hat und wie es umgesetzt wird, steht in meinem Tutorial.

Luckie 29. Jul 2004 12:01

Re: Interrupts abschalten?
 
Zitat:

Zitat von w3seek
Man kann lediglich Threads suspendieren.

Um w3seek zu ergänzen. Das ist nicht weniger ungefährlich. Hälts du einen Thread an, der gerade in einen kritischen Abschnitt eingetreten ist, blockierst du eventuell andere Threads, die auf die Ressourcen warten. Und das kann ebendso fatale und unkontrollierbare Folgen haben. Finger weg von so was, kann ich da nur sagen.

rantanplan99 29. Jul 2004 12:04

Re: Interrupts abschalten?
 
Hm, ich meine Interrupts zu 'deaktivieren' geht schon. zumindest ging es früher.

also in Assembler gibt es die Befehle CLI und STI, ersterer unterbindet Hardware-Interrupts, und STI das Gegenteil. Das verwendet man z.B. wenn man eine Routine zur Interrupt behandlung schreibt, und am Anfang ruft man CLI auf, am Ende der routine dann STI, um zu verhindern das während der Behandlung eines Hardware-Interrupts, die Routine durch einen Erneuten Interrupt unterbrochen wird. Zumindest war das bei den älteren Prozessoren so die im Real-Mode liefen, ob das bei den neuen Prozessoren so funktioniert, die im Protected-Mode arbeiten weiss ich nicht, ich bezweifel es aber.

Generell ist das unterbinden von Interrupts eine saublöde Idee, die fatal enden kann, bzw. wird, weil du die ja für längere Zeit unterbinden willst.

w3seek 29. Jul 2004 12:06

Re: Interrupts abschalten?
 
Zitat:

Zitat von Luckie
Das ist nicht weniger ungefährlich. Hälts du einen Thread an, der gerade in einen kritischen Abschnitt eingetreten ist, blockierst du eventuell andere Threads, die auf die Ressourcen warten. Und das kann ebendso fatale und unkontrollierbare Folgen haben.

Das ist so nicht ganz korrekt. Sofern sich der Thread gerade im kernel-mode bereich befindet wird er erst beim zurueck-eintreten in den usermode angehalten (sofern er von user-mode code suspendiert wird), wenn ich mich richtig erinnere. Ansonsten waere das eine sehr fatale Sicherheitsluecke!

Borti 31. Jul 2004 11:56

Re: Interrupts abschalten?
 
ok, also, wenn ich mal zusammenfassen darf:
alles in allem sollt ich die finger davon lassen, weil die Chancen, dass ich mein OS zum Abschmieren bring sehr, sehr groß sind.
gruß,
Borti

Tubos 31. Jul 2004 12:47

Re: Interrupts abschalten?
 
Und noch was: wenn du die Priorität eines Prozesses über "Normal" hinweg erhöhen willst, muss das Programm unter Windows NT (also NT, 2000, XP) mit Administratorrechten gestartet werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 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