Das Kefk Network Wiki befindet sich im Testbetrieb.


Virtual 8086 Mode

Aus Kefk.

Wechseln zu: Navigation, Suche

Der Betriebsmodus Virtual 8086 Mode wurde mit dem Intel 80386-Prozessor eingeführt. Da damals – im Jahre 1985 – sich Protected Mode-Betriebssysteme noch nicht am Markt gegen das Real Mode-Betriebssystem DOS durchgesetzt hatten, wurde mit dem Virtual 8086 Modus (kurz: VM86) die Möglichkeit geschaffen, innerhalb eines Protected-Mode-Betriebssystems Real-Mode-Programme (also vor allem DOS-Programme) auszuführen, ohne die Protected-Mode-Umgebung zu verlassen.

Bekanntestes Beispiel hierfür ist die so genannte DOS-Box, die ab Microsoft Windows 3.0 existierte.

Im Protected Mode (PM) können mehrere Programme (so genannte Tasks) quasi parallel ablaufen. Für jeden dieser Tasks kann über ein bestimmtes Bit im Flag-Register festgelegt werden, ob er ein VM86-Task sein soll.

Im Virtual 8086 Modus verhält sich der Prozessor aus Programmsicht wie ein (sehr schneller) 8086. Jedem VM86-Task stehen maximal 1 MiB Arbeitsspeicher zur Verfügung. Dies muss – im Gegensatz zum Real Mode – jedoch nicht das erste Mebibyte im Speicher sein, da die Protected-Mode-Umgebung im Hintergrund automatisch eine Umsetzung der virtuellen Adressen in physische Adressen vornimmt.

Da ein VM86-Task in der Regel unprivilegiert läuft, hat er nur eingeschränkte Zugriffsrechte auf die Hardware oder bestimmte CPU-Register. (Dies ist notwendig, da sonst ein Programm in einer „DOS-Box“ das Protected-Mode-Betriebssystem und somit den Speicherschutz umgehen könnte.) Jeder Hardwarezugriff, den ein VM86-Task macht, wird daher vom Prozessor abgefangen und als Exception an das PM-Betriebssystem gemeldet, welches dann entweder das Verhalten der Hardware nachbilden (simulieren) muss, oder bei unerlaubten Zugriff den VM86-Task und das in ihm laufende Programm beendet. Da unter DOS solche direkten Hardwarezugriffe recht häufig vorkommen, stellt dies an das PM-Betriebssystem große Anforderungen, da eine Vielzahl an Hardwareverhalten nachgebildet werden muss. Da das Abfangen und Simulieren der Hardwarezugriffe außerdem meist langsamer war als der direkte Hardwarezugriff laufen viele DOS-Programme im VM86-Modus spürbar langsamer als im „echten“ Real Mode.

Der VM86-Modus wurde jedoch nicht nur für DOS-Boxen z.B. unter Windows, OS/2, Linux (über das Programm DosEmu) benutzt, sondern auch von DOS selbst. Der Speichertreiber EMM386.EXE von MS-DOS schaltete – vom Benutzer meist unbemerkt – in den Protected Mode, um Zugriff auf den Speicher jenseits der 1-MiB-Grenze zu bekommen. Anschließend startete er einen VM86-Task, in der das normale DOS gestartet wurde. EMM386.EXE benutzte die ebenfalls ab dem 80386er verfügbare Paging-Technik, um den DOS-Programmen mehr Speicher zur Verfügung zu stellen, indem es Speicher von jenseits der 1-MiB-Grenze in den DOS-Adressraum einblendete. (so genannte Upper Memory Blocks UMB und Expanded Memory EMS) Solche Speichermanager existierten auch für die anderen MS-DOS-kompatiblen Betriebssysteme. Sie hießen dort anders, aber ihre prinzipielle Arbeitsweise war identisch.

Mit der schwindenen Bedeutung des Betriebssystems DOS ist auch der VM86-Modus heutzutage eher als historisch anzusehen und wird daher kaum noch verwendet.

Wikipedia
Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort Virtual_8086_Mode, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation.
Persönliche Werkzeuge