मेमोरी सुरक्षा: Difference between revisions
m (Abhishek moved page मैमोरी सुरक्षा to मेमोरी सुरक्षा without leaving a redirect) |
|||
(11 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
'''मेमोरी सुरक्षा''' कंप्यूटर पर मेमोरी एक्सेस अधिकारों को नियंत्रित करने की विधि है, और यह अधिकांश आधुनिक [[ निर्देश सेट वास्तुकला ]] और [[ ऑपरेटिंग सिस्टम ]]का भाग है। मेमोरी सुरक्षा का मुख्य उद्देश्य [[ प्रक्रिया (कंप्यूटिंग) ]] को उस मेमोरी तक पहुँचने से रोकना है जो उसे आवंटित नहीं की गई है। इस प्रक्रिया के भीतर बग या [[ मैलवेयर ]] को अन्य प्रक्रियाओं, या स्वयं ऑपरेटिंग सिस्टम को प्रभावित करने से रोकता है। सुरक्षा में मेमोरी निर्दिष्ट क्षेत्र तक सभी एक्सेस सम्मिलित हो सकते हैं, एक्सेस लिख सकते हैं, या क्षेत्र की सामग्री को निष्पादित करने का प्रयास कर सकते हैं। अनधिकृत मेमोरी तक पहुँचने का प्रयास हार्डवेयर दोष का परिणाम है, {{efn|Depending on the architecture, that may include, e.g., unallocated pages and segments, pages in a different protection domain, pages requiring a higher privilege level.}} उदाहरण के लिए, विखंडन दोष, [[ भंडारण उल्लंघन |भंडारण उल्लंघन]] अपवाद, सामान्यतः अपमानजनक प्रक्रिया की [[ असामान्य समाप्ति ]] का कारण बनता है। [[ कंप्यूटर सुरक्षा |कंप्यूटर सुरक्षा]] के लिए मेमोरी सुरक्षा में अतिरिक्त तकनीकें सम्मिलित हैं जैसे [[ पता स्थान लेआउट यादृच्छिकरण | एड्रेस स्पेस लेआउट रैंडमाइजेशन]] और निष्पादन योग्य अंतरिक्ष सुरक्षा है। | |||
मेमोरी | |||
== | == विधि == | ||
=== विभाजन === | === विभाजन === | ||
{{main| | {{main|मेमोरी विभाजन}} | ||
[[ स्मृति विभाजन ]] से तात्पर्य कंप्यूटर की मेमोरी को | [[ स्मृति विभाजन | खंडेशन]] से तात्पर्य कंप्यूटर की मेमोरी को खंड में विभाजित करना है। मेमोरी स्थान के संदर्भ में सम्मिलित होता है जो उस खंड के भीतर ऑफसेट की पहचान करता है। खंड डिस्क्रिप्टर एक्सेस अधिकारों को सीमित कर सकता है, उदाहरण के लिए, एकमात्र कुछ सुरक्षा वलय से, ही पढ़ा जा सकता है। | ||
x[[ 86 ]] | x[[ 86 ]]वास्तुकला में कई विभाजन विशेषताएं हैं, जो इस वास्तुकला पर संरक्षित मेमोरी का उपयोग करने में सहायक हैं।<ref name="intel_3a_p1">{{cite book | ||
| author = Intel | | author = Intel | ||
| title = Intel 64 and IA-32 Architectures Software Developer's Manuals: Volume 3A: System Programming Guide, Part 1 | | title = Intel 64 and IA-32 Architectures Software Developer's Manuals: Volume 3A: System Programming Guide, Part 1 | ||
Line 15: | Line 14: | ||
| url = https://www.intel.com/design/processor/manuals/253668.pdf | | url = https://www.intel.com/design/processor/manuals/253668.pdf | ||
| access-date = 2008-08-21 | | access-date = 2008-08-21 | ||
}}</ref> x86 | }}</ref> x86 वास्तुकला पर, [[ ग्लोबल डिस्क्रिप्टर टेबल |ग्लोबल डिस्क्रिप्टर टेबल]] और [[ स्थानीय विवरणक तालिका ]] का उपयोग कंप्यूटर की मेमोरी में खंड को संदर्भित करने के लिए किया जा सकता है। x86 प्रोसेसर पर मेमोरी खंड के संकेत को प्रोसेसर के खंड रजिस्टर में भी स्टोर किया जा सकता है। प्रारंभ में x86 प्रोसेसर में 4 खंड रजिस्टर थे, सीएस (कोड खंड), एसएस (स्टैक खंड), डीएस (डेटा खंड) और ईएस (अतिरिक्त खंड) थे; बाद में दो अन्य खंड रजिस्टर जोड़े गए - एफएस और जीएस है।<ref name="intel_3a_p1"/> | ||
=== पृष्ठांकित वर्चुअल मेमोरी === | === पृष्ठांकित वर्चुअल मेमोरी === | ||
{{Main| | {{Main|पृष्ठांकित वर्चुअल मेमोरी}} | ||
पेजिंग | पेजिंग में मेमोरी एड्रेस स्पेस या खंड को समान आकार के ब्लॉक में विभाजित किया जाता है जिसे [[ पेज (कंप्यूटिंग) |पृष्ठ(कंप्यूटिंग)]] कहा जाता है।{{efn|Some systems, e.g., [[z/OS]], support more than one page size.}} [[ अप्रत्यक्ष स्मृति |अप्रत्यक्ष मेमोरी]] हार्डवेयर का उपयोग करते हुए, प्रत्येक पृष्ठ कंप्यूटर की भौतिक मेमोरी की उपयुक्त सीमा पर किसी भी स्थान पर रह सकता है, या संरक्षित होने के रूप में चिह्नित किया जा सकता है। वर्चुअल मेमोरी रैखिक[[ आभासी पता स्थान | वर्चुअल मेमोरी एड्रेस]] स्पेस होना और भौतिक मेमोरी एड्रेस स्पेस पर खंडित ब्लॉकों तक पहुंचने के लिए इसका उपयोग करना संभव बनाती है। | ||
पेजिंग का समर्थन करने वाले अधिकांश [[ कंप्यूटर आर्किटेक्चर |कंप्यूटर वास्तुकला]] भी मेमोरी सुरक्षा के आधार के रूप में पृष्ठों का उपयोग करते हैं। | |||
कुछ ऑपरेटिंग सिस्टम प्रत्येक प्रक्रिया के लिए | [[ पृष्ठ तालिका |पृष्ठ तालिका]] वर्चुअल मेमोरी को भौतिक मेमोरी में एमएपीएस करता है। वास्तुकला और ओएस के आधार पर, प्रत्येक प्रक्रिया के लिए पृष्ठ तालिका, प्रत्येक खंड के लिए पृष्ठ तालिका का पदानुक्रम हो सकता है। पृष्ठ तालिका सामान्यतः प्रक्रिया के लिए अदृश्य होते हैं। पृष्ठ तालिका अतिरिक्त मेमोरी आवंटित करना आसान बनाते हैं, क्योंकि प्रत्येक नए पृष्ठ को भौतिक मेमोरी में कहीं से भी आवंटित किया जा सकता है। कुछ सिस्टम पर पृष्ठ तालिका एंट्री को एकमात्र-पढ़ने के लिए निर्दिष्ट कर सकती है। | ||
कुछ ऑपरेटिंग सिस्टम प्रत्येक प्रक्रिया के लिए भिन्न एड्रेस स्थान को स्थापित करते हैं, जो हार्ड मेमोरी सुरक्षा सीमाएं प्रदान करता है।<ref> | |||
Jeffrey S. Chase; Henry M. Levy; Michael J. Feeley; and Edward D. Lazowska. | Jeffrey S. Chase; Henry M. Levy; Michael J. Feeley; and Edward D. Lazowska. | ||
[https://homes.cs.washington.edu/~levy/opal/opal-tocs.pdf "Sharing and Protection in a Single Address Space Operating System"]. | [https://homes.cs.washington.edu/~levy/opal/opal-tocs.pdf "Sharing and Protection in a Single Address Space Operating System"]. | ||
Line 32: | Line 33: | ||
p. 2. | p. 2. | ||
</ref> | </ref> | ||
अनपेक्षित आवेदन के लिए उस पृष्ठ तक पहुंचना असंभव है जिसे स्पष्ट रूप से आवंटित नहीं किया गया है, {{efn|On some systems there are privileged instructions for storage access by real address.}}क्योंकि प्रत्येक मेमोरी एड्रेस या तो उस आवेदन को आवंटित पृष्ठ को इंगित करता है। असंबद्ध पृष्ठ, और किसी अन्य आवेदन को आवंटित पृष्ठ, आवेदन के दृष्टिकोण से कोई एड्रेस नहीं हैं। | |||
जरूरी नहीं कि पृष्ठ दोष त्रुटि का संकेत दे। [[ पृष्ठ दोष ]]एकमात्र मेमोरी सुरक्षा के लिए उपयोग किए जाते हैं। ऑपरेटिंग सिस्टम पृष्ठ तालिका को इस प्रकार से प्रबंधित कर सकता है कि उस पृष्ठ का संदर्भ जो पूर्व सेकेंडरी स्टोरेज[[ मेमोरी पेजिंग | में पृष्ठ आउट]] हो चुका है, {{efn|In the early days of [[time sharing]] paging was normally to a [[magnetic drum]]; in contemporary systems, paging is normally to a [[hard disk]] or [[solid state device]].}} पृष्ठ दोष का कारण बनता है। ऑपरेटिंग सिस्टम पृष्ठ दोष को अवरोध करता है, आवश्यक मेमोरी पृष्ठ को लोड करता है, और आवेदन जारी रहता है जैसे कि कोई दोष नहीं हुआ था। यह योजना, वर्चुअल मेमोरी, इन-मेमोरी डेटा की अनुमति देती है जो वर्तमान में सेकेंडरी स्टोरेज में ले जाने के लिए उपयोग में नहीं है और इस प्रकार से जो अनुप्रयोगों के लिए पारदर्शी है, समग्र मेमोरी क्षमता को बढ़ाने के लिए है। | |||
कुछ सिस्टमों पर, वर्चुअल स्टोरेज के लिए | कुछ सिस्टमों पर, वर्चुअल स्टोरेज के लिए अनुरोध वर्चुअल एड्रेस का ब्लॉक आवंटित कर सकता है जिसके लिए कोई पृष्ठ फ्रेम नियत नहीं किया गया है, और सिस्टम पृष्ठ फ्रेम को निर्दिष्ट और हस्ताक्षर करेगा जब पृष्ठ दोष होते हैं। कुछ सिस्टम पर [[ गार्ड पेज |गार्ड]] पृष्ठ का उपयोग किया जा सकता है, तो त्रुटि का ज्ञात करने के लिए या डेटा संरचनाओं को स्वचालित रूप से विकसित करने के लिए किया जाता है। | ||
कुछ सिस्टम पर, | कुछ सिस्टम पर, पृष्ठ दोष तंत्र का उपयोग निष्पादन योग्य स्थान सुरक्षा जैसे W^X के लिए भी किया जाता है। | ||
=== सुरक्षा कुंजी === | === सुरक्षा कुंजी === | ||
मेमोरी सुरक्षा कुंजी (MPK)<ref>[https://lwn.net/Articles/643797/ Memory protection keys], Jonathan Corbet, May 13, 2015, [[LWN.net]]</ref> तंत्र भौतिक मेमोरी को विशेष आकार (जैसे, 4 KiB) के ब्लॉकों में विभाजित करता है, जिनमें से प्रत्येक का संबद्ध संख्यात्मक मान होता है जिसे सुरक्षा कुंजी कहा जाता है। प्रत्येक प्रक्रिया में सुरक्षा कुंजी मूल्य भी जुड़ा होता है। मेमोरी एक्सेस पर हार्डवेयर परीक्षण करता है कि वर्तमान प्रक्रिया की सुरक्षा कुंजी एक्सेस किए जा रहे मेमोरी ब्लॉक से जुड़े मान से मिलती है; यदि नहीं, तो अपवाद होता है। यह तंत्र सिस्टम/360 वास्तुकला में प्रस्तुत किया गया था। यह आज के [[ सिस्टम z ]] मेनफ्रेम पर उपलब्ध है और सिस्टम z ऑपरेटिंग सिस्टम और उनके सबसिस्टम द्वारा अत्यधिक उपयोग किया जाता है। | |||
ऊपर वर्णित सिस्टम/360 सुरक्षा कुंजियाँ भौतिक | ऊपर वर्णित सिस्टम/360 सुरक्षा कुंजियाँ भौतिक एड्रेस से संबद्ध हैं। यह [[ हेवलेट पैकर्ड |हेवलेट पैकर्ड]] /[[ इंटेल ]][[ आईए-64 |आईए-64]] और हेवलेट-पैकार्ड [[ पीए-जोखिम | पीए-आरआईएससी]] जैसे वास्तुकला द्वारा उपयोग किए जाने वाले सुरक्षा कुंजी तंत्र से भिन्न है, जो वर्चुअल एड्रेस से जुड़े हैं, और जो प्रति प्रक्रिया कई कुंजी की अनुमति देते हैं। | ||
इटेनियम और पीए-आरआईएससी | इटेनियम और पीए-आरआईएससी वास्तुकला में, अनुवाद ([[ अनुवाद लुकसाइड बफर |टीएलबी]] प्रविष्टियां) में उनके साथ जुड़े कुंजी (इटेनियम) या एक्सेस आईडी (पीए-आरआईएससी) हैं। प्रक्रिया में कई सुरक्षा कुंजी रजिस्टर होते हैं (इटेनियम के लिए 16,<ref>{{cite web |url=https://download.intel.com/design/Itanium/manuals/24531805.pdf |title=Keys in Itanium |archive-url=https://web.archive.org/web/20071128062412/https://download.intel.com/design/Itanium/manuals/24531805.pdf |archive-date=2007-11-28}}</ref> पीए-रिस्क के लिए 4<ref>{{Cite web|url=https://h21007.www2.hp.com/portal/download/files/unprot/parisc/pa1-1/acd.pdf|archive-url=https://web.archive.org/web/20150905151741/https://h21007.www2.hp.com/portal/download/files/unprot/parisc/pa1-1/acd.pdf|url-status=dead|archive-date=2015-09-05|title=Memory protection in HP PA-RISC <!-- PA-RISC 1.1 Architecture and Instruction Set Reference Manual -->|date=February 1994 <!--2015-09-05 -->|access-date=2018-10-29}}</ref>) वर्चुअल एड्रेस द्वारा चुने गए अनुवाद में प्रत्येक सुरक्षा कुंजी रजिस्टर की अपेक्षा में की इसकी कुंजी होती है। यदि उनमें से कोई भी मिलती है (साथ ही अन्य संभावित परीक्षण), तो एक्सेस की अनुमति है। यदि कोई मिलती नहीं है, तो दोष या अपवाद उत्पन्न होता है। सॉफ़्टवेयर फ़ॉल्ट हैंडलर, यदि वांछित हो, सॉफ़्टवेयर द्वारा अनुरक्षित कुंजियों की बड़ी सूची के विरुद्ध गुम कुंजी की जाँच कर सकता है; इस प्रकार, प्रोसेसर के अंदर सुरक्षा कुंजी रजिस्टरों को प्रक्रिया से जुड़ी चाबियों की बड़ी सूची के सॉफ़्टवेयर-प्रबंधित कैश के रूप में माना जा सकता है। | ||
पीए-आरआईएससी में 15-18 बिट्स कुंजी होती हैं; इटेनियम 18 को अनिवार्य करता है। कुंजियाँ सामान्यतः सुरक्षा डोमेन से जुड़ी होती हैं, जैसे पुस्तकालय, मॉड्यूल, आदि। | |||
X86 में, सुरक्षा कुंजियाँ<ref>{{Cite web|url=http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf|archive-url=https://web.archive.org/web/20120601074839/http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf|url-status=dead|archive-date=2012-06-01|title=Intel Software Developer Manual |date=March 2012 <!--2012-06-01 --> |access-date=2018-10-29}}</ref> | X86 में, सुरक्षा कुंजियाँ वास्तुकला 16 सुरक्षा कुंजियों में से किसी के साथ उपयोगकर्ता पृष्ठों के लिए वर्चुअल एड्रेस को टैग करने की अनुमति देता है। <ref>{{Cite web|url=http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf|archive-url=https://web.archive.org/web/20120601074839/http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf|url-status=dead|archive-date=2012-06-01|title=Intel Software Developer Manual |date=March 2012 <!--2012-06-01 --> |access-date=2018-10-29}}</ref> ही सुरक्षा कुंजी के साथ टैग किए गए सभी पृष्ठ सुरक्षा डोमेन बनाते हैं। नए रजिस्टर में प्रत्येक सुरक्षा डोमेन से जुड़ी अनुमतियाँ होती हैं। लोड और स्टोर संचालन को पृष्ठ तालिका अनुमतियों और वर्चुअल एड्रेसके सुरक्षा डोमेन से जुड़ी सुरक्षा कुंजी अनुमतियों दोनों के विरुद्ध चेक किया जाता है, और एकमात्र तभी अनुमति दी जाती है जब दोनों अनुमतियां एक्सेस की अनुमति देती हैं। सुरक्षा कुंजी अनुमतियां उपयोगकर्ता स्थान से सेट की संख्या जा सकती हैं, जिससे अनुप्रयोगों को ओएस हस्तक्षेप के बिना आवेदन डेटा तक पहुंच को सीधे प्रतिबंधित करने की इजाजत मिलती है। चूंकि सुरक्षा कुंजियां वर्चुअल एड्रेससे जुड़ी होती हैं, इसलिए सुरक्षा डोमेन प्रति एड्रेस स्थान होते हैं, इसलिए भिन्न- भिन्न एड्रेस स्थान में चलने वाली प्रक्रियाएं सभी 16 डोमेन का उपयोग कर सकती हैं। | ||
=== सुरक्षा के छल्ले === | === सुरक्षा के छल्ले === | ||
[[ मॉलटिक्स ]] और इससे प्राप्त सिस्टम में, प्रत्येक खंड में पढ़ने, लिखने और निष्पादन के लिए | [[ मॉलटिक्स ]]और इससे प्राप्त सिस्टम में, प्रत्येक खंड में पढ़ने, लिखने और निष्पादन के लिए सुरक्षा वलय होती है; खंड के लिए वलय संख्या की अपेक्षा में उच्च वलय संख्या वाली प्रक्रिया द्वारा प्रयास दोष का कारण बनता है। सुरक्षित रूप से कॉल करने की प्रक्रियाओं के लिए तंत्र है जो निचली वलय में चलता है और उच्च वलय में वापस आता है। अपनी वलय और कॉलर की वलय के बड़े वाले पैरामीटर तक पहुंचने के लिए अल्प वलय संख्या के साथ चलने वाले सामान्य के लिए तंत्र हैं। | ||
=== नकली विभाजन === | === नकली विभाजन === | ||
[[ सिमुलेशन ]] कुछ कंप्यूटर | [[ सिमुलेशन ]]कुछ कंप्यूटर वास्तुकला के मशीन कोड निर्देशों की व्याख्या करने के लिए [[ प्रणाली निगरानी | निगरानी]] कार्यक्रम का उपयोग है। इस प्रकार के[[ निर्देश सेट सिम्युलेटर ]] विभाजन जैसी योजना का उपयोग करके और वास्तव में उन्हें निष्पादित करने से पूर्व वास्तविक समय में प्रत्येक निर्देश के लक्ष्य एड्रेसऔर लंबाई को मान्य करके [[ स्मृति |मेमोरी]] सुरक्षा प्रदान कर सकता है। सिम्युलेटर को लक्ष्य एड्रेसऔर लंबाई की गणना करनी चाहिए और इसकी अपेक्षा थ्रेड का वातावरण से संबंधित मान्य एड्रेस श्रेणियों की सूची से करनी चाहिए | जैसे कि थ्रेड की स्थापना के बाद से प्राप्त कोई भी गतिशील कंप्यूटर मेमोरी ब्लॉक, साथ ही कोई भी मान्य साझा स्थिर मेमोरी स्लॉट है। संदर्भ के आधार पर वैध का अर्थ पूरे थ्रेड के जीवन में बदल सकता है। इसे कभी-कभी निष्पादन के वर्तमान मोड के आधार पर, भंडारण के स्थिर ब्लॉक को बदलने की अनुमति दी जा सकती है, और कभी-कभी नहीं, जो भंडारण कुंजी या पर्यवेक्षक राज्य पर निर्भर हो सकता है या नहीं हो सकता है।{{Citation needed|date=April 2007}} | ||
सामान्यतः मेमोरी सुरक्षा की इस पद्धति का उपयोग करने की सलाह नहीं दी जाती है, जहां सीपीयू पर पर्याप्त सुविधाएं उपस्थित होती हैं, क्योंकि यह कंप्यूटर से मूल्यवान प्रसंस्करण शक्ति लेता है। यद्यपि, यह सामान्यतः डिबगिंग और परीक्षण उद्देश्यों के लिए उपयोग किया जाता है ताकि अन्यथा सामान्य भंडारण उल्लंघनों के लिए अतिरिक्त बारीक स्तर प्रदान किया जा सके और यह इंगित कर सकता है कि कौन सा निर्देश भंडारण के विशेष खंड को अधिलेखित करने का प्रयास कर रहा है जिसमें असुरक्षित भंडारण के समान भंडारण कुंजी हो सकती है। | |||
=== क्षमता-आधारित संबोधन === | === क्षमता-आधारित संबोधन === | ||
{{Main| | {{Main|क्षमता-आधारित संबोधन | ||
क्षमता-आधारित एड्रेसिंग | }} | ||
क्षमता-आधारित एड्रेसिंग मेमोरी सुरक्षा की विधि है जिसका आधुनिक व्यावसायिक कंप्यूटरों में उपयोग नहीं किया जाता है। इस पद्धति में, पॉइंटर (कंप्यूटर प्रोग्रामिंग) को संरक्षित वस्तुओं (जिन्हें क्षमताओं कहा जाता है) द्वारा प्रतिस्थापित किया जाता है, जिसे एकमात्र [[ विशेषाधिकार (कंप्यूटिंग) ]] निर्देशों का उपयोग करके बनाया जा सकता है जो एकमात्र कर्नेल द्वारा निष्पादित किया जा सकता है, ऐसा करने के लिए अधिकृत कोई अन्य प्रक्रिया।{{citation needed|date=August 2012}} यह प्रभावी रूप से कर्नेल को नियंत्रित करने देता है कि कौन सी प्रक्रियाएं मेमोरी में किन वस्तुओं तक पहुंच सकती हैं, इसके लिए भिन्न एड्रेस स्थान या [[ संदर्भ स्विच ]] का उपयोग करने की आवश्यकता नहीं है। एकमात्र कुछ व्यावसायिक उत्पादों ने क्षमता आधारित सुरक्षा का उपयोग किया: [[ प्लेसी सिस्टम 250]], आईबीएम सिस्टम/38, [[ इंटेल आईएपीएक्स 432 | इंटेल आईएपी्स 432]] [[ निर्देश समुच्चय ]]और [[ कीकोस | कीकोस]]। अत्यधिक विश्वसनीय ऑपरेटिंग सिस्टम और कॉम्बेक्स दर्पा ब्राउज़र जैसे अनुसंधान प्रणालियों में क्षमता दृष्टिकोण का व्यापक रूप से उपयोग किया जाता है। वे अवधारणात्मक रूप से कुछ [[ आभासी मशीन |आभासी मशीनों]] के आधार के रूप में उपयोग किए जाते हैं, विशेष रूप से स्मॉलटाक और [[ जावा (सॉफ्टवेयर प्लेटफॉर्म) | जावा (सॉफ्टवेयर प्लेटफॉर्म) है]]। वर्तमान में, कैम्ब्रिज विश्वविद्यालय में दर्पा द्वारा वित्त पोषित चेरी परियोजना आधुनिक क्षमता वाली मशीन बनाने के लिए कार्य कर रही है जो विरासत सॉफ्टवेयर का भी समर्थन करती है। | |||
=== डायनेमिक टैनिंग === | === डायनेमिक टैनिंग === | ||
डायनेमिक टैनिंग प्रोग्राम को अवैध मेमोरी एक्सेस से बचाने की | डायनेमिक टैनिंग प्रोग्राम को अवैध मेमोरी एक्सेस से बचाने की प्रणाली है। जब मेमोरी आवंटित की जाती है, तो रनटाइम पर, यह प्रणाली दाग चिह्न का उपयोग करके मेमोरी और संबंधित सूचक दोनों को दूषित कर देती है। जब प्रोग्राम निष्पादित होता है तब दाग के निशान उपयुक्त रूप से प्रचारित किए जाते हैं और मेमोरी एड्रेस m को पॉइंटर p के माध्यम से एक्सेस किया जाता है; यदि m और p से जुड़े दाग चिह्न भिन्न होते हैं, तो निष्पादन रोक दिया जाता है और अवैध पहुंच की सूचना दी जाती है।<ref name="ClauseDoudalis2007">{{cite book|last1=Clause|first1=James|last2=Doudalis|first2=Ioannis|last3=Orso|first3=Alessandro|last4=Prvulovic|first4=Milos|title=Effective memory protection using dynamic tainting|year=2007|doi=10.1145/1321631.1321673|url=http://www.cc.gatech.edu/~orso/papers/clause.doudalis.orso.prvulovic.pdf|journal=Proceedings of the Twenty-Second IEEE/ACM International Conference on Automated Software Engineering|pages=284|isbn=9781595938824|s2cid=6334541}}</ref><ref name="DoudalisClause2012">{{cite journal|last1=Doudalis|first1=Ioannis|last2=Clause|first2=James|last3=Venkataramani|first3=Guru|last4=Prvulovic|first4=Milos|last5=Orso|first5=Alessandro|title=Effective and Efficient Memory Protection Using Dynamic Tainting|journal=IEEE Transactions on Computers|volume=61|issue=1|year=2012|pages=87–100|issn=0018-9340|doi=10.1109/TC.2010.215|s2cid=15913190|url=https://www.cc.gatech.edu/~milos/Papers/2011_ToC_TaintProt.pdf}}</ref> | ||
[[ SPARC M7 ]] प्रोसेसर (और उच्चतर) हार्डवेयर में डायनेमिक टैनिंग | |||
[[ SPARC M7 |स्पार्क एम 7]] प्रोसेसर (और उच्चतर) हार्डवेयर में डायनेमिक टैनिंग प्रारम्भ करते हैं। ओरेकल इस सुविधा को [[ सिलिकॉन सुरक्षित मेमोरी | सिलिकॉन सुरक्षित मेमोरी]] (एसएसएम) (पूर्व आवेदन डेटा इंटीग्रिटी (ADI) के रूप में ब्रांडेड) के रूप में बाजार में आता है ।<ref>{{cite web|last1=Jenkins|first1=Michelle|title=Oracle Announces Breakthrough Processor and Systems Design with SPARC M7|url=https://www.oracle.com/corporate/pressrelease/sparc-m7-102615.html|website=www.oracle.com|access-date=2016-11-18}}</ref> | |||
लो आरआईएससी सीपीयू डिज़ाइन में टैग की गई मेमोरी नाम से डायनेमिक टैनिंग सम्मिलित है।<ref>{{cite web|title=Tagged memory support|url=http://www.lowrisc.org/docs/tagged-memory-v0.1/tags/|website=www.lowrisc.org|access-date=2018-05-24}}</ref> | |||
== उपाय == | == उपाय == | ||
किसी विशेष कार्यान्वयन के सुरक्षा स्तर को इस बात से मापा जा सकता है कि वह न्यूनतम विशेषाधिकार के सिद्धांत का कितनी | किसी विशेष कार्यान्वयन के सुरक्षा स्तर को इस बात से मापा जा सकता है कि वह न्यूनतम विशेषाधिकार के सिद्धांत का कितनी अनति से पालन करता है।<ref>Cook, D.J. ''[http://portal.acm.org/citation.cfm?id=803220 Measuring memory protection]'', accepted for 3rd International Conference on Software Engineering, Atlanta, Georgia, May 1978.</ref> | ||
== विभिन्न ऑपरेटिंग सिस्टम में मेमोरी सुरक्षा == | == विभिन्न ऑपरेटिंग सिस्टम में मेमोरी सुरक्षा == | ||
विभिन्न ऑपरेटिंग सिस्टम मेमोरी सुरक्षा या पृथक्करण के विभिन्न रूपों का उपयोग करते हैं। | विभिन्न ऑपरेटिंग सिस्टम मेमोरी सुरक्षा या पृथक्करण के विभिन्न रूपों का उपयोग करते हैं। चूँकि 1960 के दशक से अधिकांश [[ मेनफ्रेम ]]और कई [[ मिनी कंप्यूटर ]] सिस्टम पर मेमोरी सुरक्षा सामान्य थी, 1987 में ओएस/2 (और आरआईएससी ओएस में) जारी होने तक [[ गृह कम्प्यूटर |गृह कम्प्यूटर]] ऑपरेटिंग सिस्टम में ट्रू मेमोरी सेपरेशन का उपयोग नहीं किया गया था। प्रक्रियाओं के मध्य सूचक भेजकर इंटरप्रोसेस संचार के रूप में भी उपयोग किया गया था। ऑपरेटिंग सिस्टम के [[ मेरे पास विंडोज़ था |विंडोज 9x]] परिवार में सिस्टम मेमोरी तक पहुंचने के लिए प्रक्रियाओं के लिए संभव है।<ref>{{cite web|url=http://everything2.com/title/Windows%25209x%2520does%2520not%2520have%2520true%2520memory%2520protection |title=Windows 9x does not have true memory protection |publisher=Everything2 |date=2000-06-24 |access-date=2009-04-29}}</ref> | ||
* | मेमोरी सुरक्षा को प्रारम्भ करने वाले कुछ ऑपरेटिंग सिस्टम में सम्मिलित हैं: | ||
* [[ बेल लैब्स ]] और [[ इन्फर्नो (ऑपरेटिंग सिस्टम) ]] से योजना 9, जिसे बेल लैब्स में यूनिक्स उत्तराधिकारी के रूप में बनाया गया (1992, 1995) | |||
* ,जिसमें [[ सोलारिस (ऑपरेटिंग सिस्टम) | सोलारिस]], [[ लिनक्स |लिनक्स]], [[ बीएसडी |बीएसडी]], मैकओएस, [[ आईओएस |आईओएस]] और [[ जीएनयू हर्ड | जीएनयू हर्ड,]] यूनिक्स जैसी प्रणालियाँ (1970 के दशक के उत्तरार्ध से) सम्मिलित हैं। | |||
* [[ बेल लैब्स | बेल लैब्स]] और [[ इन्फर्नो (ऑपरेटिंग सिस्टम) | इन्फर्नो (ऑपरेटिंग सिस्टम)]] से योजना 9, जिसे बेल लैब्स में यूनिक्स उत्तराधिकारी के रूप में बनाया गया (1992, 1995) | |||
* ओएस/2 (1987) | * ओएस/2 (1987) | ||
* | * आरआईएससी ओएस (1987) (ओएस मेमोरी सुरक्षा व्यापक नहीं है।) | ||
* माइक्रोवेयर [[ OS-9 ]], | * माइक्रोवेयर [[ OS-9 |ओएस-9]], वैकल्पिक मॉड्यूल के रूप में (1992 से) | ||
* विंडोज एनटी 3.1 से [[ माइक्रोसॉफ़्ट विंडोज़ ]] परिवार (1993) | * विंडोज एनटी 3.1 से [[ माइक्रोसॉफ़्ट विंडोज़ | माइक्रोसॉफ़्ट विंडोज़]] परिवार (1993) | ||
* [[ अटारी ]] [[ मल्टी टीओएस ]] (1991 से) | * [[ अटारी | अटारी]] [[ मल्टी टीओएस | मल्टी टीओएस]] (1991 से) | ||
* फारोसी<ref>{{Cite web|url=https://sourceforge.net/projects/rtospharos/|title = Pharos}}</ref> (2017 से) | * फारोसी<ref>{{Cite web|url=https://sourceforge.net/projects/rtospharos/|title = Pharos}}</ref> (2017 से) | ||
यूनिक्स जैसी प्रणालियों पर, <code> | यूनिक्स जैसी प्रणालियों पर,<code>एमप्रोटेक्ट[[ सिस्टम कॉल | सिस्टम कॉल]]</code>का उपयोग मेमोरी सुरक्षा को नियंत्रित करने के लिए किया जाता है।<ref>{{cite web|title=mprotect|url=http://pubs.opengroup.org/onlinepubs/009604499/functions/mprotect.html|work=The Open Group Base Specifications Issue 6|publisher=The Open Group}}</ref> | ||
== यह भी देखें == | == यह भी देखें == | ||
* भंडारण उल्लंघन, | * भंडारण उल्लंघन, मेमोरी सुरक्षा के उल्लंघन के लिए | ||
*[[ सुरक्षा और सुरक्षा का पृथक्करण ]] | *[[सुरक्षा और सुरक्षा का पृथक्करण]] | ||
* | * मेमोरी प्रबंधन (ऑपरेटिंग सिस्टम) | ||
== संदर्भ == | == संदर्भ == | ||
Line 102: | Line 112: | ||
[[Category:All articles with unsourced statements|Memory Protection]] | |||
[[Category:Articles with hatnote templates targeting a nonexistent page|Memory Protection]] | |||
[[Category:Articles with invalid date parameter in template|Memory Protection]] | |||
[[Category:Articles with unsourced statements from April 2007|Memory Protection]] | |||
[[Category:Articles with unsourced statements from August 2012|Memory Protection]] | |||
[[Category:CS1 errors]] | |||
[[Category:Collapse templates|Memory Protection]] | |||
[[Category:Created On 09/09/2022|Memory Protection]] | |||
[[Category:Machine Translated Page|Memory Protection]] | |||
[[Category:Navigational boxes| ]] | |||
[[Category:Navigational boxes without horizontal lists|Memory Protection]] | |||
[[Category:Pages with script errors|Memory Protection]] | |||
[[Category:Sidebars with styles needing conversion|Memory Protection]] | |||
[[Category:Template documentation pages|Documentation/doc]] | |||
[[Category:Templates Vigyan Ready|Memory Protection]] | |||
[[Category:Templates generating microformats|Memory Protection]] | |||
[[Category:Templates that are not mobile friendly|Memory Protection]] | |||
[[Category:Templates using TemplateData|Memory Protection]] | |||
[[Category:Wikipedia metatemplates|Memory Protection]] | |||
[[Category:स्मृति प्रबंधन|Memory Protection]] | |||
== बाहरी संबंध == | == बाहरी संबंध == | ||
* [https://www.intel.com/products/processor/manuals/index.htm Intel Developer Manuals]{{snd}} in-depth information on memory protection for Intel-based architectures | * [https://www.intel.com/products/processor/manuals/index.htm Intel Developer Manuals]{{snd}} in-depth information on memory protection for Intel-based architectures | ||
{{DEFAULTSORT:Memory Protection}} | |||
{{DEFAULTSORT:Memory Protection}} | |||
[[Category: | [[Category:All articles with unsourced statements|Memory Protection]] | ||
[[Category:Created On 09/09/2022]] | [[Category:Articles with hatnote templates targeting a nonexistent page|Memory Protection]] | ||
[[Category:Articles with invalid date parameter in template|Memory Protection]] | |||
[[Category:Articles with unsourced statements from April 2007|Memory Protection]] | |||
[[Category:Articles with unsourced statements from August 2012|Memory Protection]] | |||
[[Category:Collapse templates|Memory Protection]] | |||
[[Category:Created On 09/09/2022|Memory Protection]] | |||
[[Category:Machine Translated Page|Memory Protection]] | |||
[[Category:Navigational boxes| ]] | |||
[[Category:Navigational boxes without horizontal lists|Memory Protection]] | |||
[[Category:Pages with script errors|Memory Protection]] | |||
[[Category:Sidebars with styles needing conversion|Memory Protection]] | |||
[[Category:Template documentation pages|Documentation/doc]] | |||
[[Category:Templates Vigyan Ready|Memory Protection]] | |||
[[Category:Templates generating microformats|Memory Protection]] | |||
[[Category:Templates that are not mobile friendly|Memory Protection]] | |||
[[Category:Templates using TemplateData|Memory Protection]] | |||
[[Category:Wikipedia metatemplates|Memory Protection]] | |||
[[Category:स्मृति प्रबंधन|Memory Protection]] |
Latest revision as of 15:22, 30 October 2023
मेमोरी सुरक्षा कंप्यूटर पर मेमोरी एक्सेस अधिकारों को नियंत्रित करने की विधि है, और यह अधिकांश आधुनिक निर्देश सेट वास्तुकला और ऑपरेटिंग सिस्टम का भाग है। मेमोरी सुरक्षा का मुख्य उद्देश्य प्रक्रिया (कंप्यूटिंग) को उस मेमोरी तक पहुँचने से रोकना है जो उसे आवंटित नहीं की गई है। इस प्रक्रिया के भीतर बग या मैलवेयर को अन्य प्रक्रियाओं, या स्वयं ऑपरेटिंग सिस्टम को प्रभावित करने से रोकता है। सुरक्षा में मेमोरी निर्दिष्ट क्षेत्र तक सभी एक्सेस सम्मिलित हो सकते हैं, एक्सेस लिख सकते हैं, या क्षेत्र की सामग्री को निष्पादित करने का प्रयास कर सकते हैं। अनधिकृत मेमोरी तक पहुँचने का प्रयास हार्डवेयर दोष का परिणाम है, [lower-alpha 1] उदाहरण के लिए, विखंडन दोष, भंडारण उल्लंघन अपवाद, सामान्यतः अपमानजनक प्रक्रिया की असामान्य समाप्ति का कारण बनता है। कंप्यूटर सुरक्षा के लिए मेमोरी सुरक्षा में अतिरिक्त तकनीकें सम्मिलित हैं जैसे एड्रेस स्पेस लेआउट रैंडमाइजेशन और निष्पादन योग्य अंतरिक्ष सुरक्षा है।
विधि
विभाजन
खंडेशन से तात्पर्य कंप्यूटर की मेमोरी को खंड में विभाजित करना है। मेमोरी स्थान के संदर्भ में सम्मिलित होता है जो उस खंड के भीतर ऑफसेट की पहचान करता है। खंड डिस्क्रिप्टर एक्सेस अधिकारों को सीमित कर सकता है, उदाहरण के लिए, एकमात्र कुछ सुरक्षा वलय से, ही पढ़ा जा सकता है।
x86 वास्तुकला में कई विभाजन विशेषताएं हैं, जो इस वास्तुकला पर संरक्षित मेमोरी का उपयोग करने में सहायक हैं।[1] x86 वास्तुकला पर, ग्लोबल डिस्क्रिप्टर टेबल और स्थानीय विवरणक तालिका का उपयोग कंप्यूटर की मेमोरी में खंड को संदर्भित करने के लिए किया जा सकता है। x86 प्रोसेसर पर मेमोरी खंड के संकेत को प्रोसेसर के खंड रजिस्टर में भी स्टोर किया जा सकता है। प्रारंभ में x86 प्रोसेसर में 4 खंड रजिस्टर थे, सीएस (कोड खंड), एसएस (स्टैक खंड), डीएस (डेटा खंड) और ईएस (अतिरिक्त खंड) थे; बाद में दो अन्य खंड रजिस्टर जोड़े गए - एफएस और जीएस है।[1]
पृष्ठांकित वर्चुअल मेमोरी
पेजिंग में मेमोरी एड्रेस स्पेस या खंड को समान आकार के ब्लॉक में विभाजित किया जाता है जिसे पृष्ठ(कंप्यूटिंग) कहा जाता है।[lower-alpha 2] अप्रत्यक्ष मेमोरी हार्डवेयर का उपयोग करते हुए, प्रत्येक पृष्ठ कंप्यूटर की भौतिक मेमोरी की उपयुक्त सीमा पर किसी भी स्थान पर रह सकता है, या संरक्षित होने के रूप में चिह्नित किया जा सकता है। वर्चुअल मेमोरी रैखिक वर्चुअल मेमोरी एड्रेस स्पेस होना और भौतिक मेमोरी एड्रेस स्पेस पर खंडित ब्लॉकों तक पहुंचने के लिए इसका उपयोग करना संभव बनाती है।
पेजिंग का समर्थन करने वाले अधिकांश कंप्यूटर वास्तुकला भी मेमोरी सुरक्षा के आधार के रूप में पृष्ठों का उपयोग करते हैं।
पृष्ठ तालिका वर्चुअल मेमोरी को भौतिक मेमोरी में एमएपीएस करता है। वास्तुकला और ओएस के आधार पर, प्रत्येक प्रक्रिया के लिए पृष्ठ तालिका, प्रत्येक खंड के लिए पृष्ठ तालिका का पदानुक्रम हो सकता है। पृष्ठ तालिका सामान्यतः प्रक्रिया के लिए अदृश्य होते हैं। पृष्ठ तालिका अतिरिक्त मेमोरी आवंटित करना आसान बनाते हैं, क्योंकि प्रत्येक नए पृष्ठ को भौतिक मेमोरी में कहीं से भी आवंटित किया जा सकता है। कुछ सिस्टम पर पृष्ठ तालिका एंट्री को एकमात्र-पढ़ने के लिए निर्दिष्ट कर सकती है।
कुछ ऑपरेटिंग सिस्टम प्रत्येक प्रक्रिया के लिए भिन्न एड्रेस स्थान को स्थापित करते हैं, जो हार्ड मेमोरी सुरक्षा सीमाएं प्रदान करता है।[2] अनपेक्षित आवेदन के लिए उस पृष्ठ तक पहुंचना असंभव है जिसे स्पष्ट रूप से आवंटित नहीं किया गया है, [lower-alpha 3]क्योंकि प्रत्येक मेमोरी एड्रेस या तो उस आवेदन को आवंटित पृष्ठ को इंगित करता है। असंबद्ध पृष्ठ, और किसी अन्य आवेदन को आवंटित पृष्ठ, आवेदन के दृष्टिकोण से कोई एड्रेस नहीं हैं।
जरूरी नहीं कि पृष्ठ दोष त्रुटि का संकेत दे। पृष्ठ दोष एकमात्र मेमोरी सुरक्षा के लिए उपयोग किए जाते हैं। ऑपरेटिंग सिस्टम पृष्ठ तालिका को इस प्रकार से प्रबंधित कर सकता है कि उस पृष्ठ का संदर्भ जो पूर्व सेकेंडरी स्टोरेज में पृष्ठ आउट हो चुका है, [lower-alpha 4] पृष्ठ दोष का कारण बनता है। ऑपरेटिंग सिस्टम पृष्ठ दोष को अवरोध करता है, आवश्यक मेमोरी पृष्ठ को लोड करता है, और आवेदन जारी रहता है जैसे कि कोई दोष नहीं हुआ था। यह योजना, वर्चुअल मेमोरी, इन-मेमोरी डेटा की अनुमति देती है जो वर्तमान में सेकेंडरी स्टोरेज में ले जाने के लिए उपयोग में नहीं है और इस प्रकार से जो अनुप्रयोगों के लिए पारदर्शी है, समग्र मेमोरी क्षमता को बढ़ाने के लिए है।
कुछ सिस्टमों पर, वर्चुअल स्टोरेज के लिए अनुरोध वर्चुअल एड्रेस का ब्लॉक आवंटित कर सकता है जिसके लिए कोई पृष्ठ फ्रेम नियत नहीं किया गया है, और सिस्टम पृष्ठ फ्रेम को निर्दिष्ट और हस्ताक्षर करेगा जब पृष्ठ दोष होते हैं। कुछ सिस्टम पर गार्ड पृष्ठ का उपयोग किया जा सकता है, तो त्रुटि का ज्ञात करने के लिए या डेटा संरचनाओं को स्वचालित रूप से विकसित करने के लिए किया जाता है।
कुछ सिस्टम पर, पृष्ठ दोष तंत्र का उपयोग निष्पादन योग्य स्थान सुरक्षा जैसे W^X के लिए भी किया जाता है।
सुरक्षा कुंजी
मेमोरी सुरक्षा कुंजी (MPK)[3] तंत्र भौतिक मेमोरी को विशेष आकार (जैसे, 4 KiB) के ब्लॉकों में विभाजित करता है, जिनमें से प्रत्येक का संबद्ध संख्यात्मक मान होता है जिसे सुरक्षा कुंजी कहा जाता है। प्रत्येक प्रक्रिया में सुरक्षा कुंजी मूल्य भी जुड़ा होता है। मेमोरी एक्सेस पर हार्डवेयर परीक्षण करता है कि वर्तमान प्रक्रिया की सुरक्षा कुंजी एक्सेस किए जा रहे मेमोरी ब्लॉक से जुड़े मान से मिलती है; यदि नहीं, तो अपवाद होता है। यह तंत्र सिस्टम/360 वास्तुकला में प्रस्तुत किया गया था। यह आज के सिस्टम z मेनफ्रेम पर उपलब्ध है और सिस्टम z ऑपरेटिंग सिस्टम और उनके सबसिस्टम द्वारा अत्यधिक उपयोग किया जाता है।
ऊपर वर्णित सिस्टम/360 सुरक्षा कुंजियाँ भौतिक एड्रेस से संबद्ध हैं। यह हेवलेट पैकर्ड /इंटेल आईए-64 और हेवलेट-पैकार्ड पीए-आरआईएससी जैसे वास्तुकला द्वारा उपयोग किए जाने वाले सुरक्षा कुंजी तंत्र से भिन्न है, जो वर्चुअल एड्रेस से जुड़े हैं, और जो प्रति प्रक्रिया कई कुंजी की अनुमति देते हैं।
इटेनियम और पीए-आरआईएससी वास्तुकला में, अनुवाद (टीएलबी प्रविष्टियां) में उनके साथ जुड़े कुंजी (इटेनियम) या एक्सेस आईडी (पीए-आरआईएससी) हैं। प्रक्रिया में कई सुरक्षा कुंजी रजिस्टर होते हैं (इटेनियम के लिए 16,[4] पीए-रिस्क के लिए 4[5]) वर्चुअल एड्रेस द्वारा चुने गए अनुवाद में प्रत्येक सुरक्षा कुंजी रजिस्टर की अपेक्षा में की इसकी कुंजी होती है। यदि उनमें से कोई भी मिलती है (साथ ही अन्य संभावित परीक्षण), तो एक्सेस की अनुमति है। यदि कोई मिलती नहीं है, तो दोष या अपवाद उत्पन्न होता है। सॉफ़्टवेयर फ़ॉल्ट हैंडलर, यदि वांछित हो, सॉफ़्टवेयर द्वारा अनुरक्षित कुंजियों की बड़ी सूची के विरुद्ध गुम कुंजी की जाँच कर सकता है; इस प्रकार, प्रोसेसर के अंदर सुरक्षा कुंजी रजिस्टरों को प्रक्रिया से जुड़ी चाबियों की बड़ी सूची के सॉफ़्टवेयर-प्रबंधित कैश के रूप में माना जा सकता है।
पीए-आरआईएससी में 15-18 बिट्स कुंजी होती हैं; इटेनियम 18 को अनिवार्य करता है। कुंजियाँ सामान्यतः सुरक्षा डोमेन से जुड़ी होती हैं, जैसे पुस्तकालय, मॉड्यूल, आदि।
X86 में, सुरक्षा कुंजियाँ वास्तुकला 16 सुरक्षा कुंजियों में से किसी के साथ उपयोगकर्ता पृष्ठों के लिए वर्चुअल एड्रेस को टैग करने की अनुमति देता है। [6] ही सुरक्षा कुंजी के साथ टैग किए गए सभी पृष्ठ सुरक्षा डोमेन बनाते हैं। नए रजिस्टर में प्रत्येक सुरक्षा डोमेन से जुड़ी अनुमतियाँ होती हैं। लोड और स्टोर संचालन को पृष्ठ तालिका अनुमतियों और वर्चुअल एड्रेसके सुरक्षा डोमेन से जुड़ी सुरक्षा कुंजी अनुमतियों दोनों के विरुद्ध चेक किया जाता है, और एकमात्र तभी अनुमति दी जाती है जब दोनों अनुमतियां एक्सेस की अनुमति देती हैं। सुरक्षा कुंजी अनुमतियां उपयोगकर्ता स्थान से सेट की संख्या जा सकती हैं, जिससे अनुप्रयोगों को ओएस हस्तक्षेप के बिना आवेदन डेटा तक पहुंच को सीधे प्रतिबंधित करने की इजाजत मिलती है। चूंकि सुरक्षा कुंजियां वर्चुअल एड्रेससे जुड़ी होती हैं, इसलिए सुरक्षा डोमेन प्रति एड्रेस स्थान होते हैं, इसलिए भिन्न- भिन्न एड्रेस स्थान में चलने वाली प्रक्रियाएं सभी 16 डोमेन का उपयोग कर सकती हैं।
सुरक्षा के छल्ले
मॉलटिक्स और इससे प्राप्त सिस्टम में, प्रत्येक खंड में पढ़ने, लिखने और निष्पादन के लिए सुरक्षा वलय होती है; खंड के लिए वलय संख्या की अपेक्षा में उच्च वलय संख्या वाली प्रक्रिया द्वारा प्रयास दोष का कारण बनता है। सुरक्षित रूप से कॉल करने की प्रक्रियाओं के लिए तंत्र है जो निचली वलय में चलता है और उच्च वलय में वापस आता है। अपनी वलय और कॉलर की वलय के बड़े वाले पैरामीटर तक पहुंचने के लिए अल्प वलय संख्या के साथ चलने वाले सामान्य के लिए तंत्र हैं।
नकली विभाजन
सिमुलेशन कुछ कंप्यूटर वास्तुकला के मशीन कोड निर्देशों की व्याख्या करने के लिए निगरानी कार्यक्रम का उपयोग है। इस प्रकार केनिर्देश सेट सिम्युलेटर विभाजन जैसी योजना का उपयोग करके और वास्तव में उन्हें निष्पादित करने से पूर्व वास्तविक समय में प्रत्येक निर्देश के लक्ष्य एड्रेसऔर लंबाई को मान्य करके मेमोरी सुरक्षा प्रदान कर सकता है। सिम्युलेटर को लक्ष्य एड्रेसऔर लंबाई की गणना करनी चाहिए और इसकी अपेक्षा थ्रेड का वातावरण से संबंधित मान्य एड्रेस श्रेणियों की सूची से करनी चाहिए | जैसे कि थ्रेड की स्थापना के बाद से प्राप्त कोई भी गतिशील कंप्यूटर मेमोरी ब्लॉक, साथ ही कोई भी मान्य साझा स्थिर मेमोरी स्लॉट है। संदर्भ के आधार पर वैध का अर्थ पूरे थ्रेड के जीवन में बदल सकता है। इसे कभी-कभी निष्पादन के वर्तमान मोड के आधार पर, भंडारण के स्थिर ब्लॉक को बदलने की अनुमति दी जा सकती है, और कभी-कभी नहीं, जो भंडारण कुंजी या पर्यवेक्षक राज्य पर निर्भर हो सकता है या नहीं हो सकता है।[citation needed]
सामान्यतः मेमोरी सुरक्षा की इस पद्धति का उपयोग करने की सलाह नहीं दी जाती है, जहां सीपीयू पर पर्याप्त सुविधाएं उपस्थित होती हैं, क्योंकि यह कंप्यूटर से मूल्यवान प्रसंस्करण शक्ति लेता है। यद्यपि, यह सामान्यतः डिबगिंग और परीक्षण उद्देश्यों के लिए उपयोग किया जाता है ताकि अन्यथा सामान्य भंडारण उल्लंघनों के लिए अतिरिक्त बारीक स्तर प्रदान किया जा सके और यह इंगित कर सकता है कि कौन सा निर्देश भंडारण के विशेष खंड को अधिलेखित करने का प्रयास कर रहा है जिसमें असुरक्षित भंडारण के समान भंडारण कुंजी हो सकती है।
क्षमता-आधारित संबोधन
क्षमता-आधारित एड्रेसिंग मेमोरी सुरक्षा की विधि है जिसका आधुनिक व्यावसायिक कंप्यूटरों में उपयोग नहीं किया जाता है। इस पद्धति में, पॉइंटर (कंप्यूटर प्रोग्रामिंग) को संरक्षित वस्तुओं (जिन्हें क्षमताओं कहा जाता है) द्वारा प्रतिस्थापित किया जाता है, जिसे एकमात्र विशेषाधिकार (कंप्यूटिंग) निर्देशों का उपयोग करके बनाया जा सकता है जो एकमात्र कर्नेल द्वारा निष्पादित किया जा सकता है, ऐसा करने के लिए अधिकृत कोई अन्य प्रक्रिया।[citation needed] यह प्रभावी रूप से कर्नेल को नियंत्रित करने देता है कि कौन सी प्रक्रियाएं मेमोरी में किन वस्तुओं तक पहुंच सकती हैं, इसके लिए भिन्न एड्रेस स्थान या संदर्भ स्विच का उपयोग करने की आवश्यकता नहीं है। एकमात्र कुछ व्यावसायिक उत्पादों ने क्षमता आधारित सुरक्षा का उपयोग किया: प्लेसी सिस्टम 250, आईबीएम सिस्टम/38, इंटेल आईएपी्स 432 निर्देश समुच्चय और कीकोस। अत्यधिक विश्वसनीय ऑपरेटिंग सिस्टम और कॉम्बेक्स दर्पा ब्राउज़र जैसे अनुसंधान प्रणालियों में क्षमता दृष्टिकोण का व्यापक रूप से उपयोग किया जाता है। वे अवधारणात्मक रूप से कुछ आभासी मशीनों के आधार के रूप में उपयोग किए जाते हैं, विशेष रूप से स्मॉलटाक और जावा (सॉफ्टवेयर प्लेटफॉर्म) है। वर्तमान में, कैम्ब्रिज विश्वविद्यालय में दर्पा द्वारा वित्त पोषित चेरी परियोजना आधुनिक क्षमता वाली मशीन बनाने के लिए कार्य कर रही है जो विरासत सॉफ्टवेयर का भी समर्थन करती है।
डायनेमिक टैनिंग
डायनेमिक टैनिंग प्रोग्राम को अवैध मेमोरी एक्सेस से बचाने की प्रणाली है। जब मेमोरी आवंटित की जाती है, तो रनटाइम पर, यह प्रणाली दाग चिह्न का उपयोग करके मेमोरी और संबंधित सूचक दोनों को दूषित कर देती है। जब प्रोग्राम निष्पादित होता है तब दाग के निशान उपयुक्त रूप से प्रचारित किए जाते हैं और मेमोरी एड्रेस m को पॉइंटर p के माध्यम से एक्सेस किया जाता है; यदि m और p से जुड़े दाग चिह्न भिन्न होते हैं, तो निष्पादन रोक दिया जाता है और अवैध पहुंच की सूचना दी जाती है।[7][8]
स्पार्क एम 7 प्रोसेसर (और उच्चतर) हार्डवेयर में डायनेमिक टैनिंग प्रारम्भ करते हैं। ओरेकल इस सुविधा को सिलिकॉन सुरक्षित मेमोरी (एसएसएम) (पूर्व आवेदन डेटा इंटीग्रिटी (ADI) के रूप में ब्रांडेड) के रूप में बाजार में आता है ।[9]
लो आरआईएससी सीपीयू डिज़ाइन में टैग की गई मेमोरी नाम से डायनेमिक टैनिंग सम्मिलित है।[10]
उपाय
किसी विशेष कार्यान्वयन के सुरक्षा स्तर को इस बात से मापा जा सकता है कि वह न्यूनतम विशेषाधिकार के सिद्धांत का कितनी अनति से पालन करता है।[11]
विभिन्न ऑपरेटिंग सिस्टम में मेमोरी सुरक्षा
विभिन्न ऑपरेटिंग सिस्टम मेमोरी सुरक्षा या पृथक्करण के विभिन्न रूपों का उपयोग करते हैं। चूँकि 1960 के दशक से अधिकांश मेनफ्रेम और कई मिनी कंप्यूटर सिस्टम पर मेमोरी सुरक्षा सामान्य थी, 1987 में ओएस/2 (और आरआईएससी ओएस में) जारी होने तक गृह कम्प्यूटर ऑपरेटिंग सिस्टम में ट्रू मेमोरी सेपरेशन का उपयोग नहीं किया गया था। प्रक्रियाओं के मध्य सूचक भेजकर इंटरप्रोसेस संचार के रूप में भी उपयोग किया गया था। ऑपरेटिंग सिस्टम के विंडोज 9x परिवार में सिस्टम मेमोरी तक पहुंचने के लिए प्रक्रियाओं के लिए संभव है।[12]
मेमोरी सुरक्षा को प्रारम्भ करने वाले कुछ ऑपरेटिंग सिस्टम में सम्मिलित हैं:
- ,जिसमें सोलारिस, लिनक्स, बीएसडी, मैकओएस, आईओएस और जीएनयू हर्ड, यूनिक्स जैसी प्रणालियाँ (1970 के दशक के उत्तरार्ध से) सम्मिलित हैं।
- बेल लैब्स और इन्फर्नो (ऑपरेटिंग सिस्टम) से योजना 9, जिसे बेल लैब्स में यूनिक्स उत्तराधिकारी के रूप में बनाया गया (1992, 1995)
- ओएस/2 (1987)
- आरआईएससी ओएस (1987) (ओएस मेमोरी सुरक्षा व्यापक नहीं है।)
- माइक्रोवेयर ओएस-9, वैकल्पिक मॉड्यूल के रूप में (1992 से)
- विंडोज एनटी 3.1 से माइक्रोसॉफ़्ट विंडोज़ परिवार (1993)
- अटारी मल्टी टीओएस (1991 से)
- फारोसी[13] (2017 से)
यूनिक्स जैसी प्रणालियों पर,एमप्रोटेक्ट सिस्टम कॉल
का उपयोग मेमोरी सुरक्षा को नियंत्रित करने के लिए किया जाता है।[14]
यह भी देखें
- भंडारण उल्लंघन, मेमोरी सुरक्षा के उल्लंघन के लिए
- सुरक्षा और सुरक्षा का पृथक्करण
- मेमोरी प्रबंधन (ऑपरेटिंग सिस्टम)
संदर्भ
- ↑ 1.0 1.1 Intel (July 2008). Intel 64 and IA-32 Architectures Software Developer's Manuals: Volume 3A: System Programming Guide, Part 1 (PDF). Intel. Retrieved 2008-08-21.
- ↑ Jeffrey S. Chase; Henry M. Levy; Michael J. Feeley; and Edward D. Lazowska. "Sharing and Protection in a Single Address Space Operating System". doi:10.1145/195792.195795 1993. p. 2.
- ↑ Memory protection keys, Jonathan Corbet, May 13, 2015, LWN.net
- ↑ "Keys in Itanium" (PDF). Archived from the original (PDF) on 2007-11-28.
- ↑ "Memory protection in HP PA-RISC" (PDF). February 1994. Archived from the original (PDF) on 2015-09-05. Retrieved 2018-10-29.
- ↑ "Intel Software Developer Manual" (PDF). March 2012. Archived from the original (PDF) on 2012-06-01. Retrieved 2018-10-29.
- ↑ Clause, James; Doudalis, Ioannis; Orso, Alessandro; Prvulovic, Milos (2007). Effective memory protection using dynamic tainting (PDF). p. 284. doi:10.1145/1321631.1321673. ISBN 9781595938824. S2CID 6334541.
{{cite book}}
:|journal=
ignored (help) - ↑ Doudalis, Ioannis; Clause, James; Venkataramani, Guru; Prvulovic, Milos; Orso, Alessandro (2012). "Effective and Efficient Memory Protection Using Dynamic Tainting" (PDF). IEEE Transactions on Computers. 61 (1): 87–100. doi:10.1109/TC.2010.215. ISSN 0018-9340. S2CID 15913190.
- ↑ Jenkins, Michelle. "Oracle Announces Breakthrough Processor and Systems Design with SPARC M7". www.oracle.com. Retrieved 2016-11-18.
- ↑ "Tagged memory support". www.lowrisc.org. Retrieved 2018-05-24.
- ↑ Cook, D.J. Measuring memory protection, accepted for 3rd International Conference on Software Engineering, Atlanta, Georgia, May 1978.
- ↑ "Windows 9x does not have true memory protection". Everything2. 2000-06-24. Retrieved 2009-04-29.
- ↑ "Pharos".
- ↑ "mprotect". The Open Group Base Specifications Issue 6. The Open Group.
टिप्पणियाँ
- ↑ Depending on the architecture, that may include, e.g., unallocated pages and segments, pages in a different protection domain, pages requiring a higher privilege level.
- ↑ Some systems, e.g., z/OS, support more than one page size.
- ↑ On some systems there are privileged instructions for storage access by real address.
- ↑ In the early days of time sharing paging was normally to a magnetic drum; in contemporary systems, paging is normally to a hard disk or solid state device.
बाहरी संबंध
- Intel Developer Manuals – in-depth information on memory protection for Intel-based architectures