वर्चुअल डॉस मशीन

वर्चुअल डॉस मशीन (वीडीएम) एक ऐसी तकनीक को संदर्भित करती है जो 16-बिट/32-बिट डॉस और विंडोज 3.1x|16-बिट विंडोज प्रोग्राम को चलाने की अनुमति देती है जब पहले से ही एक अन्य ऑपरेटिंग सिस्टम चल रहा हो और हार्डवेयर को नियंत्रित कर रहा हो।

सिंहावलोकन
वर्चुअल डॉस मशीनें या तो विशेष रूप से विशिष्ट एमुलेटर विधियों (जैसे गतिशील पुनर्संयोजन) के माध्यम से संचालित हो सकती हैं या इंटेल 80386 प्रोसेसर के वर्चुअल 8086 मोड पर भरोसा कर सकती हैं, जो वास्तविक मोड 8086 सॉफ़्टवेयर को नियंत्रित वातावरण में चलाने की अनुमति देता है, जिसमें सभी ऑपरेशनों को शामिल किया जाता है। हार्डवेयर और उन्हें सामान्य ऑपरेटिंग सिस्टम पर अग्रेषित करना (अपवाद संचालन के रूप में)। ऑपरेटिंग सिस्टम तब अनुकरण कर सकता है और DOS सॉफ़्टवेयर के निष्पादन को फिर से शुरू कर सकता है।

VDM आमतौर पर 16-बिट | 16- और 32-बिट संरक्षित मोड सॉफ़्टवेयर (दो विस्तार) को चलाने के लिए समर्थन को लागू करते हैं, जिसे DOS संरक्षित मोड इंटरफ़ेस (DPMI) के अनुरूप होना होता है।

जब VDM के अंदर चलने वाले DOS प्रोग्राम को पेरिफेरल एक्सेस करने की आवश्यकता होती है, तो Microsoft Windows या तो इसे सीधे (शायद ही कभी) अनुमति देगा, या DOS प्रोग्राम को डिवाइस ड्राइवर # वर्चुअल डिवाइस ड्राइवर (VDD) के साथ प्रस्तुत करेगा, जो ऑपरेटिंग सिस्टम फ़ंक्शंस का उपयोग करके हार्डवेयर का अनुकरण करता है।. एक VDM में Intel 8259A बाधा डालना कंट्रोलर, Intel 8254 टाइमर चिप्स, 8237 DMA कंट्रोलर, आदि के लिए व्यवस्थित रूप से अनुकरण होगा।

समवर्ती डॉस 8086 एमुलेशन मोड
जनवरी 1985 में डिजिटल अनुसंधान ने इंटेल के साथ मिलकर समवर्ती DOS 286 1.0 का पूर्वावलोकन किया, 80286 के संरक्षित मोड में वास्तविक मोड डॉस प्रोग्राम चलाने में सक्षम समवर्ती डॉस का एक संस्करण। B-1 स्टेपिंग प्रोसेसर चिप्स पर तैयार की गई विधि, हालांकि, मई 1985 में C-1 और उसके बाद के प्रोसेसर स्टेपिंग पर काम करना बंद कर दिया, इससे कुछ समय पहले डिजिटल रिसर्च उत्पाद को जारी करने वाला था। हालांकि ई-1 कदम के साथ इंटेल ने अगस्त 1985 में मुद्दों को संबोधित करना शुरू कर दिया, ताकि डिजिटल रिसर्च के 8086 इम्यूलेशन मोड ने फिर से गैर-दस्तावेजी 286 लोडल प्रोसेसर निर्देश का उपयोग करके काम किया, व्यावहारिक होना बहुत धीमा था। E-2 स्टेपिंग के लिए माइक्रोकोड परिवर्तन ने फिर से गति में सुधार किया।  इस शुरुआती कार्यान्वयन को वास्तविक वर्चुअल डॉस मशीनों के पूर्ववर्ती के रूप में देखा जा सकता है।

