स्थान पर निष्पादित (एक्सक्यूट इन प्लेस)
कंप्यूटर विज्ञान में, स्थान पर निष्पादित (एक्सक्यूट इन प्लेस) (एक्सआईपी) प्रोग्राम को रैंडम एक्सेस मेमोरी में कॉपी करने के अतिरिक्त सीधे दीर्घकालिक संचय से क्रियान्वित करने की एक विधि है। यह आवश्यक मेमोरी की कुल मात्रा को कम करने के लिए साझा मेमोरी का उपयोग करने का एक विस्तार है।
इसका सामान्य प्रभाव यह है कि प्रोग्राम टेक्स्ट लिखने योग्य मेमोरी का उपभोग नहीं करता है, इसे डायनेमिक डेटा के लिए सहेजता है,और प्रोग्राम के सभी उदाहरण एक ही कॉपी से चलाए जाते हैं।
इसके लिए काम करने के लिए, कई मानदंडों को पूरा करना होता है:
- संचय को सेंट्रल प्रोसेसिंग यूनिट को नियमित मेमोरी (या एक अनुकूली परत उपस्थित होना चाहिए) के समान इंटरफ़ेस प्रदान करना चाहिए।
- इस इंटरफ़ेस को रैंडम एक्सेस प्रारूप के साथ पर्याप्त रूप से तेज़ रीड ऑपरेशंस प्रदान करना चाहिए।
- फाइल प्रणाली, यदि एक का उपयोग किया जाता है, तो उपयुक्त मैपिंग फ़ंक्शन को प्रदर्शित करने की आवश्यकता होती है।
- प्रोग्राम को या तो लिंकर (कंप्यूटिंग) होना चाहिए जिससे पता चल सके कि संचय प्रणाली में दिखाई देता है या स्थिति-स्वतंत्र कोड होना चाहिए।
- प्रोग्राम को लोड की गई छवि के अन्दर डेटा को संशोधित नहीं करना चाहिए।
भंडारण आवश्यकताओं को सामान्यतः एनओआर फ्लैश मेमोरी या इइपीरोम का उपयोग करके पूरा किया जाता है, जिसे रीड ऑपरेशंस के लिए अलग-अलग शब्दों के रूप में संबोधित किया जा सकता है, चूंकि यह अधिकांश सेटअपों में सामान्य प्रणाली रैम की तुलना में कुछ धीमा है।
बूट लोड के समय एक्सआईपी
सामान्यतः, प्रथम चरण बूट लोडर एक एक्सआईपी प्रोग्राम है जो उस पते पर चलने के लिए जुड़ा हुआ है जिस पर फ्लैश चिप (एस) को पावर-अप पर मैप किया जाता है और इसमें प्रणाली रैम (जो घटकों पर निर्भर करता है) स्थापित करने के लिए एक न्यूनतम प्रोग्राम होता है व्यक्तिगत बोर्डों पर उपयोग किया जाता है और इसे पर्याप्त रूप से सामान्यीकृत नहीं किया जा सकता है जिससे उचित अनुक्रम को प्रोसेसर हार्डवेयर में एम्बेड किया जा सके) और फिर दूसरे चरण के बूटलोडर या ओएस कर्नेल (ऑपरेटिंग प्रणाली) को रैम में लोड करता है।
इस प्रारंभीकरण के समय, लिखने योग्य मेमोरी उपलब्ध नहीं हो सकती है, इसलिए सभी संगणनाएं प्रोसेसर रजिस्टरों के अन्दर की जानी चाहिए। इस कारण से, पहले चरण के बूट लोडर असेंबली भाषा में लिखे जाते हैं और केवल अगले प्रोग्राम के लिए सामान्य निष्पादन वातावरण प्रदान करने के लिए न्यूनतम करते हैं। कुछ प्रोसेसर या तो चिप में कुछ मात्रा में एसरैम एम्बेड करते हैं,[1] या ऑनबोर्ड कैश मेमोरी को रैम के रूप में उपयोग करने की अनुमति देते हैं,[2] जिससे उच्च-स्तरीय भाषा का उपयोग करके इस पहले चरण के बूट लोडर को लिखना आसान हो सके।
कर्नेल या बूटलोडर के लिए, पता स्थान सामान्यतः आंतरिक रूप से असाइन किया जाता है, इसलिए उनके लिए एक्सआईपी का उपयोग करने के लिए, यह लिंकर को अलग-अलग पता श्रेणियों में अपरिवर्तनीय और परिवर्तनीय डेटा रखने के लिए निर्देश देने के लिए पर्याप्त है और संशोधित डेटा की प्रतिलिपि बनाने के लिए एक तंत्र प्रदान करता है। किसी भी कोड के चलने से पहले लिखने योग्य मेमोरी में जो यह मानता है कि डेटा को सामान्य रूप से एक्सेस किया जा सकता है। यह पिछले चरण के भाग के रूप में, या प्रोग्राम की प्रारंभ में एक छोटे कोड खंड के अन्दर किया जा सकता है।
यदि पता स्थान बाहरी रूप से असाइन किया गया है, जैसे कि एक प्रणाली पर चलने वाले एप्लिकेशन प्रोग्राम में जो आभासी मेमोरी प्रदान नहीं करता है, तो कंपाइलर को डेटा क्षेत्र की एक निजी प्रति के लिए एक पॉइंटर को ऑफ़सेट जोड़कर सभी परिवर्तनीय डेटा तक पहुंचने की आवश्यकता होती है। इस स्थिति में, बाहरी लोडर विशिष्ट मेमोरी क्षेत्रों को स्थापित करने के लिए उत्तरदायी है।
मुख्य मेमोरी को इनिशियलाइज़ करने के लिए बीआईओएस और यूईएफआई एक्सआईपी का उपयोग करते हैं।
एक्सआईपी फ़ाइल प्रणाली के रूप में
यूईएफआईएक्सआईपी फाइल प्रणाली पर आवश्यकताएं रखता है जिन्हें पूरा करना अधिकांश मुश्किल होता है। पृष्ठ तालिका के बिना प्रणाली में, पूरी फ़ाइल को लगातार बाइट्स में संग्रहीत किया जाना चाहिए और खंडित नहीं होना चाहिए, जबकि फ्लैश आधारित फाइल प्रणाली अधिकांश फ्लैश चिप के क्षेत्रों में डेटा वितरित करने का लक्ष्य रखते हैं, जो कम से कम मिटाने वाले चक्रों और यहां तक कि घिसाव को भी खत्म कर देते हैं। चिप, अपने जीवनकाल को लम्बा खींचती है।
इन सभी जटिलताओं और स्पीड ट्रेडऑफ़ का अर्थ है कि एक्सआईपी का उपयोग सामान्यतः केवल पहले चरण के बूटलोडर्स के लिए किया जाता है या जब रैम की आपूर्ति बहुत कम होती है। विशेष रूप से, दूसरी से चौथी पीढ़ी के वीडियो गेम कंसोल रोम कार्ट्रिज के पते और डेटा बस को कंसोल के पते से जोड़ते हैं,[3] जो (उदाहरण के लिए) अटारी 2600 को अपने जॉयस्टिक इंटरफ़ेस एमओएस टेक्नोलॉजी 6532 में केवल 128 बाइट्स रैम के साथ काम करने देता है।
लिनक्स के लिए एक अपेक्षाकृत नया फाइल प्रणाली, जिसे एएक्सएफएस (एडवांस्ड एक्सआईपी फाइल प्रणाली) कहा जाता है, जिसका उद्देश्य विशेष रूप से यूजर-स्पेस एप्लिकेशन के इन-प्लेस निष्पादन के संबंध में एक्सआईपी से जुड़ी कुछ कमियों को दूर करना है। यह उदाहरण के लिए एक निष्पादन योग्य बाइनरी फ़ाइल को एक्सआईपी क्षेत्रों में विभाजित करना संभव बनाता है, इस प्रकार ऊपर वर्णित विखंडन के प्रतिबंध से बचा जाता है।
एक नेटबीएसडी कार्यान्वयन भी विकास के अधीन है।[4]
यह भी देखें
- फाइल प्रणाली की तुलना
- रोम कार्ट्रिज
- फर्मवेयर
- एएक्सएफएस
संदर्भ
- ↑ Samsung S3C2416X have 64kB embedded SRAM available on the system bus
- ↑ Broadcom BCM2835 uses its Level 2 Cache as boot loader RAM before SDRAM is initialized
- ↑ US patent 4485457A, Richard K. Balaska, Robert L. Hunter, and Scott S. Robinson, "Memory system including RAM and page switchable ROM", issued 1984-11-27, assigned to CBS Inc.
- ↑ Uebayashi, Masao (2010-04-05). "eXecute-In-Place (XIP) Support for NetBSD" (PDF). BSDCan.
बाहरी संबंध
- Bird, Tim R. (2004). "Methods to Improve Bootup Time in Linux" (PDF). Ottawa Linux Symposium.
- Hulbert, Jared (2008). "Introducing the Advanced XIP File System" (PDF). Ottawa Linux Symposium.
- Wilshire, Phil (2002-08-28). "eXecute In Place (XIP) overview". uCdot. Archived from the original on 2007-10-20. Retrieved 2007-09-25.
- Wellhöfer, Sören (2009-09-17). "Application eXecute-In-Place (XIP) with Linux and AXFS". Retrieved 2009-09-17.
- "Configure Linux for XIP (Execution In Place) on PowerPC". DENX Software Engineering.
- "Kernel XIP". Embedded Linux Wiki.
- "Linux Application XIP". Embedded Linux Wiki.
- "Execute in Place file system driver - xip2fs". Linux for S/390.