www.wikidata.de-de.nina.az
Der Betriebsmodus Virtual 8086 Mode kurz VM86 wurde mit dem 80386 Prozessor von Intel im Jahr 1985 eingefuhrt Da sich zu dieser Zeit Protected Mode Betriebssysteme noch nicht am Markt gegen das Real Mode Betriebssystem DOS durchgesetzt hatten wurde mit dem Virtual 8086 Mode die Moglichkeit geschaffen innerhalb eines Protected Mode Betriebssystems Real Mode Programme also vor allem DOS Programme auszufuhren ohne die Protected Mode Umgebung zu verlassen Bekanntestes Beispiel hierfur ist die so genannte MS DOS Eingabeaufforderung die ab Windows 3 0 existierte Inhaltsverzeichnis 1 Nutzung 2 Verbesserter Virtual 8086 Mode 2 1 AMD Ryzen 3 Bedeutung auf 64 Bit x86 Systemen x64 4 Weblinks 5 EinzelnachweiseNutzung BearbeitenIm Protected Mode konnen mehrere Programme so genannte Tasks quasi parallel ablaufen Fur jeden dieser Tasks kann uber ein bestimmtes Bit im Statusregister festgelegt werden ob er ein VM86 Task sein soll Im Virtual 8086 Modus verhalt sich der Prozessor aus Programmsicht wie ein Prozessor im Real Mode Es ist fur ein Programm aber leicht feststellbar ob es im Real Mode oder im VM86 Mode lauft Jedem VM86 Task stehen maximal ein Mebibyte Arbeitsspeicher zur Verfugung Dies muss jedoch im Gegensatz zum Real Mode nicht das erste Mebibyte im physischen 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 lauft hat er nur eingeschrankte Zugriffsrechte auf die Hardware oder bestimmte CPU Register Dies ist notwendig da sonst ein Programm im VM86 Modus das Protected Mode Betriebssystem und somit den Speicherschutz umgehen konnte Jeder Hardwarezugriff den ein VM86 Task tatigt wird daher vom Prozessor abgefangen und als Ausnahmesituation englisch Exception an das Protected Mode Betriebssystem gemeldet welches dann entweder das Verhalten der Hardware nachbilden simulieren muss oder bei unerlaubtem Zugriff den VM86 Task und das in ihm laufende Programm beendet Da unter DOS solche direkten Hardwarezugriffe recht haufig vorkommen stellt dies an das Betriebssystem grosse Anforderungen da eine Vielzahl an Hardwareverhalten nachgebildet werden muss Da das Abfangen und Simulieren der Hardwarezugriffe ausserdem meist langsamer ist als der direkte Hardwarezugriff laufen viele DOS Programme im VM86 Modus spurbar langsamer als im echten Real Mode Der VM86 Modus wurde jedoch nicht nur fur diverse DOS Fenster z B unter Windows Eingabeaufforderung OS 2 DOS Modus Linux uber 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 Mebibyte Grenze zu bekommen Anschliessend startete er einen VM86 Task in den das bereits laufende DOS dann verlegt wurde EMM386 EXE benutzte die ebenfalls ab dem 80386er verfugbare Paging Technik um den DOS Programmen mehr Speicher zur Verfugung zu stellen indem es Speicher von jenseits der 1 Mebibyte Grenze in den DOS Adressraum einblendete Expanded Memory EMS Solche Speichermanager existieren auch fur die anderen MS DOS kompatiblen Betriebssysteme Sie heissen dort anders aber ihre prinzipielle Arbeitsweise ist identisch Verbesserter Virtual 8086 Mode BearbeitenAls Virtual 8086 mode enhancements 1 kurz VME Virtual Mode Extensions kamen bei spateren 80486 Modellen und beim Pentium weitere Features fur den VM86 Modus hinzu die es erlauben dass bestimmte Interrupt Serviceroutinen komplett im VM86 Modus abgearbeitet werden konnen ohne dass aufwandige Taskwechsel in das Protected Mode Betriebssystem erfolgen mussen Dies ermoglicht eine Ausfuhrungsgeschwindigkeit die dem echten Real Mode sehr nahekommt vor allem da unter DOS Software Interrupts sehr haufig sind wo sie als Aufruf ins Betriebssystem und von BIOS Routinen benutzt werden Mit dem in x86 Prozessoren ab spateren 80486 CPUs verfugbaren CPUID Funktionsaufruf lasst sich auslesen ob ein Prozessor die verbesserten Virtual Mode Extensions bietet Dazu muss in Register EAX der Wert 1H stehen wenn die CPUID Funktion ausgefuhrt wird In Register EDX findet sich anschliessend im zweiten Bit Bit 1 die Information uber die Verfugbarkeit von VME 1 Bei vielen Betriebssystemen lassen sich die CPUID Informationen relativ einfach auslesen Unter Linux z B reicht es sich den Inhalt von a href Procfs html title Procfs proc a cpuinfo anzeigen zu lassen In der Zeile flags findet sich b vme b wenn der verbesserte VM86 Modus vorhanden ist Beispiel Prozessor Pentium II cat proc cpuinfo grep m 1 e flags flags fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pse36 mmx fxsr up Auf einigen BSD Systemen werden die Flags als Features bei den Textmeldungen beim Systemstart ausgegeben die auch mit a href Dmesg html title Dmesg dmesg a auf einem laufenden System angezeigt werden konnen Auch das Programm dmidecode kann bei geeigneten Systemen DMI steht fur Desktop Management Interface die CPU Flags ausgeben AMD Ryzen Bearbeiten Beim AMD Ryzen Prozessor Mitte 2017 ist die Implementierung der Virtual Mode Extensions VME fehlerhaft so dass Software die diese Erweiterung benutzt nicht stabil lief Da der Virtual 8086 Modus nur im 32 Bit Betriebsmodus verfugbar ist betraf der Fehler nur 32 Bit Betriebssysteme allerdings auch dann wenn diese virtualisiert ausgefuhrt wurden Der Hardwarefehler kann meist in Virtuellen Maschinen etwa VirtualBox umgangen werden indem die Unterstutzung fur VME per CPUID fur das Gastsystem deaktiviert wird Mit der Aktualisierung auf AGESA Version 1 0 0 6 von Ende 2017 wurde der VME Bug von AMD per Microcode Update behoben 2 Bedeutung auf 64 Bit x86 Systemen x64 BearbeitenMit der schwindenden Bedeutung des Betriebssystems DOS ist auch der VM86 Modus nunmehr eher als historisch anzusehen und wird daher kaum noch verwendet auch wenn er in jedem aktuellen x86 kompatiblen Prozessor noch im 32 Bit Modus ab Intel Architekture 32 Bit kurz IA 32 verfugbar ist Auf einem 64 Bit x86 System x64 eine Erweiterung der IA 32 gibt es zwar einen Compatibility Mode der verwendet wird um 16 Bit Protected Mode oder 32 Bit Programme auf einem 64 Bit Betriebssystem auszufuhren jedoch fehlt darin der Virtual86 Mode Abhilfe schaffen Emulatoren wie z B DOSBox die ein 8086 kompatibles System mit PC typischer Hardwareumgebung komplett in Software nachbilden Jeder 64 Bit x86 Prozessor x64 bietet mit dem Legacy Mode vollwertiges 32 Bit x86 oder anders ausgedruckt Jeder x64 Prozessor ist auch ein vollwertiger 32 Bit x86 Prozessor IA 32 Lauft darauf ein 32 Bit Betriebssystem so ist normalerweise auch der verbesserte VM86 Modus VME weiterhin verfugbar Auch unter einem 64 Bit Betriebssystem kann in einer virtuellen Maschine der 32 Bit Legacy Mode inklusive VME verwendet werden Beispielsweise kann ein auf einem 64 Bit Betriebssystem das im 64 Bit Modus lauft virtualisiert ausgefuhrtes 32 Bit Betriebssystem alle im Legacy Mode vorhandenen Funktionen nutzen und damit auch VME wenn dieses per CPUID angezeigt ist In 64 Bit Umgebungen spielt der Real Mode und damit auch der Virtual 8086 Mode bzw VME keine Rolle mehr Weblinks BearbeitenVirtual Mode Extensions on the Pentium Processor Robert Collins Jim Brooks englisch Einzelnachweise Bearbeiten a b Julio Sanchez Maria P Canton Software Solutions for Engineers and Scientists CRC Press 2018 ISBN 978 1 4200 4303 7 S 75 englisch Volltext in der Google Buchsuche EDX feature information Bit 1 Virtual 8086 mode enhancements Christof Windeck AMD Ryzen Kommende BIOS Updates patchen auch VME Bug In Heise online 1 Juni 2017 Abgerufen am 7 Juli 2017 VBefehlssatzerweiterungen der x86 Architektur 16 Bit 32 Bit IA 32 64 Bit x64 Betriebsmodi Real Mode Protected Mode Virtual 8086 Mode System Management Mode Long Mode Compatibibility ModeBefehlssatzerweiterungen x87 PAE NX AMD64 Intel 64 x64 HTT VT x AMD V VIA VT 3DNow MMX SSE SSE2 SSE3 SSSE3 SSE4 SSE4a SSE5 F16C AVX CLMUL AES FMA TSX BMI MPX SGX Abgerufen von https de wikipedia org w index php title Virtual 8086 Mode amp oldid 238389265