मेमोरी सुरक्षा

मेमोरी सुरक्षा कंप्यूटर पर मेमोरी एक्सेस अधिकारों को नियंत्रित करने की विधि है, और यह अधिकांश आधुनिक  निर्देश सेट वास्तुकला  और  ऑपरेटिंग सिस्टम का भाग है। मेमोरी सुरक्षा का मुख्य उद्देश्य  प्रक्रिया (कंप्यूटिंग)  को उस मेमोरी तक पहुँचने से रोकना है जो उसे आवंटित नहीं की गई है। इस  प्रक्रिया के भीतर बग या  मैलवेयर  को अन्य प्रक्रियाओं, या स्वयं ऑपरेटिंग सिस्टम को प्रभावित करने से रोकता है। सुरक्षा में मेमोरी निर्दिष्ट क्षेत्र तक सभी एक्सेस सम्मिलित हो सकते हैं, एक्सेस लिख सकते हैं, या क्षेत्र की सामग्री को निष्पादित करने का प्रयास कर सकते हैं। अनधिकृत मेमोरी तक पहुँचने का प्रयास हार्डवेयर दोष का परिणाम है,  उदाहरण के लिए,  विखंडन दोष, भंडारण उल्लंघन अपवाद, सामान्यतः अपमानजनक प्रक्रिया की  असामान्य समाप्ति  का कारण बनता है। कंप्यूटर सुरक्षा के लिए मेमोरी सुरक्षा में अतिरिक्त तकनीकें सम्मिलित हैं जैसे  एड्रेस स्पेस लेआउट रैंडमाइजेशन और निष्पादन योग्य अंतरिक्ष सुरक्षा है।

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

x 86 वास्तुकला में कई विभाजन विशेषताएं हैं, जो इस वास्तुकला पर संरक्षित मेमोरी का उपयोग करने में सहायक हैं। x86 वास्तुकला पर, ग्लोबल डिस्क्रिप्टर टेबल और स्थानीय विवरणक तालिका  का उपयोग कंप्यूटर की मेमोरी में खंड को संदर्भित करने के लिए किया जा सकता है। x86 प्रोसेसर पर मेमोरी खंड के संकेत को प्रोसेसर के खंड रजिस्टर में भी स्टोर किया जा सकता है। प्रारंभ में x86 प्रोसेसर में 4 खंड रजिस्टर थे, सीएस (कोड खंड), एसएस (स्टैक खंड), डीएस (डेटा खंड) और ईएस (अतिरिक्त खंड) थे; बाद में दो अन्य खंड रजिस्टर जोड़े गए - एफएस और जीएस है।

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

पेजिंग का समर्थन करने वाले अधिकांश कंप्यूटर वास्तुकला भी मेमोरी सुरक्षा के आधार के रूप में पृष्ठों का उपयोग करते हैं।

पृष्ठ तालिका वर्चुअल मेमोरी को भौतिक मेमोरी में एमएपीएस करता है। वास्तुकला और ओएस के आधार पर, प्रत्येक प्रक्रिया के लिए पृष्ठ तालिका, प्रत्येक खंड के लिए पृष्ठ तालिका का पदानुक्रम हो सकता है। पृष्ठ तालिका सामान्यतः प्रक्रिया के लिए अदृश्य होते हैं। पृष्ठ तालिका अतिरिक्त मेमोरी आवंटित करना आसान बनाते हैं, क्योंकि प्रत्येक नए पृष्ठ को भौतिक मेमोरी में कहीं से भी आवंटित किया जा सकता है। कुछ सिस्टम पर पृष्ठ तालिका एंट्री को एकमात्र-पढ़ने के लिए निर्दिष्ट कर सकती है।

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

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

कुछ सिस्टमों पर, वर्चुअल स्टोरेज के लिए अनुरोध वर्चुअल एड्रेस का ब्लॉक आवंटित कर सकता है जिसके लिए कोई पृष्ठ फ्रेम नियत नहीं किया गया है, और सिस्टम पृष्ठ फ्रेम को निर्दिष्ट और हस्ताक्षर करेगा जब पृष्ठ दोष होते हैं। कुछ सिस्टम पर गार्ड पृष्ठ का उपयोग किया जा सकता है, तो त्रुटि का ज्ञात करने के लिए या डेटा संरचनाओं को स्वचालित रूप से विकसित करने के लिए किया जाता है।

कुछ सिस्टम पर, पृष्ठ दोष तंत्र का उपयोग निष्पादन योग्य स्थान सुरक्षा जैसे W^X के लिए भी किया जाता है।

