Virtual DOS Machine

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Die Virtual DOS Machine (VDM) ist eine virtuelle Maschine, die in einigen Betriebssystemen der Microsoft-Windows-NT-Familie enthalten ist, um die Kompatibilität mit älterer, für MS-DOS entwickelter Software sicherzustellen.

Funktionsweise[Bearbeiten]

Ausgehend von ntvdm.exe, simuliert eine Virtual DOS Machine weitgehend eine DOS-Umgebung, einige PC-Hardware Komponenten (z. B. Prozessor in Real Mode, Intel 8253/8254 PIT, CGA/EGA/VGA-/PC-BIOS), sowie gängige DOS-Speicheraddressierungsschnittstellen (EMS/XMS/DPMI) für Programme, die nicht für den Win32-API ausgelegt wurden, sondern für die INT-21h-Schnittstelle bzw. direkten Hardwarezugriff programmiert sind. Über diese Emulationsschicht können die meisten DOS-Programme unter Windows ausgeführt werden. Für die Programme scheint es, als ob sie sich auf einer DOS-Maschine befänden, sie haben jedoch keinen direkten Kontakt zu den Ressourcen des Windows-Betriebssystems oder zu der Hardware. Anforderungen an das Betriebssystem (z. B. Dateien lesen oder schreiben) werden durch die Virtual DOS Machine in die entsprechenden Windows-Funktionen übersetzt. Maschineninstruktionen die unter Windows nicht zulässig sind (diese führen zu Exceptions), aber in DOS ungeschützt wären, werden abgefangen und dann entweder emuliert oder übersetzt (z. B. die int, in/out, cli/sti, hlt Instruktionen), oder weiterhin unterbunden (z. B. den direkten Zugriff auf Datenträgern). Es können mehrere Instanzen einer Virtual DOS Machine ausgeführt werden. Somit können auf einem Windows-Betriebssystem mehrere virtuelle DOS Maschinen gleichzeitig laufen. Über spezielle Wrapper-Funktionen ist es möglich, von Windows aus auf den Inhalt der VDM zurückzugreifen.

Die Virtual DOS Machine macht sich den Virtual 8086 Mode der x86-Prozessoren zunutze, um DOS-Programme auszuführen. NTVDM wird bei 64-Bit-Versionen von Windows nicht mehr mit ausgeliefert, da der Virtual-86-Modus nicht mehr funktioniert wenn der Prozessor bereits in den 64-Bit-Modus geschaltet wurde, womit die Grundlage für das Funktionieren der NTVDM wegfällt.[1] Alternativen zur NTVDM sind entweder Emulatoren, Virtuelle Maschinen oder Interpreter.

Mithilfe eines Emulators, bei dem ein gesamter PC inklusive Prozessor in Software nachgebildet wird, können DOS-Programme nicht nur auf Windows sondern meißt auf einer vielzahl weiterer Betriebssysteme und Rechnerarchitekturen ausgeführt werden. Ein Beispiel dafür ist Bochs, aber auch virtuelle Maschinen wie Virtual PC, VirtualBox, VMware und QEMU können zum virtualisieren oder emulieren von DOS genutzt werden. Weil dabei ein vollständiger PC emuliert bzw. virtualisiert wird, muss darauf zuerst ein DOS-Betriebssystem installiert werden. FreeDOS steht unter der GPL und ist somit frei (quelloffen und gratis) verfügbar, es kann aber auch ein bereits vorhandenes oder gekauftes MS-DOS oder ein dazu kompatibles Betriebssystem verwendet werden. Zusätzlich sind DOS-Treiber nötig, damit bestimmte Funktionen wie etwa Audio-Ausgabe genutzt werden können. Weil eine Emulation zudem sehr aufwendig ist, läuft ein emuliertes DOS meist um einiges langsamer ab als das nativ gestartete Betriebssystem. Bei einer Virtualisierung werden Teile der emulierten Hardware ebenfalls nativ ausgeführt, was einen Geschwindigkeitsvorteil bringt.

Eine weniger aufwendige Alternative zur NTVDM stellt ein Interpreter dar, wie z. B. DOSBox, weil die Installation eines kompatiblen DOS-Betriebssystems entfällt. Außerdem bietet DOSBox eine Vielzahl weiterer Möglichkeiten zur Steuerung der Umgebung, in der ein DOS-Programm abläuft, und benötigt zudem keine Treiber für emulierte Hardware.

Einzelnachweise[Bearbeiten]

  1. http://support.amd.com/TechDocs/24593.pdf "AMD64 Architecture Programmer’s Manual – Volume 2: System Programming", Seite 11 ff.

Literatur[Bearbeiten]

  • Andrew S. Tanenbaum, Moderne Betriebssysteme, Pearson Studium Verlag 2003, ISBN 3-8273-7019-1

Siehe auch[Bearbeiten]