आखिरकार, समवर्ती DOS 286 को 1986 में औद्योगिक उपयोग के लिए FlexOS 286 बनने के लिए एक संभावित डेस्कटॉप ऑपरेटिंग सिस्टम से फिर से काम में लिया गया। इसे 1986 में IBM द्वारा उनके 4680 OS के लिए लाइसेंस भी दिया गया था।

जब Intel का 80386 अपने वर्चुअल 8086 मोड के साथ उपलब्ध हो गया (अक्टूबर 1985 से नमूने के रूप में और जून 1986 से मात्रा में), डिजिटल रिसर्च ने समवर्ती DOS 386 1.0 (फरवरी) के तहत संरक्षित मोड में वर्चुअल DOS मशीनों में वास्तविक मोड DOS प्रोग्राम चलाने के लिए इसका उपयोग करने के लिए स्विच किया। 1987) और FlexOS 386 1.0 (जून 1987)। हालाँकि, इन बहुउपयोगकर्ता मल्टीटास्किंग की वास्तुकला संरक्षित मोड ऑपरेटिंग सिस्टम अपने आप में डॉस-आधारित नहीं थे।

समवर्ती DOS 386 को बाद में बहुउपयोगकर्ता DOS (1991 से) और REAL/32 (1995 से) बनने के लिए विकसित किया गया था। FlexOS 386 बाद में 1993 में 4690 OS बन गया।

डॉस-आधारित वीडीएम
इन संरक्षित मोड ऑपरेटिंग सिस्टमों के विपरीत, DOS, डिफ़ॉल्ट रूप से, एक वास्तविक-मोड ऑपरेटिंग सिस्टम है, केवल स्मृति प्रबंधकों और DOS एक्सटेंडर की ओर से संरक्षित मोड और वर्चुअल 86 मोड पर स्विच करना ताकि विस्तारित मेमोरी या मैप तक पहुंच प्रदान की जा सके। पहले मेगाबाइट में मेमोरी, जो सामान्य डॉस प्रोग्रामों के लिए सुलभ है।

DOS-आधारित VDMs सितंबर 1987 में Microsoft के Windows/386 2.01 के साथ दिखाई दिए। डॉस-आधारित वर्चुअल डॉस मशीनें विंडोज 3.0, विंडोज 3.1x | 3.1x और वर्कग्रुप्स के लिए विंडोज में भी मौजूद थीं। वर्कग्रुप्स के लिए विंडोज 3.1x 386 उन्नत मोड के साथ-साथ विंडोज 95, विंडोज 98, विंडोज 98 सीई और विंडोज एमई में चल रही थी।. DOS के शीर्ष पर चल रहे इन समाधानों की एक विशेषता यह है कि वर्चुअल DOS मशीनों के अंदर दिखाया गया मेमोरी लेआउट DOS सिस्टम के आभासी उदाहरण हैं और DOS ड्राइवर कॉन्फ़िगरेशन मल्टीटास्कर लोड होने से पहले चलता है, और वे अनुरोध जिन्हें संरक्षित मोड में नियंत्रित नहीं किया जा सकता है अंतर्निहित डॉस सिस्टम द्वारा निष्पादित किए जाने के लिए सिस्टम डोमेन में पारित किया जाता है। आर्किटेक्चर में विंडोज 3.x 386 एन्हांस्ड मोड के समान, नोवेल डॉस 7 का EMM386 3.xx, काल्डेरा OpenDOS 7.01  डॉ-डॉस 7.02 (और बाद में) EMM386 /MULTI विकल्प का उपयोग किए जाने पर कई DOS अनुप्रयोगों के प्री-इम्प्टिव मल्टीटास्किंग का समर्थन करने के लिए DOS-आधारित VDM का भी उपयोग करता है।   यह घटक 1991 से डिजिटल रिसर्च/नॉवेल में विकास के अधीन है कोडनेम व्लादिवर के तहत (मूल रूप से एक अलग डिवाइस ड्राइवर KRNL386.SYS  EMM386 के एक मॉड्यूल के बजाय)। जबकि मुख्य रूप से DR DOS के अगले प्रमुख संस्करण के लिए विकसित किया गया था, जिसे 1994 में Novell DOS 7 के रूप में जारी किया गया था,  इसका उपयोग 1992/1993 में कभी जारी न होने वाले DR DOS पैंथर और स्टार ट्रेक परियोजना परियोजना में भी किया गया था।

