Tryb wirtualny

Tryb wirtualny (zwany także V86 lub Virtual 8086) – specjalny tryb pracy procesorów o architekturze IA-32, dostępny w trybie chronionym, który umożliwia uruchamianie programów przeznaczonych dla trybu rzeczywistego. W trybie wirtualnym symulowane jest działanie analogiczne do procesora Intel 8086 (faktycznie można uruchamiać kod także dla 8088, 80186 i 80188), tzn. otrzymuje dostęp do 1 MB pamięci operacyjnej oraz odpowiednich rejestrów procesora i może wykonywać tylko te rozkazy, które mają sens w takim otoczeniu.[1]

W odróżnieniu od natywnego trybu rzeczywistego, wszelki dostęp do portów wejścia-wyjścia (ang. I/O ports) jest sankcjonowany przez system operacyjny pracujący w trybie chronionym. Podobnie przerwania są kontrolowane i obsługiwane przez system operacyjny. Umożliwia to bezkonfliktową pracę „zwykłych” procesów systemu wraz z procesami w trybie wirtualnym – możliwe jest jednoczesne uruchomienie wielu procesów w trybie V86.

Ponieważ to na systemie operacyjnym ciąży obsługa dostępu do portów wejścia-wyjścia oraz przerwań, system musi emulować sprzęt jak i udostępniać określoną funkcjonalność 16-bitowego systemu operacyjnego. Innymi słowy system musi konwertować żądania procesu w trybie V86 (np. zapis do określonego portu) na akcje sterownika urządzania.

Tryb V86 jest wykorzystywany głównie do uruchamiania tzw. programów DOS-owych, czyli programów napisanych do działania w trybie rzeczywistym procesorów o architekturze x86. Systemy Windows posiadają wbudowane mechanizmy umożliwiające uruchamianie takich programów (32-bitowe wersje Microsoft Windows NT posiadają komponent o nazwie NTVDM[2], w 64-bitowych wersjach ten mechanizm został usunięty), natomiast dla systemów Linux istnieją emulatory: DOSBox oraz DOSEMU.

64-bitowe systemy

Procesory 64-bitowe o architekturze x86-64 działające w trybie Long nie mają możliwości uruchomienia trybu wirtualnego 8086, ponieważ go nie posiadają tak samo jak trybu rzeczywistego, jednak nadal jest on dostępny, gdy procesor taki pracuje w trybie Legacy. Z drugiej strony w przypadku, gdy jest włączona funkcja sprzętowej wirtualizacji VT-x lub AMD-V, to procesor działający w trybie Long może uruchomić logiczny (wirtualny) procesor, który będzie mógł już działać w trybie V86.[3]

Zobacz też

Przypisy

  1. Tom Yager, Sending software to do hardware's job, „InfoWorld” [dostęp 2017-01-21] (ang.).
  2. Windows NT 4.0 Workstation Architecture, www.microsoft.com [dostęp 2017-01-21].
  3. http://www.intel.com/Assets/en_US/PDF/manual/253669.pdf: "a VM entry is allowed only to guests with paging enabled that are in protected mode or in virtual-8086 mode. Guest execution in other processor operating modes need to be specially handled by the VMM"; see also lesson 24 how to do this from Linux (not that the code is pretty dated, so might not work as-is with current kernels) more up-to-date code can be found here. Also beware that this sample code is more complicated than strictly booting the logical processor in virtual 8086 mode; its ultimate goal is make some real-mode BIOS calls.