स्थान पर निष्पादित (एक्सक्यूट इन प्लेस)

कंप्यूटर विज्ञान में, जगह पर अमल (XIP) कार्यक्रमों को रैंडम एक्सेस मेमोरी  में कॉपी करने के बजाय सीधे दीर्घकालिक भंडारण से क्रियान्वित करने की एक विधि है। यह आवश्यक मेमोरी की कुल मात्रा को कम करने के लिए साझा मेमोरी का उपयोग करने का एक विस्तार है।

इसका सामान्य प्रभाव यह है कि प्रोग्राम टेक्स्ट लिखने योग्य मेमोरी का उपभोग नहीं करता है, इसे डायनेमिक डेटा के लिए सहेजता है, और यह कि प्रोग्राम के सभी उदाहरण एक कॉपी से चलते हैं।

इसके लिए काम करने के लिए, कई मानदंडों को पूरा करना होगा:
 * भंडारण को सेंट्रल प्रोसेसिंग यूनिट को नियमित मेमोरी (या एक अनुकूली परत मौजूद होना चाहिए) के समान इंटरफ़ेस प्रदान करना चाहिए।
 * इस इंटरफ़ेस को रैंडम एक्सेस पैटर्न के साथ पर्याप्त रूप से तेज़ रीड ऑपरेशंस प्रदान करना चाहिए।
 * फाइल सिस्टम, यदि एक का उपयोग किया जाता है, तो उपयुक्त मैपिंग फ़ंक्शन को प्रदर्शित करने की आवश्यकता होती है।
 * प्रोग्राम को या तो लिंकर (कंप्यूटिंग) होना चाहिए ताकि पता चल सके कि स्टोरेज सिस्टम में दिखाई देता है या स्थिति-स्वतंत्र कोड | स्थिति-स्वतंत्र होना चाहिए।
 * कार्यक्रम को लोड की गई छवि के भीतर डेटा को संशोधित नहीं करना चाहिए।

भंडारण आवश्यकताओं को आमतौर पर फ्लैश मेमोरी #NOR मेमोरी या EEPROM का उपयोग करके पूरा किया जाता है, जिसे रीड ऑपरेशंस के लिए अलग-अलग शब्दों के रूप में संबोधित किया जा सकता है, हालांकि यह अधिकांश सेटअपों में सामान्य सिस्टम रैम की तुलना में थोड़ा धीमा है।

XIP बूट लोड के दौरान
आमतौर पर, प्रथम चरण बूट लोडर एक एक्सआईपी प्रोग्राम है जो उस पते पर चलने के लिए जुड़ा हुआ है जिस पर फ्लैश चिप (एस) को पावर-अप पर मैप किया जाता है और इसमें सिस्टम रैम स्थापित करने के लिए एक न्यूनतम प्रोग्राम होता है (जो घटकों पर निर्भर करता है) व्यक्तिगत बोर्डों पर उपयोग किया जाता है और इसे पर्याप्त रूप से सामान्यीकृत नहीं किया जा सकता है ताकि उचित अनुक्रम को प्रोसेसर हार्डवेयर में एम्बेड किया जा सके) और फिर दूसरे चरण के बूटलोडर या OS कर्नेल (ऑपरेटिंग सिस्टम) को RAM में लोड करता है।

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

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

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

मुख्य मेमोरी को इनिशियलाइज़ करने के लिए BIOS और UEFI XIP का उपयोग करते हैं।

XIP फ़ाइल सिस्टम के रूप में
XIP फाइल सिस्टम पर आवश्यकताएं रखता है जिन्हें पूरा करना अक्सर मुश्किल होता है। पृष्ठ तालिका के बिना सिस्टम में, पूरी फ़ाइल को लगातार बाइट्स में संग्रहीत किया जाना चाहिए और खंडित नहीं होना चाहिए, जबकि फ्लैश आधारित फाइल सिस्टम अक्सर फ्लैश चिप के क्षेत्रों में डेटा वितरित करने का लक्ष्य रखते हैं, जिनमें कम से कम चक्र मिटाए जाते हैं और चिप समतलन पुराना होना पहनते हैं।, इसके जीवनकाल को लम्बा करना।

इन सभी जटिलताओं और स्पीड ट्रेडऑफ़ का मतलब है कि XIP का उपयोग आमतौर पर केवल पहले चरण के बूटलोडर्स के लिए किया जाता है या जब RAM की आपूर्ति बहुत कम होती है। विशेष रूप से, दूसरी से चौथी पीढ़ी के वीडियो गेम कंसोल रॉम कारतूस के पते और डेटा बस को कंसोल के पते से जोड़ते हैं, जो (उदाहरण के लिए) अटारी 2600 हार्डवेयर#तकनीकी विनिर्देशों को इसके एमओएस टेक्नोलॉजी 6532 में केवल 128 बाइट्स रैम के साथ काम करने देता है।

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

एक नेटबीएसडी कार्यान्वयन भी विकास के अधीन है।

यह भी देखें

 * फाइल सिस्टम की तुलना
 * रोम कारतूस
 * फर्मवेयर
 * एएक्सएफएस