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

From Vigyanwiki
Revision as of 17:49, 28 April 2023 by alpha>Abhishek (Abhishek moved page स्मृति सुरक्षा to मैमोरी सुरक्षा without leaving a redirect)

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

तरीके

विभाजन

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

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


पृष्ठांकित वर्चुअल मेमोरी

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

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

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

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

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

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

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

सुरक्षा कुंजी

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

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

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

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

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

सुरक्षा के छल्ले

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

नकली विभाजन

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

क्षमता-आधारित संबोधन

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

डायनेमिक टैनिंग

डायनेमिक टैनिंग प्रोग्राम को अवैध मेमोरी एक्सेस से बचाने की एक तकनीक है। जब स्मृति आवंटित की जाती है, तो रनटाइम पर, यह तकनीक एक ही दाग ​​चिह्न का उपयोग करके स्मृति और संबंधित सूचक दोनों को खराब कर देती है। जब प्रोग्राम निष्पादित होता है तब दाग के निशान उपयुक्त रूप से प्रचारित किए जाते हैं और हर बार एक मेमोरी एड्रेस m को पॉइंटर p के माध्यम से एक्सेस किया जाता है; यदि एम और पी से जुड़े दाग चिह्न भिन्न होते हैं, तो निष्पादन रोक दिया जाता है और अवैध पहुंच की सूचना दी जाती है।[7][8] SPARC M7 प्रोसेसर (और उच्चतर) हार्डवेयर में डायनेमिक टैनिंग लागू करते हैं। Oracle इस फीचर को सिलिकॉन सुरक्षित मेमोरी (SSM) (पहले एप्लिकेशन डेटा इंटीग्रिटी (ADI) के रूप में ब्रांडेड) के रूप में बाजार में उतारता है।[9] LowRISC CPU डिज़ाइन में टैग की गई मेमोरी नाम के तहत डायनेमिक टैनिंग शामिल है।[10]


उपाय

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


विभिन्न ऑपरेटिंग सिस्टम में मेमोरी सुरक्षा

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

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


यह भी देखें

संदर्भ

  1. 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.
  2. 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.
  3. Memory protection keys, Jonathan Corbet, May 13, 2015, LWN.net
  4. "Keys in Itanium" (PDF). Archived from the original (PDF) on 2007-11-28.
  5. "Memory protection in HP PA-RISC" (PDF). February 1994. Archived from the original (PDF) on 2015-09-05. Retrieved 2018-10-29.
  6. "Intel Software Developer Manual" (PDF). March 2012. Archived from the original (PDF) on 2012-06-01. Retrieved 2018-10-29.
  7. 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)
  8. 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.
  9. Jenkins, Michelle. "Oracle Announces Breakthrough Processor and Systems Design with SPARC M7". www.oracle.com. Retrieved 2016-11-18.
  10. "Tagged memory support". www.lowrisc.org. Retrieved 2018-05-24.
  11. Cook, D.J. Measuring memory protection, accepted for 3rd International Conference on Software Engineering, Atlanta, Georgia, May 1978.
  12. "Windows 9x does not have true memory protection". Everything2. 2000-06-24. Retrieved 2009-04-29.
  13. "Pharos".
  14. "mprotect". The Open Group Base Specifications Issue 6. The Open Group.


टिप्पणियाँ

  1. 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.
  2. Some systems, e.g., z/OS, support more than one page size.
  3. On some systems there are privileged instructions for storage access by real address.
  4. 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.


इस पृष्ठ में अनुपलब्ध आंतरिक कड़ियों की सूची

  • निष्पादन योग्य स्थान संरक्षण
  • सुरक्षा की अंगूठी
  • भौतिक स्मृति
  • रुकावट डालना
  • क्षमता-आधारित संबोधन
  • सूचक (कंप्यूटर प्रोग्रामिंग)
  • अत्यंत विश्वसनीय ऑपरेटिंग सिस्टम
  • छोटी बात
  • कम जोखिम
  • न्यूनतम विशेषाधिकार का सिद्धांत
  • अंतःप्रक्रम संचार
  • UNIX- जैसे
  • बेल लैब्स से प्लान 9
  • मैक ओएस

बाहरी संबंध