ओएस/2 एमवीडीएम
MVDM (मल्टीपल वर्चुअल DOS मशीन) कहे जाने वाले VDM का उपयोग OS/2 2.0 और बाद में 1992 से किया जाता है। ओएस/2 एमवीडीएम #एनटीवीडीएम से काफी अधिक शक्तिशाली हैं। उदाहरण के लिए, ब्लॉक डिवाइस समर्थित हैं, और विभिन्न DOS संस्करण OS/2 MVDM में बूट किए जा सकते हैं। जबकि OS/2 1.x DOS बॉक्स DOS 3.0 पर आधारित था, OS/2 2.x MVDMs DOS 5.0 का अनुकरण करते हैं।

Windows 3.1x|Windows 3.1 और बाद में OS/2 में Win32s अनुप्रयोगों का सहज एकीकरण सतह पर समान दिखने वाली अवधारणा है विंडोज 7 में विंडोज वर्चुअल पीसी पर आधारित XP मोड के निर्बाध एकीकरण के लिए। अतिथि VDM या NTVDM में एक पुनर्निर्देशक OS/2 या NT होस्ट के डिस्क पर पहुंच की अनुमति देता है। गेस्ट में एप्लिकेशन अपने होस्ट के साथ संचार के लिए नामित पाइप का उपयोग कर सकते हैं।

एक तकनीकी सीमा के कारण, OS/2 के अंतर्गत DOS और 16-बिट Windows एप्लिकेशन 2GB से अधिक हार्ड ड्राइव स्थान देखने में असमर्थ थे, यह ArcaOS 5.0.4 में तय किया गया था।

विंडोज एनटीवीडीएम
NTVDM, Windows NT 3.1 की रिलीज़ के साथ 1993 से Windows NT परिवार के सभी IA-32 संस्करणों का एक सिस्टम घटक था। यह 16-बिट विंडोज़ और 16-बिट/32-बिट डॉस अनुप्रयोगों के निष्पादन की अनुमति देता है। Windows NT 32-बिट उपयोगकर्ता-मोड निष्पादन योग्य जो एक DOS (या Windows 3.1x|Windows 3.x) पर्यावरण के लिए आधार बनाता है, कहलाता है ntvdm.exe.

डॉस प्रोग्राम निष्पादित करने के लिए, एनटीवीडीएम लोड करता है NTIO.SYS जो बदले में लोड होता है NTDOS.SYS, जो एक संशोधित निष्पादित करता है COMMAND.COM एनटीवीडीएम को कमांड-लाइन तर्क के रूप में पारित किए गए एप्लिकेशन को चलाने के लिए। 16-बिट रीयल-मोड सिस्टम फ़ाइलें उनके MS-DOS 5.0 समकक्षों के व्युत्पत्तियों को छीन लिया गया है IO.SYS, MSDOS.SYS और COMMAND.COM एफएटी फाइल सिस्टम पर सभी हार्ड-वायर्ड धारणाओं के साथ हटा दिया गया और अनुरोधों को संभालने के लिए 32-बिट एनटीवीडीएम में अमान्य ऑपकोड 0xC4 0xC4 से BIOS ऑपरेशन का उपयोग किया गया। मूल रूप से, NTDOS ने कार्यक्रमों के लिए 30.00 के DOS संस्करण की सूचना दी, लेकिन इसे जल्द ही 5.00 बजे के संस्करण की रिपोर्ट करने के लिए बदल दिया गया INT 21h/AH=30h और 5.50 बजे INT 21h/AX=3306h अधिक कार्यक्रमों को अपरिवर्तित चलाने की अनुमति देने के लिए। यह विंडोज के नवीनतम रिलीज में भी सही है; MS-DOS संस्करण 6.x और Windows 9x में पेश किए गए कई अतिरिक्त MS-DOS फ़ंक्शंस और कमांड गायब हैं।

