VDM — Virtuaalinen DOS-kone: Suorita 16- ja 32-bittiset DOS/Windows-ohjelmat
VDM — Virtuaalinen DOS-kone: suorita 16- ja 32-bittiset DOS sekä 16-bittiset Windows-ohjelmat 32-bittisillä tietokoneilla helposti, turvallisesti ja yhteensopivasti.
Virtuaalinen DOS-kone (Virtual DOS machine, VDM) antaa tietokoneiden käyttäjille mahdollisuuden suorittaa 16- tai 32-bittisiä DOS- ja 16-bittisiä Windows-ohjelmia 32-bittisillä tietokoneilla, kun laitteistoa käyttää jo toinen käyttöjärjestelmä. VDM on ohjelmistotason ratkaisu, joka tarjoaa vanhoille ohjelmille ympäristön, jossa ne uskovat ajavansa aitoa DOS- tai 16-bittistä Windows-ympäristöä, vaikka taustalla pyörisi nykyaikainen 32-bittinen Windows-käyttöjärjestelmä.
Miten VDM toimii
Windows-ympäristössä VDM:t toteutetaan yleensä osana käyttöjärjestelmän ydinrakennetta (esimerkiksi Windows NT -sarjassa NTVDM, NT Virtual DOS Machine). Perusperiaatteet:
- VDM luo ohjelmistollisen "virtuaalisen koneen", jossa sovellukset saavat omat muistialueensa ja tuntevat ajavansa DOS:ia tai 16-bittistä Windowsia.
- Yhteiskäyttö resurssien kanssa: VDM välittää sovelluksen I/O-kutsut, keskeytykset ja muistikyselyt isäntäkäyttöjärjestelmälle, jolloin laitteisiin (levyt, näytöt, näppäimistö) päästään käsiksi hallitusti.
- Tekniset apukeinot: virtuaalinen 8086-tila (v86), suojattu tila ja DPMI/XMS/EMS -rajapinnat antavat vanhoille ohjelmille tarvitsemiaan palveluja ja muistinhallintaa.
Milloin VDM on kätevä
- Liiketoimintasovellusten ja vanhojen yritysohjelmien ajamiseen, joita ei ole saatavilla uudelleen koodattuina.
- Nopeatestaukseen ja korjaukseen, kun halutaan säilyttää vanha ohjelma toiminnassa samalla kun ympäristö päivitetään.
- Kokeiluihin, jolloin ohjelman suoritusympäristön täydellinen emulointi ei ole välttämätöntä.
Rajoitukset ja huomioitavaa
- 64-bittisissä Windows-versioissa (x64) NTVDM/VDM-tuki puuttuu, joten 16-bittisiä DOS- ja Windows-sovelluksia ei voi suorittaa suoraan. Tällöin tarvitaan vaihtoehtoja (ks. alla).
- Laitteistotason pääsy on rajatumpaa: suorat laiteajurit, erikoisäänikortit tai vanhat grafiikkarit eivät välttämättä toimi oikein VDM:n kautta.
- Yhteensopivuus ei ole täydellinen — erityisesti pelit ja multimediaohjelmat, jotka käyttävät matalaa laitteistokontrollia, voivat kaatua tai toimia virheellisesti.
- Turvallisuus: vanhat 16-bittiset ohjelmat voivat sisältää haavoittuvuuksia. Ajettuna VDM:ssä ne voivat saada laajemman pääsyn järjestelmään kuin puhtaasti käyttäjätason sovellukset.
Vaihtoehdot ja käytännön ratkaisut
- DOSBox — suosittu avoimen lähdekoodin DOS-emulaattori, joka on optimoitu erityisesti vanhoille peleille ja multimediaohjelmille; tarjoaa paremman laiteemuloinnin äänen ja grafiikan suhteen.
- Virtuaalikoneet (esim. VirtualBox, VMware) — luovat kokonaan erillisen 32- tai 16-bittisen käyttöjärjestelmän vieraskoneeseen; toimivat hyvin yrityssovellusten kanssa, kun tarvitaan parempaa laitetuen tasoa.
- Migraatio ja uudelleenkirjoitus — pitkällä aikavälillä usein paras ratkaisu on päivittää tai korvata vanhat ohjelmat nykyaikaisilla versioilla.
Käytännön vinkkejä
- Jos käytät 32-bittistä Windowsia, tarkista, löytyykö käyttöjärjestelmästäsi NTVDM ja voisiko se mahdollisesti aktivoida erityisominaisuutena (joissain Windows-versioissa VDM/NTVDM löytyy osana "Legacy Components" tai vastaavaa valintaa).
- Ennen vanhojen ohjelmien ajoa tee varmuuskopio tärkeistä tiedostoista ja käytä tarvittaessa eristettyä ympäristöä (esim. virtuaalikone), jotta vähennät riskejä.
- Jos ohjelma tarvitsee ääntä, grafiikkaa tai suoraa laitteistokontrollia, testaa se etukäteen DOSBoxilla tai virtuaalikoneella — ne tarjoavat usein parempaa yhteensopivuutta kuin käyttöjärjestelmän oma VDM.
Yhteenvetona: VDM tarjoaa kätevän tavan pitää yllä vanhoja DOS- ja 16-bittisiä Windows-sovelluksia nykyaikaisessa 32-bittisessä ympäristössä, mutta sillä on selkeitä rajoituksia ja turvallisuusnäkökohtia. Usein paras lähestymistapa on arvioida sovelluksen vaatimukset ja valita sen perusteella joko NTVDM, DOSBox, virtuaalikone tai sovelluksen uudistaminen.
Yleiskatsaus
Virtuaaliset DOS-koneet käyttävät yleensä Intel 80386 (tai uudemman) prosessorin virtuaalista 8086-tilaa, jolloin monet 8086-sovellukset voivat toimia kääntämällä käyttöjärjestelmän komentoja siten, että sovellukset luulevat, että ne toimivat 8086:lla. Käyttöjärjestelmä voi sitten emuloida DOS-ohjelmistoa.
VDM:t, kuten Windows 3.x 386 Enhanced Mode, voivat lisätä tuen 16-/32-bittisten suojatun tilan ohjelmistojen käytölle, jos ne käyttävät DOS Protected Mode Interface (DPMI) -rajapintaa.
Jos VDM:ssä olevan DOS-ohjelman on käytettävä oheislaitetta, Windows antaa DOS-ohjelmalle virtuaalisen laiteajurin (VDD), joka emuloi laitteistoa käyttämällä komentoja, joita käyttöjärjestelmä ymmärtää.
DOS VDM:t
DOS VDM:t ilmestyivät Windows/386 2.01:ssä vuonna 1987, ja ne olivat myös Windows 3.x:ssä, jos käytit 386 Enhanced Modea, sekä 95:ssä, 98:ssa, 98 SE:ssä ja Me:ssä.
Windows 3.x:n tapaan VDM:n avulla voit käyttää useita DOS-sovelluksia samanaikaisesti, jos käytät EMM386 /MULTI-vaihtoehtoa. Digital Research / Novell työskenteli samanlaisen järjestelmän parissa vuodesta 1991 koodinimellä "Vladivar" (alun perin laiteajuri KRNL386.SYS eikä osa EMM386:ta). Se tehtiin DR DOS:n seuraavaa versiota varten, joka julkaistiin nimellä Novell DOS 7 vuonna 1994, mutta sitä käytettiin myös heidän "Star Trek"-projektissaan, jonka työstäminen lopetettiin ennen sen valmistumista.
OS/2 MVDM
VDM:iä nimeltä MVDM (Multiple Virtual DOS Machine) käytetään OS/2 2.0:ssa ja uudemmissa versioissa. OS/2:n MVDM:t ovat monin tavoin parempia kuin NTVDM:t, esimerkiksi lohkolaitteiden osalta. OS/2 1.x emuloi DOS 3.0:aa, 2.x emuloi DOS 5.0:aa.
Windows 3.1 -sovellusten käyttäminen OS/2:ssä näyttää samankaltaiselta kuin XP Mode Windows 7:ssä, mutta käytetyt tekniikat ovat hyvin erilaisia. Vieras VDM sallii ohjelmien käyttää VDM:ää käyttävän OS/2- tai NT-käyttöjärjestelmän levyjä. VDM:ssä olevat sovellukset voivat käyttää nimettyjä putkia keskustellakseen "isäntänsä" kanssa. . []
Windows NTVDM
NTVDM sisältyy kaikkiin NT:llä tehtyihin x86-versioihin Windowsista, ja sen avulla voidaan ajaa 16-bittisiä Windows- ja 16-/32-bittisiä DOS-sovelluksia. Se ei sisälly 64-bittisiin versioihin (katso Rajoitukset). ntvdm.exe auttaa emuloimaan 16-bittisten DOS- ja Windows-sovellusten suorittamiseen tarvittavia API:ita.
NTVDM käyttää NTIO.SYS- ja NTDOS.SYS-ohjelmia, jotka ajavat COMMAND.COM-ohjelman muutettua versiota. 16-bittiset järjestelmätiedostot ovat pienempiä versioita MS-DOS 5.0:n vastaavista tiedostoista, kuten IO.SYS, MSDOS.SYS ja COMMAND.COM, jotka poistavat FAT-tiedostojärjestelmään liittyvät vääristymät ja voivat tarvittaessa kutsua myös 32-bittistä NTVDM:ää. NTDOS antoi alun perin ohjelmille DOS-version 30.00, mutta tämä muutettiin pian 5.00:ksi, jotta useampia ohjelmia voitaisiin ajaa ilman muutoksia. MS-DOS-versioihin 6.x ja Windows 9x:ään on kuitenkin lisätty monia uudempia MS-DOS:n toimintoja ja komentoja, joita MS-DOS:ssa ei ole.
16-bittiset ohjelmat suoritetaan erikseen yhdessä 32-bittisessä NTVDM-prosessissa. Kun ohjelman Suorita-valintaikkunassa tai pikakuvakkeessa valitaan "Suorita erillisessä muistialueessa", luodaan sen sijaan uusi prosessi. NTVDM emuloi BIOS-toimintoja, Windows 3.1:n ytimen ja sen 16-bittisen API:n.
32-bittistä DOS-emulaatiota käytetään DPMI:tä ja 32-bittisen muistin käyttöä varten. wowexec.exe on 16-bittisen Windowsin emulaatioprosessi. Windows 2000 lisäsi Sound Blaster 2.0 -emuloinnin 32-bittiseen NTVDM:ään. 16-bittisiä ja DOS-virtuaalisia laiteajureita ei voi ajaa. Win16-ohjelmat voivat kommunikoida Windowsin muiden osien kanssa OLE:n, DDE:n ja nimettyjen putkien avulla.
Koska virtuaalinen 8086-tila ei ole käytettävissä muissa kuin x86-prosessoreissa, NTVDM oli täydellinen emulaattori NT:lle näillä arkkitehtuureilla. NT 3.51 pystyi vain 80286:een, mutta NT 4.0:sta lähtien siihen lisättiin 486-emulointi.
Turvallisuuskysymykset
Tammikuussa 2010 Googlen tietoturvatutkija Tavis Ormandy löysi suuren tietoturvaongelman NTVDM-järjestelmässä, joka sallii muiden kuin järjestelmänvalvojien nostaa käyttöoikeutensa SYSTEM-tasolle. Ormandy väitti, että ongelma koski kaikkia Windows NT:n x86-versioita vuoden 1993 jälkeen. Vaikutus koski 32-bittisiä versioita NT 3.X/4.0, 2000, XP, 2003, Vista, 2008 ja 7. Ormandy julkaisi, miten ongelma toimii. Ennen kuin Microsoft pystyi korjaamaan ongelman, 16-bittisten sovellusten tuen saattoi kytkeä pois päältä ongelman ratkaisemiseksi, mutta se aiheutti sen, että 16-bittisiä ohjelmia ei voinut ajaa. x64 Windowsissa ei koskaan ollut tätä ongelmaa, koska se ei käytä NTVDM:ää. Kun Microsoftin tekemät tietoturvakorjaukset oli otettu käyttöön, NTVDM voitiin ottaa turvallisesti käyttöön.
Rajoitukset
NTVDM:llä ja wowexecillä oli rajoituksia Windows XP:ssä ja sitä uudemmissa versioissa GDI-objektien istuntokohtaisen rajoituksen vuoksi, mikä saattoi aiheuttaa sen, että GDI-kädensijat siirrettiin kaksi bittiä oikealle, kun 32-bittisestä siirryttiin 16-bittiseen. Kahvat eivät siis voineet olla suurempia kuin 14 bittiä, joten 16-bittiset ohjelmat, joissa GDI-kahva oli suurempi kuin 16384, kaatuivat.
x86-64-suorittimissa virtuaalinen 8086-tila on käytettävissä vain legacy-alitilana (jos käytössä on 32-bittinen käyttöjärjestelmä), mutta ei 64-bittisessä pitkässä tilassa, minkä vuoksi NTVDM ei sisälly 64-bittisiin Windows-versioihin, joten 16-bittisiä sovelluksia ei voi käyttää 64-bittisessä Windowsissa. Tarvitset Windows XP Mode -tilan tai vastaavan virtualisointiohjelmiston, jos haluat ajaa 16-bittisiä ohjelmia 64-bittisessä käyttöjärjestelmässä.
NTVDM ei voi ajaa DOS-pelejä nykypäivän tietokoneilla. Emulointia tarjotaan vain yksinkertaisille oheislaitteille. Esimerkiksi ääntä voidaan rajoittaa NTVDM:ssä. Windows NT päivittää näyttöä vain muutaman kerran sekunnissa, kun DOS-ohjelmat kirjoittavat siihen, eikä niillä voida emuloida korkean resoluution grafiikkavaihtoehtoja. Koska ohjelmistot toimivat suorittimen nopeudella, kaikki ajoitussilmukat pysähtyvät liian aikaisin. Tämä joko saa pelit toimimaan liian nopeasti tai aiheuttaa sen, että ohjelmisto ei näe joitakin emuloituja laitteiston oheislaitteita, koska se ei voi odottaa vastausta niin kauan.
Aiheeseen liittyvät sivut
- Virtualisointi
- Windows on Windows
Etsiä