![]() |
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 |
Re: Interrupts abschalten?
Nein!
Das einzigste was möglich wäre, aber gefährlich, ist die Prozessprior... auf Realtime zu stellen. |
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.
|
Re: Interrupts abschalten?
Zitat:
Was ist damit gemeint? |
Re: Interrupts abschalten?
Les dir hiermal mein Threading Tutorial durch, dann wird es dir klarer:
![]() ![]() |
Re: Interrupts abschalten?
Zitat:
|
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? |
Re: Interrupts abschalten?
Tschuldigung!
Nicht Processor sondern Process! Leider habe ich nur ![]() 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 |
Re: Interrupts abschalten?
Zitat:
|
Re: Interrupts abschalten?
Zitat:
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. |
Re: Interrupts abschalten?
Zitat:
|
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. |
Re: Interrupts abschalten?
Zitat:
|
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 |
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