डिफ़ॉल्ट रूप से 16-बिट विंडोज़ अनुप्रयोग सभी एक एनटीवीडीएम प्रक्रिया के भीतर अपने स्वयं के धागे में चलते हैं। यद्यपि NTVDM स्वयं एक 32-बिट प्रक्रिया है और बाकी सिस्टम के संबंध में पूर्व-खाली रूप से मल्टीटास्क्ड है, इसके भीतर 16-बिट एप्लिकेशन एक-दूसरे के संबंध में सहकारी रूप से मल्टीटास्क हैं। जब रन बॉक्स या एप्लिकेशन की शॉर्टकट फ़ाइल में रन इन सेपरेट मेमोरी स्पेस विकल्प को चेक किया जाता है, तो प्रत्येक 16-बिट विंडोज़ एप्लिकेशन को अपनी एनटीवीडीएम प्रक्रिया मिलती है और इसलिए अन्य 16-बिट विंडोज सहित अन्य प्रक्रियाओं के संबंध में पूर्व-खाली रूप से मल्टीटास्क किया जाता है। अनुप्रयोग। NTVDM BIOS कॉल और टेबल के साथ-साथ विंडोज 3.1 कर्नेल और 16-बिट एपीआई स्टब्स का अनुकरण करता है। विंडोज़ अनुवाद परत पर 32-बिट विंडोज़ 16-बिट एपीआई रूटीन को थंक करता है।

32-बिट डॉस एमुलेशन डॉस प्रोटेक्टेड मोड इंटरफेस (डीपीएमआई) और 32-बिट मेमोरी एक्सेस के लिए मौजूद है। यह परत DOS कार्यों के लिए आवश्यक विस्तारित और विस्तारित मेमोरी कॉल को Windows NT मेमोरी कॉल में परिवर्तित करती है। wowexec.exe अनुकरण परत है जो 16-बिट विंडोज का अनुकरण करती है। विंडोज 2000 और विन्डोज़ एक्सपी ने ध्वनि फाड़ने वाला 2.0 एमुलेशन जोड़ा। 16-बिट वर्चुअल डिवाइस ड्राइवर और DOS ब्लॉक डिवाइस ड्राइवर (जैसे, RAM डिस्क) समर्थित नहीं हैं। अन्य सबसिस्टम के साथ अंतःप्रक्रम संचार जोडकर परनिगरानी और उद्देश् य, डायनेमिक डेटा एक्सचेंज और नामित पाइप के माध्यम से हो सकता है।

चूंकि आभासी 8086 मोड गैर-x86-आधारित प्रोसेसर (अधिक विशेष रूप से, एमआईपीएस आर्किटेक्चर, डीईसी अल्फा, और पावरपीसी) पर उपलब्ध नहीं है, एनटीवीडीएम को इसके बजाय इंसिग्निया के सॉफ्टपीसी से लाइसेंस प्राप्त कोड का उपयोग करके एनटी के इन संस्करणों में एक पूर्ण एमुलेटर के रूप में लागू किया गया था। Windows NT 3.51 तक, केवल 80286 अनुकरण उपलब्ध था। Windows NT 4.0 के साथ, Intel 80486 एमुलेशन जोड़ा गया था।

Windows 11 या ARM32 आधारित संस्करणों जैसे Windows RT या Windows 10 IoT Core से पहले Windows के 64-बिट संस्करणों के साथ NTVDM शामिल नहीं है। विंडोज 10 इस घटक को शामिल करने के लिए विंडोज का अंतिम संस्करण है।

