विंडोज में लिनक्स एमुलेटर कैसे काम करते हैं?


0

जाहिर है, उन्होंने विंडोज में चलने के लिए लिनक्स अनुप्रयोगों के लिए एक लिनक्स वातावरण बनाया। परंतु,

  • इसके लिए किस तरह की तकनीकों का इस्तेमाल किया जाता है?
  • क्या कोई विशेष तंत्र का पालन किया जाता है?

मैं मान रहा हूँ कि आप MSYS / MinGW / Cygwin जैसे अनुप्रयोगों का उल्लेख कर रहे हैं?
केसी कुबैल

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

आप किस लिनक्स एमुलेटर के बारे में बात कर रहे हैं? आप किस वास्तविक समस्या का सामना कर रहे हैं?
जूल

मैं किसी भी लिनक्स एमुलेटर का उपयोग नहीं कर रहा हूं। मैं यह जानने के लिए उत्सुक हूं कि वे इसे कैसे प्राप्त करते हैं? क्योंकि लिनक्स और विंडो में विभिन्न निष्पादन योग्य फ़ाइल स्वरूपों का उपयोग किया जाता है। सभी एमुलेटर द्वारा उपयोग की जाने वाली कुछ बुनियादी या सामान्य तकनीक होनी चाहिए, जो कि वह है। यदि नहीं, तो वे एक दूसरे से कैसे भिन्न हैं?
अरुलप्पन

क्या आप किसी विशिष्ट समस्या का सामना कर रहे हैं? यह साइट उन मुद्दों के बारे में क्यू एंड ए के लिए है, जो वास्तव में उपयोगकर्ता कर रहे हैं, चीजों पर चर्चा या सिद्धांत नहीं कि कैसे काम करते हैं।
MaQleod

जवाबों:


2