सुरक्षा कुंजी
मेमोरी सुरक्षा कुंजी (MPK) तंत्र भौतिक मेमोरी को विशेष आकार (जैसे, 4 KiB) के ब्लॉकों में विभाजित करता है, जिनमें से प्रत्येक का संबद्ध संख्यात्मक मान होता है जिसे सुरक्षा कुंजी कहा जाता है। प्रत्येक प्रक्रिया में सुरक्षा कुंजी मूल्य भी जुड़ा होता है। मेमोरी एक्सेस पर हार्डवेयर परीक्षण करता है कि वर्तमान प्रक्रिया की सुरक्षा कुंजी एक्सेस किए जा रहे मेमोरी ब्लॉक से जुड़े मान से मिलती है; यदि नहीं, तो अपवाद होता है। यह तंत्र सिस्टम/360 वास्तुकला में प्रस्तुत किया गया था। यह आज के सिस्टम z  मेनफ्रेम पर उपलब्ध है और सिस्टम z ऑपरेटिंग सिस्टम और उनके सबसिस्टम द्वारा अत्यधिक उपयोग किया जाता है।

ऊपर वर्णित सिस्टम/360 सुरक्षा कुंजियाँ भौतिक एड्रेस से संबद्ध हैं। यह हेवलेट पैकर्ड / इंटेल आईए-64 और हेवलेट-पैकार्ड पीए-आरआईएससी जैसे वास्तुकला द्वारा उपयोग किए जाने वाले सुरक्षा कुंजी तंत्र से भिन्न है, जो वर्चुअल एड्रेस से जुड़े हैं, और जो प्रति प्रक्रिया कई कुंजी की अनुमति देते हैं।

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

पीए-आरआईएससी में 15-18 बिट्स कुंजी होती हैं; इटेनियम 18 को अनिवार्य करता है। कुंजियाँ सामान्यतः सुरक्षा डोमेन से जुड़ी होती हैं, जैसे पुस्तकालय, मॉड्यूल, आदि।

X86 में, सुरक्षा कुंजियाँ वास्तुकला 16 सुरक्षा कुंजियों में से किसी के साथ उपयोगकर्ता पृष्ठों के लिए वर्चुअल एड्रेस को टैग करने की अनुमति देता है। ही सुरक्षा कुंजी के साथ टैग किए गए सभी पृष्ठ सुरक्षा डोमेन बनाते हैं।  नए रजिस्टर में प्रत्येक सुरक्षा डोमेन से जुड़ी अनुमतियाँ होती हैं। लोड और स्टोर संचालन को पृष्ठ तालिका अनुमतियों और वर्चुअल एड्रेसके सुरक्षा डोमेन से जुड़ी सुरक्षा कुंजी अनुमतियों दोनों के विरुद्ध चेक किया जाता है, और एकमात्र तभी अनुमति दी जाती है जब दोनों अनुमतियां एक्सेस की अनुमति देती हैं। सुरक्षा कुंजी अनुमतियां उपयोगकर्ता स्थान से सेट की संख्या जा सकती हैं, जिससे अनुप्रयोगों को ओएस हस्तक्षेप के बिना आवेदन डेटा तक पहुंच को सीधे प्रतिबंधित करने की इजाजत मिलती है। चूंकि सुरक्षा कुंजियां वर्चुअल एड्रेससे जुड़ी होती हैं, इसलिए सुरक्षा डोमेन प्रति एड्रेस स्थान होते हैं, इसलिए  भिन्न- भिन्न एड्रेस स्थान में चलने वाली प्रक्रियाएं सभी 16 डोमेन का उपयोग कर सकती हैं।

सुरक्षा के छल्ले
मॉलटिक्स और इससे प्राप्त सिस्टम में, प्रत्येक खंड में पढ़ने, लिखने और निष्पादन के लिए सुरक्षा वलय होती है; खंड के लिए वलय संख्या की अपेक्षा में उच्च वलय संख्या  वाली प्रक्रिया द्वारा प्रयास दोष का कारण बनता है। सुरक्षित रूप से कॉल करने की प्रक्रियाओं के लिए तंत्र है जो निचली वलय में चलता है और उच्च वलय में वापस आता है। अपनी वलय और कॉलर की वलय के बड़े वाले पैरामीटर तक पहुंचने के लिए अल्प वलय संख्या के साथ चलने वाले सामान्य के लिए तंत्र हैं।

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

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