इस घटक को बंद कर दिया गया है, क्योंकि विंडोज़ 11 ने 32-बिट कंप्यूटिंग | 32-बिट प्रोसेसर के लिए समर्थन छोड़ दिया है।

आदेश
कमांड (कंप्यूटिंग) की निम्न सूची Windows XP MS-DOS सबसिस्टम का हिस्सा है।


 * APPEND (डॉस कमांड)
 * डिबग (डॉस कमांड)
 * एमएस-डॉस संपादक
 * एडलिन
 * EXE2BIN
 * फास्टोपेन
 * मजबूर
 * ग्राफिक्स (डॉस कमांड)
 * लोडफिक्स (डॉस कमांड)
 * लोधिघ (डॉस कमांड)|लोडहिघ (एलएच)
 * मेम (डॉस कमांड)
 * NLSFUNC (डॉस कमांड)
 * वीईआर (डॉस कमांड)
 * शेयर (डॉस कमांड)

सुरक्षा समस्या
जनवरी 2010 में, Google सुरक्षा शोधकर्ता तवीस ओरमंडी ने Windows NT के VDM कार्यान्वयन में एक गंभीर सुरक्षा दोष का खुलासा किया, जिसने विशेषाधिकार प्राप्त उपयोगकर्ताओं को अपने विशेषाधिकारों को सुपर उपयोगकर्ता स्तर तक बढ़ाने की अनुमति दी, जिसे 1993 से Windows NT कर्नेल के सभी x86 संस्करणों की सुरक्षा के लिए लागू माना जाता है। Windows NT, 2000, XP, Server 2003, Vista, Server 2008 और Windows 7 के सभी 32-बिट संस्करण शामिल हैं। ओरमंडी ने भेद्यता के लिए एक एक्सप्लॉइट (कंप्यूटर सुरक्षा) | प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉयट प्रकाशित किया। Microsoft द्वारा सुरक्षा पैच जारी करने से पहले, इस समस्या का समाधान 16-बिट एप्लिकेशन समर्थन को बंद करना था, जो पुराने प्रोग्रामों (जिन्हें DOS और Windows 3.1 के लिए लिखा गया था) को चलने से रोकता था। NTVDM सबसिस्टम शामिल नहीं होने के कारण Windows के 64-बिट संस्करण प्रभावित नहीं होते हैं। एक बार Microsoft सुरक्षा पैच प्रभावित ऑपरेटिंग सिस्टम पर लागू हो जाने के बाद VDM को सुरक्षित रूप से पुन: सक्षम किया जा सकता है।

सीमाएं
GDI ऑब्जेक्ट के लिए बढ़ी हुई प्रति-सत्र सीमा के कारण Windows XP 16-बिट सबसिस्टम (लेकिन Windows NT के पुराने संस्करणों में नहीं) में एक सीमा मौजूद है, जिसके कारण GDI हैंडल को दो बिट्स से दाईं ओर स्थानांतरित कर दिया जाता है, जब उन्हें परिवर्तित किया जाता है 32 से 16 बिट्स। नतीजतन, वास्तविक हैंडल 14 बिट्स से बड़ा नहीं हो सकता है और इसके परिणामस्वरूप 16-बिट एप्लिकेशन जो कि GDI सिस्टम क्रैश द्वारा 16384 से बड़े हैंडल को परोसा जाता है और एक त्रुटि संदेश के साथ समाप्त होता है।

