Virtuele DOS‑machine (VDM): uitleg, geschiedenis en toepassingen
Overzicht van de virtuele DOS‑machine (VDM): wat het is, hoe het werkt, geschiedenis, beperkingen, gebruiksscenario's en alternatieven voor het draaien van legacy DOS‑ en 16‑bits software.
Een virtuele DOS‑machine (VDM) is een softwareomgeving waarmee moderne systemen legacy DOS‑programma's en oudere 16‑bits Windows‑toepassingen kunnen uitvoeren zonder dat de gebruiker direct in een oudere omgeving hoeft te werken. VDM's creëren een gesimuleerde of afgebakende uitvoeringstoelichting zodat gebruikers oude software blijven gebruiken op nieuwere hardware.
Afbeeldingengalerij
1 AfbeeldingKenmerken en werking
Een VDM combineert verschillende technieken: het gebruikt processorfuncties om real‑mode en protected‑mode code te isoleren, emuleert BIOS/IO‑services en vertaalt of simuleert hardwaretoegang. Daarmee kunnen zowel 16‑bit als 32‑bit DOS programma's starten en communiceren met het besturingssysteem zonder directe toegang tot kritieke bronnen. Sommige implementaties ondersteunen ook 16‑bit Windows-apps.
Geschiedenis en ontwikkeling
VDM‑achtige oplossingen verschenen toen pc‑leveranciers en besturingssystemen compatibiliteit wilden bieden voor bestaande zakelijke en consumententoepassingen. Fabrikanten van besturingssystemen implementeerden subsystemen die oude software draaiden bovenop nieuwere kernels zodat de hardware tegelijk door een moderner besturingssysteem gebruikt kon worden. Voor gebruikers met speciale legacy‑software bleef dit een belangrijk overgangsmiddel.
Toepassingen en voorbeelden
- Bedrijfstoepassingen en boekhoudsoftware die niet zijn gemigreerd.
- Installatieprogramma's en hulpprogramma's die directe hardwaretoegang verwachten.
- Ontwikkeling en testen van oude software of games.
Veel gebruikers schakelen naar een VDM wanneer een modern systeem de enige beschikbare hardware is, en zij willen dat oude programma's blijven werken zonder volledige virtualisatie of dual‑boot op te zetten. Typische oplossingen variëren van ingebouwde compatibiliteitsmodules tot onafhankelijke emulators.
Beperkingen en alternatieven
VDM's hebben beperkingen: ze bieden vaak geen volledige hardwarecompatibiliteit, kunnen veiligheidsrisico's hebben en zijn op sommige moderne platforms afwezig. Zo ontbreekt ondersteuning op veel 64‑bit besturingssystemen, waardoor men alternatieven zoekt zoals volledige emulators of virtuele machines. Bekende alternatieven emuleren de volledige omgeving of bieden afzonderlijke implementaties van DOS‑services; zie ook verschillende implementaties en tools.
Belangrijke aandachtspunten zijn prestaties, toegangsrechten en beveiliging. Voor kritische legacy‑taken kan men kiezen voor een echte virtuele machine die het hele oude besturingssysteem draait, of voor gespecialiseerde emulators die nauwkeuriger hardwaregedrag nabootsen. Voor meer achtergrond en technische details zijn er bronnen beschikbaar: architectuurbeschrijvingen, implementatievoorbeelden en compatibiliteitsgidsen via documentatie en leveranciersinformatie.
Overzicht
Virtuele DOS-machines gebruiken gewoonlijk de virtuele 8086-modus van de Intel 80386 (of later) processor, waardoor veel 8086-toepassingen kunnen functioneren door de commando's van het besturingssysteem zo te vertalen dat toepassingen denken dat ze op een 8086 draaien. Het besturingssysteem kan dan de DOS-software emuleren.
VDM's zoals Windows 3.x 386 Enhanced Mode kunnen ondersteuning toevoegen voor het gebruik van 16-/32-bit protected mode software als ze de DOS Protected Mode Interface (DPMI) gebruiken.
Als een DOS-programma in een VDM een randapparaat moet gebruiken, geeft Windows het DOS-programma een virtueel apparaatstuurprogramma (VDD) dat de hardware emuleert met commando's die het besturingssysteem waarop het draait kan begrijpen.
DOS VDM's
DOS VDM's verschenen op Windows/386 2.01 in 1987 en zaten ook in Windows 3.x, als je 386 Enhanced Mode gebruikte, en in 95, 98, 98 SE en Me.
Vergelijkbaar met Windows 3.x kan je met VDM veel DOS applicaties tegelijk draaien als je de EMM386 /MULTI optie gebruikt. Digital Research / Novell werkte sinds 1991 aan een soortgelijk systeem onder de codenaam "Vladivar" (oorspronkelijk een apparaatstuurprogramma KRNL386.SYS en geen onderdeel van EMM386). Het werd gemaakt voor de volgende versie van DR DOS, uitgebracht als Novell DOS 7 in 1994, maar het werd ook gebruikt in hun "Star Trek" project, waar ze mee stopten voordat ze klaar waren.
OS/2 MVDM
VDM's genaamd MVDM (Multiple Virtual DOS Machine) worden gebruikt in OS/2 2.0 en later. OS/2 MVDM's zijn in veel opzichten beter dan NTVDM, bijvoorbeeld met blokapparaten. Terwijl OS/2 1.x DOS 3.0 emuleerde, emuleerde 2.x DOS 5.0.
Het draaien van Windows 3.1 toepassingen in OS/2 lijkt op de XP Mode in Windows 7, maar de gebruikte technologieën zijn zeer verschillend. Een "gast" VDM staat programma's toe de schijven te gebruiken van het OS/2 of NT besturingssysteem waarop de VDM draait. Toepassingen in een VDM kunnen named pipes gebruiken om met hun "host" te praten. []
Windows NTVDM
NTVDM is opgenomen in alle x86-versies van Windows gemaakt op NT, en laat 16-bit Windows en 16-/32-bit DOS-toepassingen draaien. Het is niet inbegrepen bij 64-bit versies (zie Beperkingen). ntvdm.exe helpt de API's emuleren die nodig zijn om 16-bit DOS- en Windows-toepassingen te draaien.
NTVDM gebruikt NTIO.SYS en NTDOS.SYS, dat een gewijzigde versie van COMMAND.COM uitvoert. De 16-bits systeembestanden zijn kleinere versies van hun MS-DOS 5.0 tegenhangers, waaronder IO.SYS, MSDOS.SYS en COMMAND.COM, die vooroordelen met het FAT-bestandssysteem wegnemen en indien nodig ook het 32-bits NTVDM kunnen aanroepen. NTDOS gaf oorspronkelijk een DOS-versie van 30.00 aan programma's, maar dit werd al snel veranderd in 5.00 om meer programma's te laten draaien zonder te worden veranderd Er zijn echter veel nieuwere MS-DOS functies en commando's toegevoegd aan MS-DOS versies 6.x en in Windows 9x die er niet zijn.
16-bits programma's draaien afzonderlijk binnen één 32-bits NTVDM-proces. Door "In aparte geheugenruimte uitvoeren" aan te vinken in het dialoogvenster Uitvoeren of in de snelkoppeling van het programma wordt een nieuw proces aangemaakt. NTVDM emuleert BIOS-functies, de Windows 3.1-kernel en zijn 16-bits API.
32-bits DOS-emulatie wordt gebruikt voor DPMI en het gebruik van 32-bits geheugen. wowexec.exe is het emulatieproces voor 16-bits Windows. Windows 2000 heeft Sound Blaster 2.0-emulatie toegevoegd aan 32-bits NTVDM. 16-bit en DOS virtuele apparaatstuurprogramma's kunnen niet worden uitgevoerd. Win16-programma's kunnen met andere delen van Windows communiceren via OLE, DDE en named pipes.
Omdat virtuele 8086 mode niet beschikbaar is op niet-x86 processoren, was NTVDM een volledige emulator voor NT op deze architecturen. NT 3.51 kon alleen 80286, maar sinds NT 4.0 werd 486 emulatie toegevoegd.
Veiligheidsvraagstukken
In januari 2010 ontdekte Google beveiligingsonderzoeker Tavis Ormandy een groot beveiligingsprobleem in het NTVDM systeem waardoor niet-beheerders hun rechten konden verhogen naar het SYSTEM niveau. Ormandy beweerde dat het een probleem was voor alle x86 versies van Windows NT na 1993. 32-bit versies van NT 3.X/4.0, 2000, XP, 2003, Vista, 2008 en 7 werden getroffen. Ormandy publiceerde hoe het probleem werkt. Voordat Microsoft het kon oplossen, kon je 16-bit applicatie ondersteuning uitschakelen om het probleem op te lossen, maar het maakte dat je geen 16-bit programma's kon draaien. x64 Windows had dit probleem nooit omdat het geen NTVDM gebruikt. Na het toepassen van de beveiligingsfixes die Microsoft beschikbaar stelde, kon NTVDM veilig worden ingeschakeld.
Beperkingen
NTVDM en wowexec hadden beperkingen op Windows XP en later vanwege een GDI-objectlimiet per sessie, waardoor GDI-handgrepen mogelijk twee bits naar rechts werden verplaatst bij het veranderen van 32 naar 16 bits. Handvatten konden dus niet groter zijn dan 14 bits, dus 16-bits programma's met een GDI-handvat groter dan 16384 zouden crashen.
Op x86-64 CPU's is de virtuele 8086-modus alleen beschikbaar als legacy-submodus (als u een 32-bits besturingssysteem draait), maar niet in de 64-bits lange modus. Daarom wordt NTVDM niet meegeleverd met 64-bits versies van Windows, zodat 16-bits toepassingen niet kunnen worden uitgevoerd op 64-bits Windows. U hebt Windows XP Mode of soortgelijke virtualisatiesoftware nodig om 16-bits programma's uit te voeren in een 64-bits besturingssysteem.
NTVDM kan geen DOS-spelletjes draaien op hedendaagse computers. Emulatie is alleen voorzien voor eenvoudige randapparatuur. Geluid in NTVDM kan bijvoorbeeld beperkt zijn. Windows NT ververst het scherm slechts een paar keer per seconde wanneer DOS programma's erop schrijven, en ze kunnen geen hoge resolutie grafische opties emuleren. Omdat software op de snelheid van de CPU draait, stoppen alle timing loops te vroeg. Dit laat spellen te snel lopen, of zorgt ervoor dat de software sommige geëmuleerde hardware randapparatuur niet ziet, omdat het niet zo lang kan wachten op een antwoord.
Gerelateerde pagina's
- Virtualisatie
- Windows op Windows
Gerelateerde artikelen
Auteur
AlegsaOnline.com Virtuele DOS‑machine (VDM): uitleg, geschiedenis en toepassingen Leandro Alegsa
URL: https://nl.alegsaonline.com/art/105574
Bronnen
- antonis.de : NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds · web.archive.org
- drdos.net : OpenDOS Developer's Reference Series — OpenDOS Multitasking API Guide — Programmer's Guide
- drdos.net : DR-DOS 7.02 User Guide
- redbooks.ibm.com : "OS/2 Workplace Shell Configuration Techniques"
- technet.microsoft.com : Chapter 27 - Windows Compatibility and Migration: Windows NT 4.0 Resource Kit
- windowsitpro.com : How do I troubleshoot MS-DOS programs running on Windows XP?
- support.microsoft.com : INFO: How Windows handles floating-point calculations
- technet.microsoft.com : "Microsoft Security Bulletin MS10-015 - Important: Vulnerabilities in Windows Kernel Could Allow Elevation of Privilege (977165)"
- archives.neohapsis.com : "Microsoft Windows NT #GP Trap Handler Allows Users to Switch Kernel Stack"
- theinquirer.net : "Ancient Windows flaw found after 17 years"
- microsoft.com : "Microsoft Security Advisory (979682): Vulnerability in Windows Kernel Could Allow Elevation of Privilege"
- vttoth.com : The "Win 16 Subsystem has insufficient resources to continue running" problem on Windows XP
- download.intel.com : Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes: 1, 2A, 2B, 2C, 3A, 3B, and 3C