Memory management (operating systems)
ऑपरेटिंग सिस्टम में, स्मृति प्रबंधन कंप्यूटर की प्राथमिक स्मृति के प्रबंधन के लिए जिम्मेदार कार्य है। स्मृति प्रबंधन कार्य प्रत्येक स्मृति स्थान की स्थिति पर नज़र रखता है, या तो आवंटित या मुफ़्त। यह निर्धारित करता है कि प्रतिस्पर्धी प्रक्रियाओं के बीच स्मृति कैसे आवंटित की जाती है, यह तय करते हुए कि किसे स्मृति मिलती है, उन्हें कब प्राप्त होती है, और उन्हें कितनी अनुमति दी जाती है। जब स्मृति आवंटित की जाती है तो यह निर्धारित करता है कि कौन से स्मृति स्थान निर्धारित किए जाएंगे। यह तब ट्रैक करता है जब स्मृति मुक्त या आवंटित नहीं होती है और स्थिति को अपडेट करती है। यह अनुप्रयोग स्मृति प्रबंधन से अलग है, जिस तरह से एक प्रक्रिया ऑपरेटिंग सिस्टम द्वारा उसे सौंपी गई स्मृति का प्रबंधन करती है। स्मृति प्रबंधन तकनीक एकल सन्निहित आवंटन एकल आवंटन सबसे सरल स्मृति प्रबंधन तकनीक है। कंप्यूटर की सभी मेमोरी, आमतौर पर ऑपरेटिंग सिस्टम के लिए आरक्षित एक छोटे से हिस्से को छोड़कर, एक ही एप्लिकेशन के लिए उपलब्ध होती है। एमएस-डॉस एक ऐसी प्रणाली का उदाहरण है जो इस तरह से स्मृति आवंटित करती है। एकल अनुप्रयोग चलाने वाला एक एम्बेडेड सिस्टम भी इस तकनीक का उपयोग कर सकता है। एकल सन्निहित आवंटन का उपयोग करने वाली प्रणाली अभी भी उपयोगकर्ताओं के बीच स्विच करने के लिए स्मृति की सामग्री की अदला-बदली करके बहु-कार्य कर सकती है। संगीत ऑपरेटिंग सिस्टम के शुरुआती संस्करणों में इस तकनीक का उपयोग किया गया था। विभाजित आवंटन प्राथमिक स्मृति को कई स्मृति विभाजनों में विभाजित करता है, आमतौर पर स्मृति के सन्निहित क्षेत्र। प्रत्येक विभाजन में किसी विशिष्ट कार्य या कार्य के लिए सभी जानकारी हो सकती है। स्मृति प्रबंधन में किसी काम के शुरू होने पर उसे विभाजन आवंटित करना और काम समाप्त होने पर उसे अलग करना शामिल है। विभाजित आवंटन के लिए आम तौर पर कुछ हार्डवेयर समर्थन की आवश्यकता होती है ताकि नौकरियों को एक दूसरे के साथ या ऑपरेटिंग सिस्टम के साथ हस्तक्षेप करने से रोका जा सके। आईबीएम सिस्टम/360 में लॉक-एंड-की तकनीक का उपयोग किया गया था। अन्य प्रणालियों ने आधार और सीमा रजिस्टरों का उपयोग किया जिसमें विभाजन की सीमाएँ थीं और अमान्य पहुँच को चिह्नित किया गया था। UNIVAC 1108 भंडारण सीमा रजिस्टर में निर्देशों और डेटा के लिए अलग आधार/बाध्य सेट थे। सिस्टम ने मेमोरी इंटरलीविंग का लाभ उठाते हुए आई बैंक और डी बैंक को अलग-अलग मेमोरी मॉड्यूल में रखा। विभाजन या तो स्थिर हो सकते हैं, जिसे प्रारंभिक प्रोग्राम लोड (आई. पी. एल.) या बूट समय में परिभाषित किया गया है, या कंप्यूटर ऑपरेटर द्वारा, या गतिशील, यानी स्वचालित रूप से एक विशिष्ट कार्य के लिए बनाया गया है। आई. बी. एम. सिस्टम/360 ऑपरेटिंग सिस्टम मल्टीप्रोग्रामिंग विद ए फिक्स्ड नंबर ऑफ टास्कस (एम. एफ. टी.) स्थैतिक विभाजन का एक उदाहरण है, और वेरिएबल नंबर ऑफ टास्कस (एम. वी. टी.) के साथ मल्टीप्रोग्रामिंग गतिशील का एक उदाहरण है। एम. वी. टी. और उत्तराधिकारी अन्य प्रणालियों में स्थिर विभाजनों से गतिशील विभाजनों को अलग करने के लिए क्षेत्र शब्द का उपयोग करते हैं। विभाजन हार्डवेयर टाइप मेमोरी का उपयोग करके स्थानांतरित किए जा सकते हैं, जैसे कि बरोज कॉर्पोरेशन बी5500, या पीडीपी-10 या जीई-635 जैसे आधार और सीमा रजिस्टर। रिलोकेटेबल विभाजनों को सन्निहित भौतिक स्मृति के बड़े हिस्से प्रदान करने के लिए संकुचित किया जा सकता है। कम्पैक्शन मेमोरी के "इन-यूज़" क्षेत्रों को "होल" या प्रक्रिया समाप्ति के कारण मेमोरी के अप्रयुक्त क्षेत्रों को खत्म करने के लिए आगे बढ़ाता है ताकि बड़े सन्निहित मुक्त क्षेत्र बनाए जा सकें। कुछ प्रणालियाँ अतिरिक्त स्मृति को मुक्त करने के लिए विभाजनों को माध्यमिक भंडारण में बदलने की अनुमति देती हैं। आई. बी. एम. के टाइम शेयरिंग ऑप्शन (टी. एस. ओ.) के शुरुआती संस्करणों ने समय-साझाकरण विभाजनों में और बाहर उपयोगकर्ताओं की अदला-बदली की। पृष्ठ स्मृति प्रबंधन पृष्ठ आवंटन कंप्यूटर की प्राथमिक स्मृति को निश्चित आकार की इकाइयों में विभाजित करता है जिन्हें पृष्ठ फ्रेम कहा जाता है, और कार्यक्रम का आभासी पता स्थान समान आकार के पृष्ठों में विभाजित होता है। हार्डवेयर स्मृति प्रबंधन इकाई पृष्ठों को फ्रेम में मानचित्रित करती है। भौतिक स्मृति को पृष्ठ के आधार पर आवंटित किया जा सकता है जबकि पता स्थान सन्निहित दिखाई देता है। आम तौर पर, पृष्ठ स्मृति प्रबंधन के साथ, प्रत्येक कार्य अपने पते के स्थान पर चलता है। हालांकि, कुछ एकल पता स्थान ऑपरेटिंग सिस्टम हैं जो एक ही पता स्थान के भीतर सभी प्रक्रियाओं को चलाते हैं, जैसे कि आईबीएम आई, जो एक बड़े पता स्थान के भीतर सभी प्रक्रियाओं को चलाता है, और आईबीएम ओएस/वीएस2 (एसवीएस), जो सभी कार्यों को एक ही 16एमआईबी आभासी पता स्थान में चलाता है। पेज मेमोरी को मांग-पेज किया जा सकता है जब सिस्टम प्राथमिक और माध्यमिक मेमोरी के बीच आवश्यकतानुसार पृष्ठों को स्थानांतरित कर सकता है। सेगमेंटेड मेमोरी मैनेजमेंट सेगमेंटेड मेमोरी एकमात्र मेमोरी मैनेजमेंट तकनीक है जो उपयोगकर्ता के प्रोग्राम को "रैखिक और सन्निहित पता स्थान" प्रदान नहीं करती है। खंड स्मृति के ऐसे क्षेत्र हैं जो आमतौर पर जानकारी के तार्किक समूह जैसे कि कोड प्रक्रिया या डेटा सरणी के अनुरूप होते हैं। खंडों को एक खंड तालिका के रूप में हार्डवेयर समर्थन की आवश्यकता होती है जिसमें आमतौर पर स्मृति में खंड का भौतिक पता, इसका आकार और अन्य डेटा जैसे अभिगम सुरक्षा बिट्स और स्थिति (अदला-बदली, अदला-बदली, आदि) शामिल होते हैं। विभाजन अन्य योजनाओं की तुलना में बेहतर अभिगम सुरक्षा की अनुमति देता है क्योंकि स्मृति संदर्भ एक विशिष्ट खंड के सापेक्ष होते हैं और हार्डवेयर अनुप्रयोग को उस खंड के लिए परिभाषित स्मृति को संदर्भित करने की अनुमति नहीं देगा। पेजिंग के साथ या बिना विभाजन को लागू करना संभव है। पेजिंग समर्थन के बिना खंड भौतिक इकाई है जो आवश्यकता पड़ने पर स्मृति के अंदर और बाहर अदला-बदली की जाती है। पेजिंग समर्थन के साथ पृष्ठ आमतौर पर अदला-बदली की इकाई होते हैं और विभाजन केवल सुरक्षा का एक अतिरिक्त स्तर जोड़ता है। एक खंडित प्रणाली में पते में आमतौर पर खंड आईडी और खंड आधार पते के सापेक्ष एक ऑफसेट होता है, जिसे ऑफसेट शून्य के रूप में परिभाषित किया जाता है। इंटेल आई. ए.-32 (x86) वास्तुकला एक प्रक्रिया को 4जी. आई. बी. तक के 16,383 खंडों तक रखने की अनुमति देती है। आई. ए.-32 खंड कंप्यूटर के रैखिक पता स्थान के उपखंड हैं, जो पेजिंग हार्डवेयर द्वारा प्रदान किया गया आभासी पता स्थान है। मल्टीक्स ऑपरेटिंग सिस्टम संभवतः खंडीय स्मृति को लागू करने वाली सबसे प्रसिद्ध प्रणाली है। मल्टीक्स खंड 256 पृष्ठों तक की कंप्यूटर की भौतिक स्मृति के उपखंड हैं, प्रत्येक पृष्ठ आकार में 1के 36-बिट शब्द हैं, जिसके परिणामस्वरूप अधिकतम खंड का आकार 1एम. आई. बी. (9-बिट बाइट्स के साथ, जैसा कि मल्टीक्स में उपयोग किया जाता है) होता है। एक प्रक्रिया में 4046 खंड हो सकते हैं। रोलआउट/रोलआउट/रोलिन (आर. ओ./आर. आई.) एक कंप्यूटर ऑपरेटिंग सिस्टम मेमोरी प्रबंधन तकनीक है जहां एक चलने वाले प्रोग्राम के पूरे गैर-साझा कोड और डेटा को सहायक मेमोरी (डिस्क या ड्रम) में बदल दिया जाता है ताकि किसी अन्य कार्य के लिए मुख्य भंडारण को मुक्त किया जा सके। कार्यक्रमों को "मांग अंत or.when द्वारा कुछ लंबे कार्यक्रम की प्रतीक्षा में" शुरू किया जा सकता है। रोलआउट/रोलिन का उपयोग आमतौर पर समय-साझाकरण प्रणालियों में किया जाता था, जहां उपयोगकर्ता का "सोचने का समय" अदला-बदली करने के समय की तुलना में अपेक्षाकृत लंबा था। वर्चुअल स्टोरेज-पेजिंग या सेगमेंटेशन के विपरीत, रोलआउट/रोलिन को किसी विशेष मेमोरी प्रबंधन हार्डवेयर की आवश्यकता नहीं होती है; हालाँकि, जब तक कि सिस्टम में मेमोरी मैप या बेस और बाउंड रजिस्टर जैसे स्थानांतरण हार्डवेयर न हों, तब तक प्रोग्राम को अपने मूल मेमोरी स्थानों पर वापस लाया जाना चाहिए। रोलआउट/रोलिन को काफी हद तक वर्चुअल मेमोरी द्वारा प्रतिस्थापित किया गया है। रोलआउट/रोलिन ओएस/360 मल्टीप्रोग्रामिंग की एक वैकल्पिक विशेषता थी जिसमें चर संख्या में कार्य (एमवीटी) रोलआउट/रोलिन किसी विशेष कार्य को उसके मूल निर्दिष्ट क्षेत्र से परे अस्थायी, गतिशील विस्तार की अनुमति देता है। जब किसी नौकरी को अधिक जगह की आवश्यकता होती है, तो रोलआउट/रोलिन नौकरी के उपयोग के लिए असाइन किए गए भंडारण को प्राप्त करने का प्रयास करता है। यदि ऐसा कोई असंबद्ध भंडारण नहीं है, तो एक और कार्य शुरू किया जाता है-यानी, सहायक भंडारण में स्थानांतरित किया जाता है-ताकि इसके क्षेत्र का उपयोग पहले कार्य द्वारा किया जा सके। जब पहली नौकरी द्वारा जारी किया जाता है, तो यह अतिरिक्त भंडारण फिर से उपलब्ध होता है, या तो (1) असंबद्ध भंडारण के रूप में, यदि वह इसका स्रोत था, या (2) मुख्य भंडारण (रोल्ड इन) में वापस स्थानांतरित करने के लिए काम प्राप्त करने के लिए। ओएस/360 में, रोलआउट/रोलिन का उपयोग केवल बैच नौकरियों के लिए किया जाता था, और रोलिन तब तक नहीं होता जब तक कि क्षेत्र से उधार लेने का कार्य समाप्त नहीं हो जाता। स्मृति अति प्रतिबद्धता स्मृति संरक्षण x86 स्मृति विभाजन टिप्पणियाँ संदर्भ संचालन प्रणालियाँ भी देखें।