सामान्य तौर पर, VDM और इसी तरह की तकनीकें आज के कंप्यूटरों पर अधिकांश पुराने DOS गेम को संतोषजनक ढंग से नहीं चलाती हैं। अनुकरण केवल सबसे बुनियादी बाह्य उपकरणों के लिए प्रदान किया जाता है, जिसे अक्सर अपूर्ण रूप से लागू किया जाता है. उदाहरण के लिए, एनटीवीडीएम में ध्वनि अनुकरण बहुत सीमित है। विंडोज के एनटी-पारिवारिक संस्करण केवल वास्तविक स्क्रीन को प्रति सेकंड कुछ बार अपडेट करते हैं जब एक डॉस प्रोग्राम इसे लिखता है, और वे उच्च रिज़ॉल्यूशन ग्राफिक्स मोड का अनुकरण नहीं करते हैं। क्योंकि सॉफ्टवेयर ज्यादातर होस्ट सीपीयू की गति से नेटिव चलता है, सभी टाइमिंग लूप समय से पहले समाप्त हो जाएंगे। यह या तो एक गेम को बहुत तेजी से चलाता है या सॉफ़्टवेयर को अनुकरणीय हार्डवेयर बाह्य उपकरणों पर ध्यान नहीं देता है, क्योंकि यह उत्तर के लिए पर्याप्त समय तक प्रतीक्षा नहीं करता है।

x64 और AArch64
में अनुपस्थिति एक x86-64 CPU में, वर्चुअल 8086 मोड केवल इसके लीगेसी मोड (16- और 32-बिट ऑपरेटिंग सिस्टम चलाने के लिए) में उप-मोड के रूप में उपलब्ध है, मूल 64-बिट लंबे मोड में नहीं। Windows के x86-64 संस्करणों पर NTVDM समर्थित नहीं है, डॉस कार्यक्रमों सहित, क्योंकि NTVDM एड्रेसिंग के लिए आवश्यक 16-बिट सेगमेंट को सक्षम करने के लिए स्थानीय डिस्क्रिप्टर तालिका के बजाय VM86 CPU मोड का उपयोग करता है। NTVDM AArch64 पर भी उपलब्ध नहीं है, क्योंकि Microsoft ने इस असंगत निर्देश सेट के लिए एक पूर्ण इम्यूलेटर जारी नहीं किया था, जैसा कि पिछले असंगत आर्किटेक्चर पर किया था।

जबकि एनटीवीडीएम विंडोज के x86-64 संस्करणों पर समर्थित नहीं है, फिर भी उन्हें वर्चुअलाइजेशन सॉफ्टवेयर का उपयोग करके चलाया जा सकता है, जैसे कि विंडोज 7 या VMware कार्य केंद्र के गैर-होम संस्करणों में विंडोज एक्सपी मोड। अन्य विधियों में NTVDMx64 का उपयोग करना शामिल है, गैर-x86 प्लेटफॉर्म के लिए Windows NT 4.0 से NTVDM के लीक हुए नकली कार्यान्वयन का एक अनौपचारिक पोर्ट, या OTVDM (WineVDM), MAME के ​​i386 इम्यूलेशन पर आधारित 16-बिट विंडोज दुभाषिया और लोकप्रिय विंडोज कम्पैटिबिलिटी लेयर, शराब (सॉफ्टवेयर) का 16-बिट भाग।

यह भी देखें

 * प्लेटफॉर्म वर्चुअलाइजेशन सॉफ्टवेयर की तुलना
 * DESQview 386 (1988 से)
 * शराब (सॉफ्टवेयर)
 * से DOSBox
 * आपूर्ति किया जाना
 * विलय (सॉफ्टवेयर)
 * माइक्रोसॉफ्ट विंडोज घटकों की सूची
 * सूत्र
 * विंडोज ऑन विंडोज (वाह)
 * आभासी मशीन (वीएम)

बाहरी संबंध

 * Virtual DOS Machine Structure
 * Troubleshooting MS-DOS-based programs in Windows XP
 * Troubleshooting an MS-DOS application which hangs the NTVDM subsystem in Windows XP and Windows Server 2003
 * Troubleshooting MS-DOS-based serial communication programs in Windows 2000 and later
 * MS-DOS Player for Win32-x64, a Microsoft MS-DOS Emulator, runs many command line DOS programs like compilers or other tools, also packaged into one stand-alone executable file.
 * vDOS, a DOS emulator designed for the running the more "serious" DOS apps (not games) on 64-bit NT systems (effectively a replacement for NTVDM on modern systems).