क्षमता-आधारित संबोधन
क्षमता-आधारित एड्रेसिंग मेमोरी सुरक्षा की विधि है जिसका आधुनिक व्यावसायिक कंप्यूटरों में उपयोग नहीं किया जाता है। इस पद्धति में, पॉइंटर (कंप्यूटर प्रोग्रामिंग) को संरक्षित वस्तुओं (जिन्हें क्षमताओं कहा जाता है) द्वारा प्रतिस्थापित किया जाता है, जिसे एकमात्र विशेषाधिकार (कंप्यूटिंग)  निर्देशों का उपयोग करके बनाया जा सकता है जो एकमात्र कर्नेल द्वारा निष्पादित किया जा सकता है, ऐसा करने के लिए अधिकृत कोई अन्य प्रक्रिया। यह प्रभावी रूप से कर्नेल को नियंत्रित करने देता है कि कौन सी प्रक्रियाएं मेमोरी में किन वस्तुओं तक पहुंच सकती हैं, इसके लिए भिन्न एड्रेस स्थान या  संदर्भ स्विच  का उपयोग करने की आवश्यकता नहीं है। एकमात्र कुछ व्यावसायिक उत्पादों ने क्षमता आधारित सुरक्षा का उपयोग किया:  प्लेसी सिस्टम 250, आईबीएम सिस्टम/38,  इंटेल आईएपी्स 432  निर्देश समुच्चय और  कीकोस। अत्यधिक विश्वसनीय ऑपरेटिंग सिस्टम और कॉम्बेक्स दर्पा ब्राउज़र जैसे अनुसंधान प्रणालियों में क्षमता दृष्टिकोण का व्यापक रूप से उपयोग किया जाता है। वे अवधारणात्मक रूप से कुछ आभासी मशीनों के आधार के रूप में उपयोग किए जाते हैं, विशेष रूप से स्मॉलटाक और  जावा (सॉफ्टवेयर प्लेटफॉर्म)  है। वर्तमान में, कैम्ब्रिज विश्वविद्यालय में दर्पा द्वारा वित्त पोषित चेरी परियोजना आधुनिक क्षमता वाली मशीन बनाने के लिए कार्य कर रही है जो विरासत सॉफ्टवेयर का भी समर्थन करती है।

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

स्पार्क एम 7 प्रोसेसर (और उच्चतर) हार्डवेयर में डायनेमिक टैनिंग प्रारम्भ करते हैं। ओरेकल इस सुविधा को सिलिकॉन सुरक्षित मेमोरी (एसएसएम) (पूर्व आवेदन डेटा इंटीग्रिटी (ADI) के रूप में ब्रांडेड) के रूप में बाजार में आता है ।

लो आरआईएससी सीपीयू डिज़ाइन में टैग की गई मेमोरी नाम से डायनेमिक टैनिंग सम्मिलित है।

उपाय
किसी विशेष कार्यान्वयन के सुरक्षा स्तर को इस बात से मापा जा सकता है कि वह न्यूनतम विशेषाधिकार के सिद्धांत का कितनी अनति से पालन करता है।

विभिन्न ऑपरेटिंग सिस्टम में मेमोरी सुरक्षा
विभिन्न ऑपरेटिंग सिस्टम मेमोरी सुरक्षा या पृथक्करण के विभिन्न रूपों का उपयोग करते हैं। चूँकि 1960 के दशक से अधिकांश मेनफ्रेम और कई  मिनी कंप्यूटर  सिस्टम पर मेमोरी सुरक्षा सामान्य थी, 1987 में ओएस/2 (और आरआईएससी ओएस में) जारी होने तक गृह कम्प्यूटर ऑपरेटिंग सिस्टम में ट्रू मेमोरी सेपरेशन का उपयोग नहीं  किया गया था। प्रक्रियाओं के मध्य सूचक भेजकर इंटरप्रोसेस संचार के रूप में भी उपयोग किया गया था। ऑपरेटिंग सिस्टम के विंडोज 9x परिवार में सिस्टम मेमोरी तक पहुंचने के लिए प्रक्रियाओं के लिए संभव है।

मेमोरी सुरक्षा को प्रारम्भ करने वाले कुछ ऑपरेटिंग सिस्टम में सम्मिलित हैं:


 * ,जिसमें सोलारिस, लिनक्स, बीएसडी, मैकओएस, आईओएस  और  जीएनयू हर्ड, यूनिक्स जैसी प्रणालियाँ (1970 के दशक के उत्तरार्ध से) सम्मिलित हैं।
 * बेल लैब्स और  इन्फर्नो (ऑपरेटिंग सिस्टम)  से योजना 9, जिसे बेल लैब्स में यूनिक्स उत्तराधिकारी के रूप में बनाया गया (1992, 1995)
 * ओएस/2 (1987)
 * आरआईएससी ओएस (1987) (ओएस मेमोरी सुरक्षा व्यापक नहीं है।)
 * माइक्रोवेयर ओएस-9, वैकल्पिक मॉड्यूल के रूप में (1992 से)
 * विंडोज एनटी 3.1 से माइक्रोसॉफ़्ट विंडोज़  परिवार (1993)
 * अटारी  मल्टी टीओएस  (1991 से)
 * फारोसी (2017 से)

यूनिक्स जैसी प्रणालियों पर, का उपयोग मेमोरी सुरक्षा को नियंत्रित करने के लिए किया जाता है।

यह भी देखें

 * भंडारण उल्लंघन, मेमोरी सुरक्षा के उल्लंघन के लिए
 * सुरक्षा और सुरक्षा का पृथक्करण
 * मेमोरी प्रबंधन (ऑपरेटिंग सिस्टम)

बाहरी संबंध

 * Intel Developer Manuals – in-depth information on memory protection for Intel-based architectures