विज्ञापन

आपने अभी-अभी अपने पसंदीदा ओपन सोर्स ऐप में एक फीचर-पैक अपडेट डाउनलोड किया है। सब कुछ अच्छी तरह से काम कर रहा है, और आप इसे अपने अन्य उपकरणों पर उपयोग करते हैं - इसलिए इसे उन लोगों के लिए भी रोल करने का समय है।

आपके चमकदार नए लिनक्स लैपटॉप को छोड़कर, आपके विंडोज इंस्टॉलेशन पैकेज के अनुकूल नहीं है। कैसे अपने Android गोली के बारे में? आई - फ़ोन? PS4? आप केवल सॉफ्टवेयर के उस टुकड़े को क्यों नहीं ले सकते और जहाँ भी चाहें उसका उपयोग कर सकते हैं? आइए, "एक बार खरीदें, कहीं भी दौड़ें" के सपने के लिए कुछ अलग बाधाओं का पता लगाएं।

सॉफ्टवेयर डेवलपमेंट और ओएस आर्किटेक्चर

यह समझना कि सॉफ्टवेयर ऑपरेटिंग सिस्टम में काम क्यों नहीं करता है (सॉफ़्टवेयर कैसे बनाया जाता है, इसका थोड़ा सा पता होना चाहिए।

सॉफ्टवेयर विकास प्रक्रिया

डेस्कटॉप, सर्वर और मोबाइल के लिए एक बहुत ही बुनियादी सॉफ्टवेयर विकास प्रवाह में (यानी वेब नहीं प्रोग्रामिंग बनाम। वेब विकास: क्या अंतर है?आपको लगता है कि अनुप्रयोग प्रोग्रामर और वेब डेवलपर्स एक ही काम कर सकते हैं, लेकिन यह सच्चाई से बहुत दूर है। यहाँ प्रोग्रामर और वेब डेवलपर्स के बीच महत्वपूर्ण अंतर हैं। अधिक पढ़ें ), एक प्रोग्रामर करेगा:

  1. कुछ टाइप करें कोड एक या एक से अधिक फ़ाइलों में।
  2. संकलन कुछ कंप्यूटर में कोड निष्पादित कर सकते हैं।
  3. परीक्षा यह सुनिश्चित करने के लिए कि कार्यक्रम अपेक्षित रूप से काम करता है।
  4. पैकेज और वितरण / तैनाती सॉफ्टवेयर।
सॉफ्टवेयर ओएस संगतता देव प्रक्रिया

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

OS आर्किटेक्चर

समझने के लिए एक महत्वपूर्ण बिंदु यह है कि एक ऑपरेटिंग सिस्टम एक इकाई नहीं है। बल्कि, यह सॉफ्टवेयर की परतों से बना है।

ऑपरेटिंग सिस्टम गुठली

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

सॉफ्टवेयर ओएस संगतता कर्नेल मूल बातें
इमेज क्रेडिट: विकिमीडिया कॉमन्स

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

सिस्टम लाइब्रेरी

कई मामलों में सॉफ़्टवेयर सीधे कर्नेल पर कॉल नहीं करता है। इसके बजाय, यह करने के लिए कहता है सिस्टम लाइब्रेरी, या बुनियादी कार्यों का संग्रह। पुस्तकालय मौजूद हैं (उदाहरण के लिए) प्रत्येक और हर प्रोग्राम जो हार्ड ड्राइव में फ़ाइलों को बचाता है ऐसा करने के लिए फ़ंक्शन लिखने की आवश्यकता नहीं है। इसके बजाय, यह बस के लिए लिंक एक सिस्टम लाइब्रेरी और एक मौजूदा फ़ंक्शन का उपयोग करता है। लिनक्स के लिए GLibC लाइब्रेरी एक प्रमुख उदाहरण है, जैसे कि Win32 API में .DLL फाइलें या हैं एक मैक / सिस्टम / लाइब्रेरी निर्देशिका की सामग्री कैसे ओएस एक्स लाइब्रेरी फ़ोल्डर और क्यों यह आसान है का उपयोग करने के लिएअधिकांश OS X लाइब्रेरी फ़ोल्डर अकेले ही बचे हैं, लेकिन उपयोगकर्ता लाइब्रेरी में और उसके आसपास अपना रास्ता जानना उपयोगी है। अधिक पढ़ें .

सॉफ्टवेयर ओएस संगतता प्रणाली पुस्तकालयों
छवि क्रेडिट: ScottXW विकिमीडिया कॉमन्स के माध्यम से

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

ऑपरेटिंग सिस्टम निष्पादन हेडर

यूनिवर्सल सॉफ्टवेयर के लिए अंतिम मार्ग ऑपरेटिंग सिस्टम के लिए निष्पादन योग्य फ़ाइलों का प्रारूप है। एक OS को उम्मीद है कि यह फाइलों को चलाने के लिए एक विशेष का पालन करता है बाइनरी फ़ाइल प्रारूप सब कुछ आप फ़ाइल स्वरूपों और उनके गुणों के बारे में पता करने की आवश्यकता हैहम शब्द फ़ाइल को परस्पर उपयोग करते हैं: संगीत, छवि, स्प्रेडशीट, स्लाइड शो, और इसी तरह। लेकिन क्या एक फ़ाइल "फ़ाइल", वैसे भी बनाता है? आइए कंप्यूटिंग के इस मूल भाग को देखें और समझें। अधिक पढ़ें . उदाहरण के लिए, निष्पादन योग्य और लिंक करने योग्य प्रारूप (ईएलएफ) फाइलें जो ऑपरेटिंग सिस्टम पर चलती हैं जैसे कि लिनक्स और फ्रीबीएसडी को कुछ बाइट्स में फ़ाइल के कुछ गुणों को निर्दिष्ट करना होगा, जैसा कि नीचे दिखाया गया है छवि।

सॉफ्टवेयर ओएस संगतता एल्फ हेडर

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

सामान्य तौर पर, ऑपरेटिंग सिस्टम अपने स्वयं के एबीआई को लागू करते हैं, जो प्रोसेसर के प्रकार, कर्नेल और किसी भी मानक सिस्टम लाइब्रेरी के संयोजन द्वारा निर्धारित किया जाता है। लेकिन कभी-कभी एक ओएस एक से अधिक को लागू करेगा। फ्रीबीएसडी के पास लिनक्स बायनेरिज़ के लिए समर्थन है, उदाहरण के लिए, क्योंकि यह फ्रीबीएसडी कर्नेल (लिनक्स कर्नेल के बजाय) पर एक ऐड-ऑन के रूप में एक लिनक्स एबीआई प्रदान करता है। इससे अलग है virtualizatiton कार्यक्रम एक आभासी मशीन क्या है? सब कुछ जो आपके लिए जानना ज़रूरी हैवर्चुअल मशीनें आपको अपने वर्तमान कंप्यूटर पर अन्य ऑपरेटिंग सिस्टम चलाने की अनुमति देती हैं। यहां आपको उनके बारे में जानना चाहिए। अधिक पढ़ें जैसे VMWare या VirtualBox, जो एक संपूर्ण मशीन (हार्डवेयर और सभी) का अनुकरण करने के लिए सॉफ़्टवेयर का उपयोग करते हैं। परिणामस्वरूप इस प्रकार की एबीआई-संगतता तेज है, लेकिन बनाए रखने के लिए बहुत अधिक प्रयास। यही कारण है कि यह दुर्लभ है, हालांकि Microsoft ने हाल ही में मूल्य देखा उबंटू अब विंडोज स्टोर पर उपलब्ध हैविंडोज इनसाइडर अब विंडोज 10 पर उबंटू डाउनलोड और इंस्टॉल कर सकते हैं। यह एक अपवित्र संघ में लिनक्स और विंडोज को एक साथ लाता है, कुछ ने कभी कल्पना की थी कि वे गवाह के लिए लंबे समय तक जीवित रहेंगे। अधिक पढ़ें करने में।

अपवाद: व्याख्या किए गए सॉफ़्टवेयर

उपर्युक्त के आधार पर हमने सीखा कि डेवलपर्स एक के लिए सॉफ्टवेयर लिखते हैं, और केवल एक, लक्ष्य प्रणाली का प्रकार। सिवाय इसके कि वे कब नहीं। कई एप्लिकेशन हैं जिन्हें आप मैक पर डाउनलोड और चला सकते हैं, फिर विंडोज पर कॉपी और रन कर सकते हैं, और शायद फिर से कॉपी भी कर सकते हैं और बिना किसी समस्या के लिनक्स पर चला सकते हैं। यह कैसे हो सकता है?

क्या मैं अब तक झूठ बोल रहा था?

जैसा कि यह पता चला है, सॉफ्टवेयर की एक श्रेणी है जो सतह पर दिखता है जैसे कि यह "हर जगह चलता है।" आप इसे किसी भी पर डाउनलोड और चला सकते हैं समर्थित मंच - कुंजी शब्द "समर्थित"। वास्तव में, आप आवेदन के लिए स्रोत कोड डाउनलोड कर रहे हैं, जबकि एक अन्य आवेदन ( दुभाषिया) वास्तविक समय में सीधे स्रोत कोड को चलाने की तरह है। यह एक ओवरसाइम्प्लिफिकेशन का काम है, इसलिए आइए देखें कि यह एक दो भाषाओं के साथ कैसे काम करता है।

जावा

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

एप्लिकेशन और OS के बीच इस अतिरिक्त सॉफ़्टवेयर लेयर को डालकर, Java आपको उन कार्यों के सेट पर ध्यान केंद्रित करने की अनुमति देता है जो ऑपरेटिंग सिस्टमों में समान हैं। आप जावा को बताते हैं कि आप क्या करना चाहते हैं, और अपने सिस्टम के लिए जेवीएम को इस बारे में चिंता करने दें कि वास्तव में यह कैसे करना है। नीचे की तस्वीर इस कार्रवाई में दिखाती है, जहां JIDE सॉफ्टवेयर का जावा डेस्कटॉप एप्लीकेशन फ्रेमवर्क मैक (शीर्ष), विंडोज (मध्य-बाएं), "शुद्ध जावा" (मध्य-दाएं), और लिनक्स (नीचे) के लिए एक ही आवेदन प्रदर्शित करता है।

सॉफ्टवेयर ओएस संगतता jide jdaf
चित्र साभार: JIDE Software

जावा प्रोग्राम वास्तविक समय में खुद को "संकलित" नहीं करते हैं। बल्कि, Java कंपाइलर उन्हें "bytecode" में रेंडर करेगा। आप एक आधे-बेक्ड प्रोग्राम के रूप में बायटेकोड के बारे में सोच सकते हैं। जब डेवलपर उस एप्लिकेशन को जारी करता है, जो इसे संकलित करता है, तो यह जाने बिना कि यह किस ओएस पर चलने वाला है। जब आप वास्तव में इसे लॉन्च करते हैं, तो होस्ट ओएस के कार्यों को फिट करने के लिए JVM "इसे बाकी तरीके से बेक करेगा"।

अजगर

एक लोकप्रिय व्याख्या की गई भाषा है अजगर 5 कारण क्यों पायथन प्रोग्रामिंग बेकार नहीं हैअजगर - आप या तो इसे प्यार करते हैं या आप इसे नफरत करते हैं। आप पेंडुलम की तरह एक छोर से दूसरे छोर तक झूल सकते हैं। भले ही, पायथन एक ऐसी भाषा है जिसके बारे में अस्पष्ट होना मुश्किल है। अधिक पढ़ें . जब आप पायथन स्क्रिप्ट चलाते हैं, तो पायथन इंटरप्रिटर ओएस के निर्देशों में कोड का अनुवाद करेगा। यह जावा के समान कार्य भी कर सकता है: जब आप अपने एप्लिकेशन के बाहर से "आयात" कोड करते हैं, तो यह पहली बार चलाने के लिए इसे संचित करने के लिए संकलित करता है। तब दुभाषिया को पता चल जाएगा कि, बाद के रनों पर, मूल कोड बदल गया है, जिस बिंदु पर यह नए बायटेकोड पर फिर से संकलित करेगा।

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

सॉफ्टवेयर ओएस संगतता अजगर दुभाषिया

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

यहां तक ​​कि जब सॉफ्टवेयर एक ही है, यह शायद नहीं है

उपयोगकर्ताओं के लिए दुर्भाग्य से, तकनीक उद्योग ने वास्तव में "सार्वभौमिक" प्रारूप विकसित नहीं किया है। और ऐसा कभी नहीं हो सकता। इस प्रकार के मानकों का परिचय अक्सर "कम से कम सामान्य भाजक" समाधान में होता है, जिसमें सभी की स्वीकृति प्राप्त करने के हित में रियायतें होती हैं।

तुम क्या सोचते हो? क्या आपके पास सार्वभौमिक-संगत सॉफ़्टवेयर होगा, भले ही इसका मतलब यह उतना अच्छा न हो? या क्या आप उस ऑपरेटिंग सिस्टम के साथ ठीक हैं, जिसका आप उपयोग कर रहे हैं, और अन्य प्लेटफार्मों से ऐप्स में कोई दिलचस्पी नहीं है? हमें टिप्पणियों में नीचे बताएं!

चित्र साभार: Masterchief_Productions / Shutterstock

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