Startseite   |  Site map   |  A-Z artikel   |  Artikel einreichen   |   Kontakt   |  
  


informatik artikel (Interpretation und charakterisierung)

Games

Dos ist nicht reentrant


1. Java
2. Viren

Da das TSR-Programm über die Tastatur jederzeit aktiviert werden kann, ist es möglich, daß es die Ausführung einer gerade aufgerufenen DOS-Funktion unterbricht. Dies muß noch nicht zwangsläufig zu Problemen führen, solange das TSR-Programm nach seiner Beendigung ordnungsgemäß in die unterbrochene DOS-Funktion zurückkehrt. Ein Problem entsteht jedoch dann, wenn das TSR-Programm seinerseits DOS-Funktionen aufruft, was praktisch nicht zu vermeiden ist. Hier tritt das Problem der Reentranz auf.

Dieser Begriff steht für die Fähigkeit eines Systems, seinen Programmcode von mehreren Programmen gleichzeitig aufrufen und ausführen zu lassen. Gerade diese Reentranz ist bei DOS nicht gegeben, da es als Singletask-System davon ausgeht, daß die einzelnen DOS-Funktionen nicht gleichzeitig (parallel), sondern eine nach der anderen (seriell) aufgerufen wird.

Um dem Reentranz-Problem aus dem Weg zu gehen, bleibt einem TSR-Programm nur die Möglichkeit, die Aktivierung erst dann zu erlauben, wenn gerade keine DOS-Funktion ausgeführt wird. Dabei kommt DOS den Entwicklern solcher Programme entgegen, indem es das sogenannte INDOS-Flag bereitstellt. Es handelt sich dabei um einen Zähler, der die Verschachtelungstiefe von DOS-Aufrufen zählt. Enthält er den Wert 0, wird gerade keine DOS-Funktion ausgeführt, während der Wert 1 die aktuelle Ausführung einer DOS-Funktion anzeigt. Wenn eine DOS-Funktion bei ihrer Ausführung eine andere DOS-Funktion aufruft, kann diese Flag auch größere Werte enthalten.

Der Inhalt dieses Flags kann direkt aus dem Speicher ausgelesen werden, da sich seine Adresse nach dem Booten des Systems nicht mehr ändert. Es ist sinnvoll diese Adresse während der Installation des TSR-Programms mit der DOS-Funktion 34h, die nach ihrem Aufruf die Adresse des INDOS-Flags im Registerpaar ES:BX zurückliefert, in einer Variablen zu speichern. Die Abfrage dieses Flags wird nun so in den Interrupt-Handler für den Interrupt 09h eingegliedert, daß er zwar weiterhin zunächst die Betätigung des Hotkeys überprüft, in diesem Fall jedoch die Aktivierung des TSR-Programms nur dann erlaubt, wenn das INDOS-Flag den Wert 0 enthält.

Ein weiteres Problem bringt die Aktivierung des TSR-Programms von der DOS-Oberfläche heraus. Da sich der Befehlsinterpreter des DOS (COMMAND.COM) selbst einiger DOS-Funktionen zur Ausgabe des Prompts und der Entgegennahme von Eingaben durch den Anwender bedient, enthält das INDOS-Flag hier fortwährend den Wert 1. In diesem speziellen Fall wäre die Unterbrechung zwar relativ sicher, doch müßte festgestellt werden, ob das INDOS-Flag den Wert 1 enthält, weil eine DOS-Funktion von einem transienten Programm oder vom DOS-Befehlsinterpreter aufgerufen wird.

Doch auch für diesen Fall gibt es eine Lösung. Sie beruht darauf, daß das DOS in periodischen Abständen den Interrupt 28h aufruft, der für die kurzzeitige Aktivierung von Hintergrundprozessen verantwortlich ist. Wird dieser Interrupt aufgerufen, kann man grundsätzlich davon ausgehen, das DOS unbeschäftigt und es relativ sicher ist, das TSR-Programm zu aktivieren. Dieser Interrupt trägt deshalb auch den Namen DOS-Idle (dt. idle = unbeschäftigt).

Dieses Verhalten ausnutzend, wird beim Start des TSR-Programms ein neuer Handler für den Interrupt 28h installiert. Er ruft zunächst den alten Handler für diesen Interrupt auf und prüft dann, ob der Anwender den Hotkey betätigt hat. Trifft dies zu, kann das TSR-Programm aktiviert werden, auch wenn das INDOS-Flag einen Wert ungleich 0 enthält.

Eine weitere Einschränkung muß hier jedoch insofern gemacht werden, als daß eine Aktivierung des TSR-Programms nur dann erlaubt werden sollte, wenn innerhalb des Systems keine zeitkritischen Aktionen durchgeführt werden.

 
 

Datenschutz
Top Themen / Analyse
indicator Frequency/Voltage Control: Heiße Eisen
indicator Parallele und serielle Datenübertragung
indicator SCANTECHNICKEN -
indicator Die Datenautobahn
indicator The Internet - What is it?-
indicator Strings
indicator Gefahren des Polymorphismus
indicator Dedizierte Kommunikation in der Post-Fernseh-Ära
indicator Einleitung zu MFC
indicator Der Projektplan -


Datenschutz
Zum selben thema
icon Netzwerk
icon Software
icon Entwicklung
icon Windows
icon Programm
icon Unix
icon Games
icon Sicherheit
icon Disk
icon Technologie
icon Bildung
icon Mp3
icon Cd
icon Suche
icon Grafik
icon Zahlung
icon Html
icon Internet
icon Hardware
icon Cpu
icon Firewall
icon Speicher
icon Mail
icon Banking
icon Video
icon Hacker
icon Design
icon Sprache
icon Dvd
icon Drucker
icon Elektronisches
icon Geschichte
icon Fehler
icon Website
icon Linux
icon Computer
A-Z informatik artikel:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z #

Copyright © 2008 - : ARTIKEL32 | Alle rechte vorbehalten.
Vervielfältigung im Ganzen oder teilweise das Material auf dieser Website gegen das Urheberrecht und wird bestraft, nach dem Gesetz.
dsolution