NTVDM, NT Virtual DOS Machine – jeden z komponentów 32-bitowych wersji systemów operacyjnych z rodziny Windows NT, poczynając od roku 1993, służący do emulacji trybu rzeczywistego procesora, wykorzystywanego np. przez programy napisane dla systemu MS-DOS, oraz 16-bitowego trybu chronionego dostępnego od momentu pojawienia się procesora Intel 80286. NTVDM używa specjalnego trybu pracy procesora nazywanego trybem wirtualnym 8086 lub w skrócie V86, który jest dostępny w procesorach od momentu powstania architektury IA-32, czyli od pojawienia się Intela 80386.

Komponent ten pozwala na uruchamianie 16-bitowych aplikacji Windows oraz 16- i 32-bitowych programów dla systemu DOS. W przypadku tych pierwszych NTVDM emuluje zadania kernela Windows 3.1 oraz wykorzystuje 32-bitowy WoW (ang. Windows-on-Windows 32-bit) do translacji wywołań 16-bitowych funkcji API; w tym celu wykorzystywany jest program Wowexec.exe i biblioteka Wow32.dll. Emulacja 32-bitowych aplikacji DOS-owych dotyczy DPMI (ang. DOS Protected Mode Interface), który pozwala na wykorzystanie całej dostępnej w komputerze pamięci operacyjnej, a nie tylko jej pierwszego megabajta, co jest charakterystyczne dla trybu rzeczywistego procesora. W tym przypadku Windows NT przechwytuje wywołania funkcji dotyczących obsługi pamięci typu extended oraz expanded i pozwala na ich symulację w środowisku wielozadaniowym.

Uruchamianie NTVDM jest uruchamiany, gdy:

uruchamiana jest aplikacja w trybie rzeczywistym, a NTVDM nie jest uruchomiony uruchamiana jest aplikacja w trybie rzeczywistym, a chociaż NTVDM jest uruchomiony, to nie można z niego w danej chwili skorzystać.

Dostępność NTVDM obecny jest tylko w 32-bitowych wersjach systemów z rodziny Windows NT. 64-bitowe wersje systemów operacyjnych Windows XP, Windows Server 2003, Windows Vista i Windows Server 2008 i następnych pozbawione są tego komponentu, nie pozwalają więc na uruchamianie aplikacji DOS-owych w trybie rzeczywistym ani w 16-bitowym trybie chronionym. Podobnie niemożliwe jest uruchamianie 16-bitowych aplikacji systemu Windows, ponieważ NTVDM potrzebny jest i tutaj.

Alternatywy dla systemów 64-bitowych W przypadku 64-bitowych systemów systemów Windows istnieją rozwiązania pozwalające na uruchomienie w tym środowisku aplikacji DOS-owych i 16-bitowych aplikacji Windows.

NTVDMx64

Rozwiązanie polegające na połączeniu zmodyfikowanego oryginalnego kodu NTVDM oraz emulacji lub wirtualizacji procesora z trybem wirtualnym 8086. NTVDMx64 zachowuje się w sposób możliwie zbliżony do NTVDM w systemach 32-bitowych i pozwala na uruchamianie zarówno aplikacji DOS, jak i 16-bitowych Windows (zachowują się identycznie jak natywne aplikacje 64- i 32-bitowe). Problem stanowi tutaj legalność, ponieważ rozwiązanie wywodzi się z oryginalnego kodu źródłowego NTVDM, który „wyciekł”, a także głęboka ingerencja w system 64-bitowy (zagrożenie dla stabilności). DosEx64 stanowi odmianę tego rozwiązania, w którym wykorzystano odrębnie opracowany kod realizujący funkcję NTVDM oparty jednak na analizie oryginału; brak tu problemów z legalnością, ale rozwiązanie to ma na razie ograniczoną funkcjonalność i pozwala na uruchamianie tylko tekstowej części aplikacji DOS.

OTVDM/WINEVDM

Rozwiązanie polegające na połączeniu zmodyfikowanego ogólnie dostępnego kodu Wine oraz emulacji lub wirtualizacji procesora z trybem wirtualnym 8086. Rozwiązanie to nie ma problemów z legalnością i stabilnością, ale pozwala właściwie tylko na uruchamianie aplikacji 16-bitowych Windows (także tutaj zachowują się identycznie jak natywne aplikacje 64- i 32-bitowe) — sam twórca odradza wykorzystywanie go do aplikacji DOS, pomimo możliwości ich uruchamiania.

Emulatory systemu DOS

Programy typu DOSBox (i jego pochodne: DoSBox-X oraz DosBox Staging) oraz vDOS emulują procesory x86 działające w środowisku DOS, co pozwala na uruchamianie programów przeznaczonych dla tego systemu. Różnice między tymi emulatorami sprowadzają się do tego, co stanowi priorytet dla ich twórców — np. większa kompatybilność z grami (możliwość obecności nietypowych rozwiązań programistycznych) albo lepsza integracja z systemem 64-bitowym (łatwiejsze korzystanie z sieci i drukarek, co jest ważniejsze dla programów użytkowych). Emulatory te pozwalają na zainstalowanie i uruchamianie środowiska Windows 1.x/2.x/3.x (problemy mogą dotyczyć legalności — np. konieczność posiadania licencji), co umożliwia uruchamianie aplikacji 16-bitowych Windows, ale ich integracja z systemem 64-bitowym jest ograniczona w porównaniu do wcześniejszych rozwiązań.

Managery maszyn wirtualnych

Programy takie jak np. VirtualBox czy VMWare pozwalają na wykorzystanie możliwości wirtualizacyjnych procesora i utworzenie maszyny wirtualnej, w której instalowany jest system obsługujący dane aplikacje. Rozwiązanie to charakteryzuje się największą kompatybilnością z aplikacjami (można zainstalować system, w którym dana aplikacja funkcjonowała najlepiej), ale pojawiają się problemy z integracją z systemem 64-bitowym oraz legalnością (konieczność posiadania licencji na system instalowany w środowisku maszyny wirtualnej).

Zobacz też tryb wirtualny

Przypisy

Linki zewnętrzne Diagram przedstawiający podsystem 16-bitowego Windowsa w VDM

Kategoria:Oprogramowanie Microsoftu Kategoria:DOS