लिनक्स एमुलेटर जैसी कोई चीज नहीं है

  • यदि आप Cygwin के बारे में बात कर रहे हैं, तो वे विशेष रूप से उपयोगकर्ता नाम DLL फ़ाइल में Windows API कॉल के संदर्भ में सभी यूनिक्स प्रणाली कॉल को फिर से लागू करते हैं। Cygwin पर्यावरण के लिए संकलित कार्यक्रम इसलिए विंडोज में स्वतंत्र रूप से नहीं चल सकते

    Cygwin में दो भाग होते हैं: एक डायनेमिक-लिंक लाइब्रेरी (DLL) जो कि C मानक लाइब्रेरी के रूप में API संगतता परत के रूप में है, जो POSIX API कार्यक्षमता का एक बड़ा हिस्सा प्रदान करता है, और सॉफ्टवेयर टूल्स और एप्लिकेशन का एक व्यापक संग्रह जो एक यूनिक्स प्रदान करता है। -देखना और महसूस करना।

    ...

    साइगविन में एक पुस्तकालय शामिल है जो Win32 सिस्टम कॉल, एक GNU डेवलपमेंट टूलचैन (GCC और GDB सहित) के संदर्भ में पॉसिक्स सिस्टम कॉल एपीआई को लागू करता है, सॉफ्टवेयर डेवलपमेंट की अनुमति देता है, और यूनिक्स सिस्टम पर उन लोगों के बराबर बड़ी संख्या में एप्लिकेशन प्रोग्राम चला रहा है।

    https://en.wikipedia.org/wiki/Cygwin

  • यदि आप MSYS / MSYS2 या MinGW के बारे में बात कर रहे हैं तो वे किसी भी मायने में एक सिम्युलेटर नहीं हैं। कार्यक्रम Microsoft C लाइब्रेरी का उपयोग करके देशी विंडोज बायनेरिज़ में संकलित किए जाते हैं और वे बिना किसी विशेष वातावरण के चल सकते हैं

    हालाँकि, Cygwin और MinGW दोनों का उपयोग Windows में Unix सॉफ़्टवेयर को पोर्ट करने के लिए किया जा सकता है, लेकिन उनके पास अलग-अलग दृष्टिकोण हैं: Cygwin का उद्देश्य पूर्ण POSIX परत प्रदान करना है जिसमें सभी प्रमुख Unix सिस्टम कॉल और लाइब्रेरीज़ का पूर्ण कार्यान्वयन शामिल है। प्रदर्शन की तुलना में संगतता को उच्च प्राथमिकता माना जाता है। दूसरी ओर, MinGW की प्राथमिकताएं सादगी और प्रदर्शन हैं। जैसे, यह कुछ POSIX API प्रदान नहीं करता है, जिसे Windows API, जैसे fork(), mmap()और का उपयोग करके आसानी से लागू नहीं किया जा सकता है ioctl()। क्रॉस-प्लेटफ़ॉर्म लाइब्रेरी का उपयोग करके लिखे गए एप्लिकेशन जो कि खुद SDG, wxWidgets, Qt, या GTK + जैसे MinGW में पोर्ट किए गए हैं, आमतौर पर MinGW में आसानी से संकलन करेंगे जैसे कि वे Cygwin में होंगे।

    https://en.wikipedia.org/wiki/MinGW#Comparison_with_Cygwin

  • विंडोज 10 में MS ने लिनेक्स पेश किया जो वास्तव में एक लिनक्स सिम्युलेटर है और एमुलेटर नहीं, ठीक उसी तरह जैसे वाइन एमुलेटर नहीं है । उनके पास लिनक्स सिस्टम कॉल को हैंडल करने के लिए एक विशेष कर्नेल घटक है और उन्हें पुन: लिंक किए बिना देशी लिनक्स ईएलएफ बायनेरिज़ को चलाने के लिए विंडोज संस्करण में परिवर्तित करना है।

    डब्लूएसएल उन घटकों का एक संग्रह है जो मूल लिनक्स ईएलएफ 64 बायनेरिज़ को विंडोज पर चलने में सक्षम बनाता है। इसमें उपयोगकर्ता मोड और कर्नेल मोड दोनों घटक शामिल हैं। यह मुख्य रूप से शामिल है:

    • उपयोगकर्ता मोड सत्र प्रबंधक सेवा जो लिनक्स उदाहरण जीवन चक्र को संभालती है
    • पिको प्रदाता ड्राइवर (lxss.sys, lxcore.sys) जो Linux के syscalls का अनुवाद करके लिनक्स कर्नेल का अनुकरण करते हैं
    • पिको प्रक्रियाएं जो अनमॉडिफाइड यूजर मोड लिनक्स को होस्ट करती हैं (जैसे / बिन / बैश)

    चार्ट ब्लॉक करें

    डब्लूएसएल विंडोज एनटी कर्नेल के शीर्ष पर लिनक्स कर्नेल इंटरफ़ेस को वर्चुअलाइज करके WSL अनमॉडिफाइड लिनक्स ELF64 बायनेरिज़ को निष्पादित करता है। कर्नेल इंटरफ़ेस जो इसे उजागर करता है उनमें से एक सिस्टम कॉल (syscalls) है। एक syscall कर्नेल द्वारा प्रदान की जाने वाली एक सेवा है जिसे उपयोगकर्ता मोड से कॉल किया जा सकता है। दोनों लिनक्स कर्नेल और विंडोज NT कर्नेल उपयोगकर्ता मोड में कई सौ syscalls को उजागर करते हैं, लेकिन उनके अलग-अलग शब्दार्थ हैं और आमतौर पर सीधे संगत नहीं होते हैं। उदाहरण के लिए, लिनक्स कर्नेल जैसी चीज़ें शामिल हैं fork, openऔर killWindows NT कर्नेल है, जबकि तुलनीय NtCreateProcess, NtOpenFileऔर NtTerminateProcess

    https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/

अतीत में UNIX के लिए Microsoft POSIX सबसिस्टम और Windows सेवाएँ भी थीं, लेकिन वे लिनक्स चलाने के लिए नहीं थीं । अधिक जानकारी के लिए विंडोज में POSIX और UNIX सपोर्ट पढ़ें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.