x86-Programmierung und -Betriebsarten (Teil 6)

Virtuelle Maschinen und Virtual-8086-Monitor

Im Virtual Mode bilden die Hardware der CPU und der Virtual-8086-Monitor eine so genannte virtuelle Maschine. Bei einem System mit Multitasking-Unterstützung, kann das System für jeden Task eine eigene virtuelle Maschine bilden. Da die virtuellen Maschinen ständig für kurze Zeit bedient werden, findet Multitasking statt. Damit können beispielsweise ein Compiler, der Drucker-Spooler und ein Editor parallel arbeiten. Windows 9x/NT und OS/2 machen sich solche virtuellen Maschinen auf der Basis des Virtual Modes zu Nutze, um Real-Mode-Programme in der DOS-Box parallel zu den richtigen Protected-Mode-Anwendungen ablaufen zu lassen.

Der Virtual-8086-Monitor ist ein Systemprogramm (typischerweise ein Teil des Betriebssystem-Kernels), das zur Erzeugung und Verwaltung der virtuellen 8086-Tasks dient (engl. to monitor, dt. überwachen). Dabei stellt die Hardware der CPU über ein TSS einen Satz virtueller Register sowie einen virtuellen Speicherbereich entsprechend dem ersten MByte des linearen Adressraums des Tasks zur Verfügung. Außerdem führt der Prozessor die Befehle aus, die diese Register und den Adressraum des Tasks betreffen. Aufgabe des Virtual-8086-Monitors ist es, die Schnittstellen der virtuellen Maschine beziehungsweise des virtuellen 8086-Tasks nach außen hin zu überwachen.

Die Schnittstellen werden von Interrupts, Exceptions und den I/O-Anweisungen gebildet, sie übernehmen also die Aufgabe der physikalischen Schnittstellen (zum Beispiel Steuerregister) in einem gewöhnlichen 8086-PC. Der Monitor stellt sicher, dass sich die virtuelle 8086-Maschine als eigenständiger Task in das weit umfangreichere 32-Bit-System im Protected Mode einfügt, ohne andere Tasks oder möglicherweise sogar das Betriebssystem selbst zu stören.