सुरक्षा रिंग: Difference between revisions
No edit summary |
No edit summary |
||
| Line 6: | Line 6: | ||
कंप्यूटर ऑपरेटिंग सिस्टम संसाधनों तक पहुंच के विभिन्न स्तर प्रदान करते हैं। [[कंप्यूटर प्रणाली]] के आर्किटेक्चर के भीतर दो या दो से अधिक पदानुक्रमित स्तरों या विशेषाधिकार (कंप्यूटिंग) की परतों में सुरक्षा रिंग है। यह सामान्यतः कुछ [[सेंट्रल प्रोसेसिंग यूनिट]] [[कंप्यूटर आर्किटेक्चर]] द्वारा हार्डवेयर-प्रवर्तित होता है जो हार्डवेयर या [[माइक्रोकोड]] [[अमूर्त परत|लेयर]] पर विभिन्न [[सीपीयू मोड]] प्रदान करता है। रिंगों को पदानुक्रम में अधिक विशेषाधिकार प्राप्त (सबसे विश्वसनीय, सामान्यतः शून्य संख्या) से कम विशेषाधिकार प्राप्त (कम से कम विश्वसनीय, सामान्यतः उच्चतम रिंग संख्या के साथ) करने के लिए व्यवस्थित किया जाता है। रिंग 0 अधिक विशेषाधिकार का स्तर है और भौतिक हार्डवेयर जैसे कुछ सीपीयू कार्यक्षमता और मदरबोर्ड पर चिप्स के साथ संपर्क की अनुमति प्रदान करता है। | कंप्यूटर ऑपरेटिंग सिस्टम संसाधनों तक पहुंच के विभिन्न स्तर प्रदान करते हैं। [[कंप्यूटर प्रणाली]] के आर्किटेक्चर के भीतर दो या दो से अधिक पदानुक्रमित स्तरों या विशेषाधिकार (कंप्यूटिंग) की परतों में सुरक्षा रिंग है। यह सामान्यतः कुछ [[सेंट्रल प्रोसेसिंग यूनिट]] [[कंप्यूटर आर्किटेक्चर]] द्वारा हार्डवेयर-प्रवर्तित होता है जो हार्डवेयर या [[माइक्रोकोड]] [[अमूर्त परत|लेयर]] पर विभिन्न [[सीपीयू मोड]] प्रदान करता है। रिंगों को पदानुक्रम में अधिक विशेषाधिकार प्राप्त (सबसे विश्वसनीय, सामान्यतः शून्य संख्या) से कम विशेषाधिकार प्राप्त (कम से कम विश्वसनीय, सामान्यतः उच्चतम रिंग संख्या के साथ) करने के लिए व्यवस्थित किया जाता है। रिंग 0 अधिक विशेषाधिकार का स्तर है और भौतिक हार्डवेयर जैसे कुछ सीपीयू कार्यक्षमता और मदरबोर्ड पर चिप्स के साथ संपर्क की अनुमति प्रदान करता है। | ||
स्वेच्छाचारी उपयोग के विपरीत, पूर्वनिर्धारित विधि से बाह्य रिंग को आंतरिक रिंग के संसाधनों पर एक्सेस की अनुमति देने के लिए रिंगों के मध्य विशेष [[कॉल गेट]] प्रदान किए जाते हैं। रिंगों के मध्य उचित गेटिंग एक्सेस रिंग या विशेषाधिकार स्तर के प्रोग्राम को दूसरे रिंग में प्रोग्राम के लिए अभिप्रेत संसाधनों के दुरुपयोग को अवरोधित करके सुरक्षा में संशोधन किया जा सकता है। उदाहरण के लिए, रिंग 3 में उपयोगकर्ता प्रोग्राम के रूप में चल रहे [[स्पाइवेयर]] को उपयोगकर्ता को सूचित किए बिना वेब कैमरे के उपयोग से अवरोधित करना चाहिए, क्योंकि हार्डवेयर एक्सेस [[डिवाइस ड्राइवर]] के लिए आरक्षित रिंग 1 फ़ंक्शन होना चाहिए। उच्च क्रमांकित रिंगों में चलने वाले वेब ब्राउज़र जैसे प्रोग्रामों को कम संख्या वाले रिंगों तक सीमित संसाधन | स्वेच्छाचारी उपयोग के विपरीत, पूर्वनिर्धारित विधि से बाह्य रिंग को आंतरिक रिंग के संसाधनों पर एक्सेस की अनुमति देने के लिए रिंगों के मध्य विशेष [[कॉल गेट]] प्रदान किए जाते हैं। रिंगों के मध्य उचित गेटिंग एक्सेस रिंग या विशेषाधिकार स्तर के प्रोग्राम को दूसरे रिंग में प्रोग्राम के लिए अभिप्रेत संसाधनों के दुरुपयोग को अवरोधित करके सुरक्षा में संशोधन किया जा सकता है। उदाहरण के लिए, रिंग 3 में उपयोगकर्ता प्रोग्राम के रूप में चल रहे [[स्पाइवेयर]] को उपयोगकर्ता को सूचित किए बिना वेब कैमरे के उपयोग से अवरोधित करना चाहिए, क्योंकि हार्डवेयर एक्सेस [[डिवाइस ड्राइवर]] के लिए आरक्षित रिंग 1 फ़ंक्शन होना चाहिए। उच्च क्रमांकित रिंगों में चलने वाले वेब ब्राउज़र जैसे प्रोग्रामों को कम संख्या वाले रिंगों तक सीमित संसाधन को नेटवर्क एक्सेस अनुरोध करना चाहिए। | ||
== कार्यान्वयन == | == कार्यान्वयन == | ||
[[ मॉलटिक्स ]] ऑपरेटिंग सिस्टम द्वारा | [[ मॉलटिक्स ]] ऑपरेटिंग सिस्टम द्वारा प्रारम्भ की गई क्रांतिकारी अवधारणाओं में विभिन्न सुरक्षा रिंग थे, जो वर्तमान में [[यूनिक्स]] ऑपरेटिंग सिस्टम के सदस्य के सुरक्षित पूर्ववर्ती हैं। [[GE 645]] मेनफ्रेम कंप्यूटर में कुछ हार्डवेयर अभिगम नियंत्रण था, किन्तु यह हार्डवेयर में रिंगों के लिए पूर्ण समर्थन प्रदान करने के लिए पर्याप्त नहीं था, इसलिए मल्टिक्स ने सॉफ्टवेयर में रिंग ट्रांज़िशन को फंसाकर उनका समर्थन किया;<ref>{{cite journal|title=प्रोटेक्शन रिंग्स को लागू करने के लिए एक हार्डवेयर आर्किटेक्चर|url=http://www.multicians.org/protection.html|journal=[[Communications of the ACM]]|date=March 1972|volume=15 |issue=3|access-date=27 September 2012}}</ref> इसके उत्तराधिकारी, [[हनीवेल 6180]] ने उन्हें आठ रिंगों के समर्थन के साथ हार्डवेयर में लागू किया।<ref>{{cite web|title=मल्टिक्स ग्लोसरी - रिंग|url=http://www.multicians.org/mgr.html#ring|access-date=27 September 2012}}</ref> हालाँकि, अधिकांश सामान्य-प्रयोजन प्रणालियाँ केवल दो रिंगों का उपयोग करती हैं, भले ही वे जिस हार्डवेयर पर चलते हैं वह उससे अधिक CPU मोड प्रदान करता हो। उदाहरण के लिए, विंडोज 7 और विंडोज सर्वर 2008 (और उनके पूर्ववर्ती) केवल दो रिंगों का उपयोग करते हैं, जिसमें रिंग 0 #SUPERVISOR-MODE के अनुरूप है और रिंग 3 [[ उपयोक्ता स्थान ]] के लिए है,<ref name="russinovich"/>क्योंकि Windows के पुराने संस्करण ऐसे प्रोसेसर पर चलते थे जो केवल दो सुरक्षा स्तरों का समर्थन करते थे।<ref>{{cite book|last=Russinovich|first=Mark|title=Windows Internals Part 1. 6th Ed|year=2012|publisher=Microsoft Press|location=Redmond, Washington|isbn=978-0-7356-4873-9|page=17|quote=The reason Windows uses only two levels is that some hardware architectures that were supported in the past (such as [[DEC Alpha|Compaq Alpha]] and [[MIPS architecture|Silicon Graphics MIPS]]) implemented only two privilege levels.}}</ref> | ||
कई आधुनिक सीपीयू आर्किटेक्चर (लोकप्रिय [[इंटेल]] x86 आर्किटेक्चर सहित) में कुछ प्रकार की रिंग सुरक्षा शामिल है, हालांकि यूनिक्स की तरह [[विंडोज एनटी]] ऑपरेटिंग सिस्टम इस सुविधा का पूरी तरह से उपयोग नहीं करता है। OS/2 कुछ हद तक तीन रिंगों का उपयोग करता है:<ref>{{Cite web |url=http://cyberkinetica.homeunix.net/os2tk45/ddk_pdrref/005_L1_IntroductiontoOS2Pre.html |title=Presentation Device Driver Reference for OS/2 - 5. Introduction to OS/2 Presentation Drivers |access-date=13 June 2015 |archive-url=https://web.archive.org/web/20150615030714/http://cyberkinetica.homeunix.net/os2tk45/ddk_pdrref/005_L1_IntroductiontoOS2Pre.html |archive-date=15 June 2015 |url-status=dead }}</ref> कर्नेल कोड और डिवाइस ड्राइवरों के लिए 0 रिंग करें, विशेषाधिकार प्राप्त कोड के लिए 2 रिंग करें (I/O एक्सेस अनुमतियों के साथ उपयोगकर्ता प्रोग्राम), और अनपेक्षित कोड (लगभग सभी उपयोगकर्ता प्रोग्राम) के लिए रिंग 3। DOS के तहत, कर्नेल, ड्राइवर और एप्लिकेशन सामान्यतः रिंग 3 पर चलते हैं (हालांकि, यह उस मामले के लिए विशिष्ट है जहां संरक्षित-मोड ड्राइवर और/या DOS एक्सटेंडर का उपयोग किया जाता है; वास्तविक-मोड OS के रूप में, सिस्टम प्रभावी रूप से बिना किसी सुरक्षा के चलता है। ), जबकि 386 मेमोरी मैनेजर जैसे [[EMM386]] रिंग 0 पर चलते हैं। इसके अलावा, [[DR-DOS]]' EMM386 3.xx वैकल्पिक रूप से रिंग 1 पर कुछ मॉड्यूल (जैसे [[डॉस संरक्षित मोड सेवाएं]]) चला सकते हैं। [[ ओपन VMS ]] कर्नेल, कार्यकारी, पर्यवेक्षक और उपयोगकर्ता नामक चार मोड का उपयोग करता है (घटते विशेषाधिकारों के क्रम में)। | कई आधुनिक सीपीयू आर्किटेक्चर (लोकप्रिय [[इंटेल]] x86 आर्किटेक्चर सहित) में कुछ प्रकार की रिंग सुरक्षा शामिल है, हालांकि यूनिक्स की तरह [[विंडोज एनटी]] ऑपरेटिंग सिस्टम इस सुविधा का पूरी तरह से उपयोग नहीं करता है। OS/2 कुछ हद तक तीन रिंगों का उपयोग करता है:<ref>{{Cite web |url=http://cyberkinetica.homeunix.net/os2tk45/ddk_pdrref/005_L1_IntroductiontoOS2Pre.html |title=Presentation Device Driver Reference for OS/2 - 5. Introduction to OS/2 Presentation Drivers |access-date=13 June 2015 |archive-url=https://web.archive.org/web/20150615030714/http://cyberkinetica.homeunix.net/os2tk45/ddk_pdrref/005_L1_IntroductiontoOS2Pre.html |archive-date=15 June 2015 |url-status=dead }}</ref> कर्नेल कोड और डिवाइस ड्राइवरों के लिए 0 रिंग करें, विशेषाधिकार प्राप्त कोड के लिए 2 रिंग करें (I/O एक्सेस अनुमतियों के साथ उपयोगकर्ता प्रोग्राम), और अनपेक्षित कोड (लगभग सभी उपयोगकर्ता प्रोग्राम) के लिए रिंग 3। DOS के तहत, कर्नेल, ड्राइवर और एप्लिकेशन सामान्यतः रिंग 3 पर चलते हैं (हालांकि, यह उस मामले के लिए विशिष्ट है जहां संरक्षित-मोड ड्राइवर और/या DOS एक्सटेंडर का उपयोग किया जाता है; वास्तविक-मोड OS के रूप में, सिस्टम प्रभावी रूप से बिना किसी सुरक्षा के चलता है। ), जबकि 386 मेमोरी मैनेजर जैसे [[EMM386]] रिंग 0 पर चलते हैं। इसके अलावा, [[DR-DOS]]' EMM386 3.xx वैकल्पिक रूप से रिंग 1 पर कुछ मॉड्यूल (जैसे [[डॉस संरक्षित मोड सेवाएं]]) चला सकते हैं। [[ ओपन VMS ]] कर्नेल, कार्यकारी, पर्यवेक्षक और उपयोगकर्ता नामक चार मोड का उपयोग करता है (घटते विशेषाधिकारों के क्रम में)। | ||
इस डिज़ाइन संरचना में नए सिरे से रुचि [[ एक्सईएन ]] [[सूत्र]] सॉफ़्टवेयर के प्रसार के साथ आई, [[ अखंड कर्नेल ]] बनाम [[माइक्रोकर्नेल]] | माइक्रो-कर्नेल (विशेष रूप से [[यूज़नेट]] न्यूज़ग्रुप और [[इंटरनेट मंच]] में), माइक्रोसॉफ्ट [[की]] रिंग -1 डिज़ाइन संरचना के हिस्से के रूप में टेनेनबाम-टोरवाल्ड्स बहस उनकी [[नेक्स्ट-जेनरेशन सिक्योर कंप्यूटिंग बेस]] पहल, और [[इंटेल वीटी-एक्स]] (पूर्व में वेंडरपूल) जैसे [[x86 वर्चुअलाइजेशन]] पर आधारित हाइपरविजर। | इस डिज़ाइन संरचना में नए सिरे से रुचि [[ एक्सईएन ]] [[सूत्र]] सॉफ़्टवेयर के प्रसार के साथ आई, [[ अखंड कर्नेल ]] बनाम [[माइक्रोकर्नेल]] | माइक्रो-कर्नेल (विशेष रूप से [[यूज़नेट]] न्यूज़ग्रुप और [[इंटरनेट मंच]] में), माइक्रोसॉफ्ट [[की]] रिंग -1 डिज़ाइन संरचना के हिस्से के रूप में टेनेनबाम-टोरवाल्ड्स बहस उनकी [[नेक्स्ट-जेनरेशन सिक्योर कंप्यूटिंग बेस]] पहल, और [[इंटेल वीटी-एक्स]] (पूर्व में वेंडरपूल) जैसे [[x86 वर्चुअलाइजेशन]] पर आधारित हाइपरविजर। | ||
मूल मल्टिक्स प्रणाली में आठ छल्ले थे, | मूल मल्टिक्स प्रणाली में आठ छल्ले थे, किन्तु कई आधुनिक प्रणालियों में कम हैं। हार्डवेयर विशेष मशीन रजिस्टर की मदद से हर समय निष्पादन निर्देश [[थ्रेड (कंप्यूटिंग)]] की वर्तमान रिंग से अवगत रहता है। कुछ प्रणालियों में, [[ आभासी मेमोरी ]] के क्षेत्रों को इसके बजाय हार्डवेयर में रिंग नंबर दिए जाते हैं। उदाहरण डेटा जनरल एक्लिप्स एमवी / 8000 है, जिसमें [[ कार्यक्रम गणक ]] के शीर्ष तीन बिट्स | प्रोग्राम काउंटर (पीसी) रिंग रजिस्टर के रूप में कार्य करता है। इस प्रकार वर्चुअल पीसी सेट के साथ 0xE200000 पर कोड निष्पादित करना, उदाहरण के लिए, स्वचालित रूप से रिंग 7 में होगा, और मेमोरी के अलग सेक्शन में सबरूटीन को कॉल करने से स्वचालित रूप से रिंग ट्रांसफर हो जाएगा। | ||
हार्डवेयर उन तरीकों को गंभीर रूप से प्रतिबंधित करता है जिसमें नियंत्रण एक रिंग से दूसरे में पारित किया जा सकता है, और उन मेमोरी एक्सेस के प्रकारों पर भी प्रतिबंध लगाता है जो रिंगों में किए जा सकते हैं। उदाहरण के रूप में x86 का उपयोग करना, विशेष है{{clarify|date=November 2015}} गेट संरचना जिसे कॉल निर्देश द्वारा संदर्भित किया जाता है जो नियंत्रण को सुरक्षित तरीके से स्थानांतरित करता है{{clarify|date=November 2015}} निचले-स्तर (अधिक विश्वसनीय) रिंगों में पूर्वनिर्धारित प्रवेश बिंदुओं की ओर; यह रिंग आर्किटेक्चर का उपयोग करने वाले कई ऑपरेटिंग सिस्टम में [[पर्यवेक्षक कॉल]] के रूप में कार्य करता है। हार्डवेयर प्रतिबंध सुरक्षा के आकस्मिक या दुर्भावनापूर्ण उल्लंघनों के अवसरों को सीमित करने के लिए डिज़ाइन किए गए हैं। इसके अलावा, सबसे विशेषाधिकार प्राप्त रिंग को विशेष क्षमताएं दी जा सकती हैं, (जैसे वास्तविक मेमोरी एड्रेसिंग जो वर्चुअल मेमोरी हार्डवेयर को बायपास करती है)। | हार्डवेयर उन तरीकों को गंभीर रूप से प्रतिबंधित करता है जिसमें नियंत्रण एक रिंग से दूसरे में पारित किया जा सकता है, और उन मेमोरी एक्सेस के प्रकारों पर भी प्रतिबंध लगाता है जो रिंगों में किए जा सकते हैं। उदाहरण के रूप में x86 का उपयोग करना, विशेष है{{clarify|date=November 2015}} गेट संरचना जिसे कॉल निर्देश द्वारा संदर्भित किया जाता है जो नियंत्रण को सुरक्षित तरीके से स्थानांतरित करता है{{clarify|date=November 2015}} निचले-स्तर (अधिक विश्वसनीय) रिंगों में पूर्वनिर्धारित प्रवेश बिंदुओं की ओर; यह रिंग आर्किटेक्चर का उपयोग करने वाले कई ऑपरेटिंग सिस्टम में [[पर्यवेक्षक कॉल]] के रूप में कार्य करता है। हार्डवेयर प्रतिबंध सुरक्षा के आकस्मिक या दुर्भावनापूर्ण उल्लंघनों के अवसरों को सीमित करने के लिए डिज़ाइन किए गए हैं। इसके अलावा, सबसे विशेषाधिकार प्राप्त रिंग को विशेष क्षमताएं दी जा सकती हैं, (जैसे वास्तविक मेमोरी एड्रेसिंग जो वर्चुअल मेमोरी हार्डवेयर को बायपास करती है)। | ||
| Line 36: | Line 36: | ||
पीसी की दुनिया से कुछ उदाहरण: | पीसी की दुनिया से कुछ उदाहरण: | ||
* [[लिनक्स कर्नेल]], मैकोज़ और [[ माइक्रोसॉफ़्ट विंडोज़ ]]़ तीन ऑपरेटिंग सिस्टम हैं जो पर्यवेक्षक/उपयोगकर्ता मोड का उपयोग करते हैं। विशिष्ट कार्यों को करने के लिए, उपयोगकर्ता मोड कोड को पर्यवेक्षक मोड में या यहां तक कि कर्नेल स्थान पर [[सिस्टम कॉल]] करना चाहिए जहां ऑपरेटिंग सिस्टम का विश्वसनीय कोड आवश्यक कार्य करेगा और निष्पादन को उपयोगकर्ता स्थान पर वापस लौटाएगा। [[लोड करने योग्य कर्नेल मॉड्यूल]] के उपयोग के माध्यम से अतिरिक्त कोड को कर्नेल स्थान में जोड़ा जा सकता है, | * [[लिनक्स कर्नेल]], मैकोज़ और [[ माइक्रोसॉफ़्ट विंडोज़ ]]़ तीन ऑपरेटिंग सिस्टम हैं जो पर्यवेक्षक/उपयोगकर्ता मोड का उपयोग करते हैं। विशिष्ट कार्यों को करने के लिए, उपयोगकर्ता मोड कोड को पर्यवेक्षक मोड में या यहां तक कि कर्नेल स्थान पर [[सिस्टम कॉल]] करना चाहिए जहां ऑपरेटिंग सिस्टम का विश्वसनीय कोड आवश्यक कार्य करेगा और निष्पादन को उपयोगकर्ता स्थान पर वापस लौटाएगा। [[लोड करने योग्य कर्नेल मॉड्यूल]] के उपयोग के माध्यम से अतिरिक्त कोड को कर्नेल स्थान में जोड़ा जा सकता है, किन्तु केवल आवश्यक अनुमति वाले उपयोगकर्ता द्वारा, क्योंकि यह कोड उपयोगकर्ता मोड के अभिगम नियंत्रण और सुरक्षा सीमाओं के अधीन नहीं है। | ||
* DOS (जब तक कोई 386 मेमोरी मैनेजर जैसे EMM386 लोड नहीं होता है), साथ ही साथ अन्य सरल ऑपरेटिंग सिस्टम और कई एम्बेडेड डिवाइस सुपरवाइज़र मोड में स्थायी रूप से चलते हैं, जिसका अर्थ है कि ड्राइवरों को सीधे उपयोगकर्ता प्रोग्राम के रूप में लिखा जा सकता है। | * DOS (जब तक कोई 386 मेमोरी मैनेजर जैसे EMM386 लोड नहीं होता है), साथ ही साथ अन्य सरल ऑपरेटिंग सिस्टम और कई एम्बेडेड डिवाइस सुपरवाइज़र मोड में स्थायी रूप से चलते हैं, जिसका अर्थ है कि ड्राइवरों को सीधे उपयोगकर्ता प्रोग्राम के रूप में लिखा जा सकता है। | ||
अधिकांश प्रोसेसर में कम से कम दो अलग-अलग मोड होते हैं। X86-प्रोसेसर के चार अलग-अलग मोड हैं जो चार अलग-अलग रिंगों में विभाजित हैं। रिंग 0 में चलने वाले प्रोग्राम सिस्टम के साथ कुछ भी कर सकते हैं, और रिंग 3 में चलने वाले कोड को किसी भी समय बाकी कंप्यूटर सिस्टम को प्रभावित किए बिना विफल होने में सक्षम होना चाहिए। रिंग 1 और रिंग 2 का शायद ही कभी उपयोग किया जाता है, | अधिकांश प्रोसेसर में कम से कम दो अलग-अलग मोड होते हैं। X86-प्रोसेसर के चार अलग-अलग मोड हैं जो चार अलग-अलग रिंगों में विभाजित हैं। रिंग 0 में चलने वाले प्रोग्राम सिस्टम के साथ कुछ भी कर सकते हैं, और रिंग 3 में चलने वाले कोड को किसी भी समय बाकी कंप्यूटर सिस्टम को प्रभावित किए बिना विफल होने में सक्षम होना चाहिए। रिंग 1 और रिंग 2 का शायद ही कभी उपयोग किया जाता है, किन्तु इसे एक्सेस के विभिन्न स्तरों के साथ कॉन्फ़िगर किया जा सकता है। | ||
अधिकांश मौजूदा प्रणालियों में, उपयोगकर्ता मोड से कर्नेल मोड में स्विच करने से प्रदर्शन में उच्च लागत आती है। इसे बुनियादी अनुरोध पर मापा गया है <code>[[Process identifier|getpid]]</code>, अधिकांश मशीनों पर 1000-1500 चक्र खर्च करने के लिए। इनमें से लगभग 100 वास्तविक स्विच के लिए हैं (70 उपयोगकर्ता से कर्नेल स्थान तक, और 40 पीछे), शेष कर्नेल ओवरहेड है।<ref name="Liedtke95">{{cite conference |author=Jochen Liedtke |author-link=Jochen Liedtke |url=https://os.itec.kit.edu/65_1029.php |title=On µ-Kernel Construction |book-title=Proc. 15th ACM Symposium on Operating System Principles (SOSP) |date=December 1995}}</ref><ref name="Ousterhout90">{{cite conference |last=Ousterhout |first=J. K. |author-link=John Ousterhout |date=1990 |title=Why aren't operating systems getting faster as fast as hardware? |conference=Usenix Summer Conference A|location=naheim, CA |pages=247–256}}</ref> [[लोल मसरूरनल]] में, इस ओवरहेड को कम करने से कुल लागत लगभग 150 चक्र तक कम हो गई।<ref name="Liedtke95"/> | अधिकांश मौजूदा प्रणालियों में, उपयोगकर्ता मोड से कर्नेल मोड में स्विच करने से प्रदर्शन में उच्च लागत आती है। इसे बुनियादी अनुरोध पर मापा गया है <code>[[Process identifier|getpid]]</code>, अधिकांश मशीनों पर 1000-1500 चक्र खर्च करने के लिए। इनमें से लगभग 100 वास्तविक स्विच के लिए हैं (70 उपयोगकर्ता से कर्नेल स्थान तक, और 40 पीछे), शेष कर्नेल ओवरहेड है।<ref name="Liedtke95">{{cite conference |author=Jochen Liedtke |author-link=Jochen Liedtke |url=https://os.itec.kit.edu/65_1029.php |title=On µ-Kernel Construction |book-title=Proc. 15th ACM Symposium on Operating System Principles (SOSP) |date=December 1995}}</ref><ref name="Ousterhout90">{{cite conference |last=Ousterhout |first=J. K. |author-link=John Ousterhout |date=1990 |title=Why aren't operating systems getting faster as fast as hardware? |conference=Usenix Summer Conference A|location=naheim, CA |pages=247–256}}</ref> [[लोल मसरूरनल]] में, इस ओवरहेड को कम करने से कुल लागत लगभग 150 चक्र तक कम हो गई।<ref name="Liedtke95"/> | ||
[[मौरिस विल्क्स]] ने लिखा:<ref>{{cite journal|author=Maurice Wilkes|author-link=Maurice Wilkes|doi=10.1145/198153.198154|title=बदलती दुनिया में ऑपरेटिंग सिस्टम|journal=ACM SIGOPS Operating Systems Review|volume=28|issue=2|date=April 1994|pages=9–21|s2cid=254134|issn=0163-5980|doi-access=free}}</ref> <blockquote>... अंततः यह स्पष्ट हो गया कि रिंग प्रदान करने वाली पदानुक्रमित सुरक्षा सिस्टम प्रोग्रामर की आवश्यकताओं से निकटता से मेल नहीं खाती थी और केवल दो मोड होने की सरल प्रणाली पर बहुत कम या कोई सुधार नहीं देती थी। रिंग्स ऑफ प्रोटेक्शन ने हार्डवेयर में कुशल कार्यान्वयन के लिए खुद को उधार दिया, | [[मौरिस विल्क्स]] ने लिखा:<ref>{{cite journal|author=Maurice Wilkes|author-link=Maurice Wilkes|doi=10.1145/198153.198154|title=बदलती दुनिया में ऑपरेटिंग सिस्टम|journal=ACM SIGOPS Operating Systems Review|volume=28|issue=2|date=April 1994|pages=9–21|s2cid=254134|issn=0163-5980|doi-access=free}}</ref> <blockquote>... अंततः यह स्पष्ट हो गया कि रिंग प्रदान करने वाली पदानुक्रमित सुरक्षा सिस्टम प्रोग्रामर की आवश्यकताओं से निकटता से मेल नहीं खाती थी और केवल दो मोड होने की सरल प्रणाली पर बहुत कम या कोई सुधार नहीं देती थी। रिंग्स ऑफ प्रोटेक्शन ने हार्डवेयर में कुशल कार्यान्वयन के लिए खुद को उधार दिया, किन्तु उनके लिए कहने के लिए कुछ और नहीं था। [...] ठीक-ठाक सुरक्षा का आकर्षण तब भी बना रहा, जब यह देखा गया कि सुरक्षा के छल्ले ने जवाब नहीं दिया ... यह फिर से अंधी गली साबित हुई... </blockquote> | ||
प्रदर्शन और नियतत्ववाद हासिल करने के लिए, कुछ प्रणालियां ऐसे कार्य करती हैं जिन्हें कर्नेल मोड में डिवाइस ड्राइवर के बजाय एप्लिकेशन लॉजिक के रूप में देखा जा सकता है; सुरक्षा अनुप्रयोग ([[ अभिगम नियंत्रण ]], [[फ़ायरवॉल (कंप्यूटिंग)]], आदि) और ऑपरेटिंग सिस्टम मॉनिटर को उदाहरण के रूप में उद्धृत किया गया है। कम से कम एक एम्बेडेड डेटाबेस प्रबंधन प्रणाली, EXtremeDB#कर्नेल मोड परिनियोजन, विशेष रूप से कर्नेल मोड परिनियोजन के लिए विकसित किया गया है, कर्नेल-आधारित एप्लिकेशन फ़ंक्शंस के लिए स्थानीय डेटाबेस प्रदान करने के लिए, और [[संदर्भ स्विच]] को समाप्त करने के लिए जो अन्यथा तब होता जब कर्नेल फ़ंक्शंस इंटरैक्ट करते हैं उपयोगकर्ता मोड में चल रहा डेटाबेस सिस्टम।<ref>{{cite magazine |last1=Gorine |first1=Andrei |last2=Krivolapov |first2=Alexander |url=http://www.ddj.com/database/207401567 |title=Kernel Mode Databases: A DBMS Technology For High-Performance Applications |magazine=Dr. Dobb's Journal |date=May 2008}}</ref> | प्रदर्शन और नियतत्ववाद हासिल करने के लिए, कुछ प्रणालियां ऐसे कार्य करती हैं जिन्हें कर्नेल मोड में डिवाइस ड्राइवर के बजाय एप्लिकेशन लॉजिक के रूप में देखा जा सकता है; सुरक्षा अनुप्रयोग ([[ अभिगम नियंत्रण ]], [[फ़ायरवॉल (कंप्यूटिंग)]], आदि) और ऑपरेटिंग सिस्टम मॉनिटर को उदाहरण के रूप में उद्धृत किया गया है। कम से कम एक एम्बेडेड डेटाबेस प्रबंधन प्रणाली, EXtremeDB#कर्नेल मोड परिनियोजन, विशेष रूप से कर्नेल मोड परिनियोजन के लिए विकसित किया गया है, कर्नेल-आधारित एप्लिकेशन फ़ंक्शंस के लिए स्थानीय डेटाबेस प्रदान करने के लिए, और [[संदर्भ स्विच]] को समाप्त करने के लिए जो अन्यथा तब होता जब कर्नेल फ़ंक्शंस इंटरैक्ट करते हैं उपयोगकर्ता मोड में चल रहा डेटाबेस सिस्टम।<ref>{{cite magazine |last1=Gorine |first1=Andrei |last2=Krivolapov |first2=Alexander |url=http://www.ddj.com/database/207401567 |title=Kernel Mode Databases: A DBMS Technology For High-Performance Applications |magazine=Dr. Dobb's Journal |date=May 2008}}</ref> | ||
| Line 77: | Line 77: | ||
== हार्डवेयर सुविधाओं का उपयोग == | == हार्डवेयर सुविधाओं का उपयोग == | ||
कई सीपीयू हार्डवेयर आर्किटेक्चर उन ऑपरेटिंग सिस्टमों की तुलना में कहीं अधिक लचीलापन प्रदान करते हैं जो वे सामान्य रूप से चलाते हैं। जटिल सीपीयू मोड के उचित उपयोग के लिए ऑपरेटिंग सिस्टम और सीपीयू के मध्य बहुत करीबी सहयोग की आवश्यकता होती है, और इस प्रकार यह ओएस को सीपीयू आर्किटेक्चर से जोड़ता है। जब OS और CPU को विशेष रूप से एक दूसरे के लिए डिज़ाइन किया जाता है, तो यह कोई समस्या नहीं है (हालाँकि कुछ हार्डवेयर सुविधाएँ अभी भी अप्रयुक्त रह सकती हैं), | कई सीपीयू हार्डवेयर आर्किटेक्चर उन ऑपरेटिंग सिस्टमों की तुलना में कहीं अधिक लचीलापन प्रदान करते हैं जो वे सामान्य रूप से चलाते हैं। जटिल सीपीयू मोड के उचित उपयोग के लिए ऑपरेटिंग सिस्टम और सीपीयू के मध्य बहुत करीबी सहयोग की आवश्यकता होती है, और इस प्रकार यह ओएस को सीपीयू आर्किटेक्चर से जोड़ता है। जब OS और CPU को विशेष रूप से एक दूसरे के लिए डिज़ाइन किया जाता है, तो यह कोई समस्या नहीं है (हालाँकि कुछ हार्डवेयर सुविधाएँ अभी भी अप्रयुक्त रह सकती हैं), किन्तु जब OS को कई, विभिन्न [[एमआईपीएस आर्किटेक्चर]] के साथ संगत होने के लिए डिज़ाइन किया गया है, तो इसका बड़ा हिस्सा CPU मोड सुविधाओं को OS द्वारा अनदेखा किया जा सकता है। उदाहरण के लिए, Windows केवल दो स्तरों (रिंग 0 और रिंग 3) का उपयोग करने का कारण यह है कि कुछ हार्डवेयर आर्किटेक्चर जो अतीत में समर्थित थे (जैसे कि [[PowerPC]] या MIPS आर्किटेक्चर) ने केवल दो विशेषाधिकार स्तर लागू किए।<ref name="russinovich">{{cite book|last=Russinovich|first=Mark E.|author2=David A. Solomon|title=माइक्रोसॉफ्ट विंडोज आंतरिक|publisher=Microsoft Press|year=2005|edition=4|pages=[https://archive.org/details/isbn_9780735619173/page/16 16]|isbn=978-0-7356-1917-3|url-access=registration|url=https://archive.org/details/isbn_9780735619173/page/16}}</ref> | ||
मल्टिक्स ऑपरेटिंग सिस्टम था जिसे विशेष रूप से विशेष सीपीयू आर्किटेक्चर के लिए डिजाइन किया गया था (जो बदले में मल्टिक्स के लिए विशेष रूप से डिजाइन किया गया था), और इसने इसके लिए उपलब्ध सीपीयू मोड का पूरा फायदा उठाया। हालाँकि, यह नियम का अपवाद था। आज, सुरक्षा और स्थिरता के संभावित लाभों के बावजूद, OS और हार्डवेयर के मध्य यह उच्च स्तर का इंटरऑपरेशन अक्सर लागत प्रभावी नहीं होता है। | मल्टिक्स ऑपरेटिंग सिस्टम था जिसे विशेष रूप से विशेष सीपीयू आर्किटेक्चर के लिए डिजाइन किया गया था (जो बदले में मल्टिक्स के लिए विशेष रूप से डिजाइन किया गया था), और इसने इसके लिए उपलब्ध सीपीयू मोड का पूरा फायदा उठाया। हालाँकि, यह नियम का अपवाद था। आज, सुरक्षा और स्थिरता के संभावित लाभों के बावजूद, OS और हार्डवेयर के मध्य यह उच्च स्तर का इंटरऑपरेशन अक्सर लागत प्रभावी नहीं होता है। | ||
अंततः, सीपीयू के लिए अलग-अलग ऑपरेटिंग मोड का उद्देश्य सॉफ्टवेयर द्वारा सिस्टम पर्यावरण (और सिस्टम सुरक्षा के इसी उल्लंघन) के आकस्मिक या जानबूझकर भ्रष्टाचार के खिलाफ हार्डवेयर सुरक्षा प्रदान करना है। सिस्टम सॉफ़्टवेयर के केवल विश्वसनीय भागों को कर्नेल मोड के अप्रतिबंधित वातावरण में निष्पादित करने की अनुमति दी जाती है, और फिर, प्रतिमान डिजाइन में, केवल जब आवश्यक हो। अन्य सभी सॉफ़्टवेयर एक या अधिक उपयोगकर्ता मोड में निष्पादित होते हैं। यदि कोई प्रोसेसर उपयोगकर्ता मोड में गलती या अपवाद की स्थिति उत्पन्न करता है, तो ज्यादातर मामलों में सिस्टम स्थिरता अप्रभावित रहती है; यदि कोई प्रोसेसर कर्नेल मोड में दोष या अपवाद की स्थिति उत्पन्न करता है, तो अधिकांश ऑपरेटिंग सिस्टम सिस्टम को अपरिवर्तनीय त्रुटि के साथ रोक देंगे। जब मोड का पदानुक्रम मौजूद होता है (रिंग-आधारित सुरक्षा), विशेषाधिकार स्तर पर दोष और अपवाद केवल उच्च संख्या वाले विशेषाधिकार स्तरों को अस्थिर कर सकते हैं। इस प्रकार, रिंग 0 (उच्चतम विशेषाधिकार वाला कर्नेल मोड) में गलती पूरे सिस्टम को क्रैश कर देगी, | अंततः, सीपीयू के लिए अलग-अलग ऑपरेटिंग मोड का उद्देश्य सॉफ्टवेयर द्वारा सिस्टम पर्यावरण (और सिस्टम सुरक्षा के इसी उल्लंघन) के आकस्मिक या जानबूझकर भ्रष्टाचार के खिलाफ हार्डवेयर सुरक्षा प्रदान करना है। सिस्टम सॉफ़्टवेयर के केवल विश्वसनीय भागों को कर्नेल मोड के अप्रतिबंधित वातावरण में निष्पादित करने की अनुमति दी जाती है, और फिर, प्रतिमान डिजाइन में, केवल जब आवश्यक हो। अन्य सभी सॉफ़्टवेयर एक या अधिक उपयोगकर्ता मोड में निष्पादित होते हैं। यदि कोई प्रोसेसर उपयोगकर्ता मोड में गलती या अपवाद की स्थिति उत्पन्न करता है, तो ज्यादातर मामलों में सिस्टम स्थिरता अप्रभावित रहती है; यदि कोई प्रोसेसर कर्नेल मोड में दोष या अपवाद की स्थिति उत्पन्न करता है, तो अधिकांश ऑपरेटिंग सिस्टम सिस्टम को अपरिवर्तनीय त्रुटि के साथ रोक देंगे। जब मोड का पदानुक्रम मौजूद होता है (रिंग-आधारित सुरक्षा), विशेषाधिकार स्तर पर दोष और अपवाद केवल उच्च संख्या वाले विशेषाधिकार स्तरों को अस्थिर कर सकते हैं। इस प्रकार, रिंग 0 (उच्चतम विशेषाधिकार वाला कर्नेल मोड) में गलती पूरे सिस्टम को क्रैश कर देगी, किन्तु रिंग 2 में गलती केवल रिंग 3 और उससे आगे और रिंग 2 को ही प्रभावित करेगी। | ||
मोड के मध्य संक्रमण निष्पादन थ्रेड (कंप्यूटिंग) के विवेक पर होता है जब संक्रमण उच्च विशेषाधिकार के स्तर से कम विशेषाधिकार (कर्नेल से उपयोगकर्ता मोड तक) में होता है, | मोड के मध्य संक्रमण निष्पादन थ्रेड (कंप्यूटिंग) के विवेक पर होता है जब संक्रमण उच्च विशेषाधिकार के स्तर से कम विशेषाधिकार (कर्नेल से उपयोगकर्ता मोड तक) में होता है, किन्तु निम्न से उच्च स्तर के विशेषाधिकार में संक्रमण हो सकता है केवल सुरक्षित, हार्डवेयर-नियंत्रित फाटकों के माध्यम से जो विशेष निर्देशों को निष्पादित करके या बाहरी व्यवधान प्राप्त होने पर पार किए जाते हैं। | ||
माइक्रोकर्नेल ऑपरेटिंग सिस्टम कंप्यूटर सुरक्षा और [[लालित्य]] के प्रयोजनों के लिए विशेषाधिकार प्राप्त मोड में चल रहे कोड की मात्रा को कम करने का प्रयास करते हैं, | माइक्रोकर्नेल ऑपरेटिंग सिस्टम कंप्यूटर सुरक्षा और [[लालित्य]] के प्रयोजनों के लिए विशेषाधिकार प्राप्त मोड में चल रहे कोड की मात्रा को कम करने का प्रयास करते हैं, किन्तु अंततः प्रदर्शन का त्याग करते हैं। | ||
== यह भी देखें == | == यह भी देखें == | ||
Revision as of 11:47, 28 April 2023
कंप्यूटर विज्ञान में, श्रेणीबद्ध सुरक्षा डोमेन,[1][2] जिन्हें प्रायः सुरक्षा रिंग कहा जाता है, डेटा और कार्यक्षमता को दोषों (फॉल्ट टॉलरेंस में संशोधन करके) और विद्वेषी (कंप्यूटर सुरक्षा प्रदान करके) से सुरक्षित रखने के लिए क्रियाविधि है।
कंप्यूटर ऑपरेटिंग सिस्टम संसाधनों तक पहुंच के विभिन्न स्तर प्रदान करते हैं। कंप्यूटर प्रणाली के आर्किटेक्चर के भीतर दो या दो से अधिक पदानुक्रमित स्तरों या विशेषाधिकार (कंप्यूटिंग) की परतों में सुरक्षा रिंग है। यह सामान्यतः कुछ सेंट्रल प्रोसेसिंग यूनिट कंप्यूटर आर्किटेक्चर द्वारा हार्डवेयर-प्रवर्तित होता है जो हार्डवेयर या माइक्रोकोड लेयर पर विभिन्न सीपीयू मोड प्रदान करता है। रिंगों को पदानुक्रम में अधिक विशेषाधिकार प्राप्त (सबसे विश्वसनीय, सामान्यतः शून्य संख्या) से कम विशेषाधिकार प्राप्त (कम से कम विश्वसनीय, सामान्यतः उच्चतम रिंग संख्या के साथ) करने के लिए व्यवस्थित किया जाता है। रिंग 0 अधिक विशेषाधिकार का स्तर है और भौतिक हार्डवेयर जैसे कुछ सीपीयू कार्यक्षमता और मदरबोर्ड पर चिप्स के साथ संपर्क की अनुमति प्रदान करता है।
स्वेच्छाचारी उपयोग के विपरीत, पूर्वनिर्धारित विधि से बाह्य रिंग को आंतरिक रिंग के संसाधनों पर एक्सेस की अनुमति देने के लिए रिंगों के मध्य विशेष कॉल गेट प्रदान किए जाते हैं। रिंगों के मध्य उचित गेटिंग एक्सेस रिंग या विशेषाधिकार स्तर के प्रोग्राम को दूसरे रिंग में प्रोग्राम के लिए अभिप्रेत संसाधनों के दुरुपयोग को अवरोधित करके सुरक्षा में संशोधन किया जा सकता है। उदाहरण के लिए, रिंग 3 में उपयोगकर्ता प्रोग्राम के रूप में चल रहे स्पाइवेयर को उपयोगकर्ता को सूचित किए बिना वेब कैमरे के उपयोग से अवरोधित करना चाहिए, क्योंकि हार्डवेयर एक्सेस डिवाइस ड्राइवर के लिए आरक्षित रिंग 1 फ़ंक्शन होना चाहिए। उच्च क्रमांकित रिंगों में चलने वाले वेब ब्राउज़र जैसे प्रोग्रामों को कम संख्या वाले रिंगों तक सीमित संसाधन को नेटवर्क एक्सेस अनुरोध करना चाहिए।
कार्यान्वयन
मॉलटिक्स ऑपरेटिंग सिस्टम द्वारा प्रारम्भ की गई क्रांतिकारी अवधारणाओं में विभिन्न सुरक्षा रिंग थे, जो वर्तमान में यूनिक्स ऑपरेटिंग सिस्टम के सदस्य के सुरक्षित पूर्ववर्ती हैं। GE 645 मेनफ्रेम कंप्यूटर में कुछ हार्डवेयर अभिगम नियंत्रण था, किन्तु यह हार्डवेयर में रिंगों के लिए पूर्ण समर्थन प्रदान करने के लिए पर्याप्त नहीं था, इसलिए मल्टिक्स ने सॉफ्टवेयर में रिंग ट्रांज़िशन को फंसाकर उनका समर्थन किया;[3] इसके उत्तराधिकारी, हनीवेल 6180 ने उन्हें आठ रिंगों के समर्थन के साथ हार्डवेयर में लागू किया।[4] हालाँकि, अधिकांश सामान्य-प्रयोजन प्रणालियाँ केवल दो रिंगों का उपयोग करती हैं, भले ही वे जिस हार्डवेयर पर चलते हैं वह उससे अधिक CPU मोड प्रदान करता हो। उदाहरण के लिए, विंडोज 7 और विंडोज सर्वर 2008 (और उनके पूर्ववर्ती) केवल दो रिंगों का उपयोग करते हैं, जिसमें रिंग 0 #SUPERVISOR-MODE के अनुरूप है और रिंग 3 उपयोक्ता स्थान के लिए है,[5]क्योंकि Windows के पुराने संस्करण ऐसे प्रोसेसर पर चलते थे जो केवल दो सुरक्षा स्तरों का समर्थन करते थे।[6] कई आधुनिक सीपीयू आर्किटेक्चर (लोकप्रिय इंटेल x86 आर्किटेक्चर सहित) में कुछ प्रकार की रिंग सुरक्षा शामिल है, हालांकि यूनिक्स की तरह विंडोज एनटी ऑपरेटिंग सिस्टम इस सुविधा का पूरी तरह से उपयोग नहीं करता है। OS/2 कुछ हद तक तीन रिंगों का उपयोग करता है:[7] कर्नेल कोड और डिवाइस ड्राइवरों के लिए 0 रिंग करें, विशेषाधिकार प्राप्त कोड के लिए 2 रिंग करें (I/O एक्सेस अनुमतियों के साथ उपयोगकर्ता प्रोग्राम), और अनपेक्षित कोड (लगभग सभी उपयोगकर्ता प्रोग्राम) के लिए रिंग 3। DOS के तहत, कर्नेल, ड्राइवर और एप्लिकेशन सामान्यतः रिंग 3 पर चलते हैं (हालांकि, यह उस मामले के लिए विशिष्ट है जहां संरक्षित-मोड ड्राइवर और/या DOS एक्सटेंडर का उपयोग किया जाता है; वास्तविक-मोड OS के रूप में, सिस्टम प्रभावी रूप से बिना किसी सुरक्षा के चलता है। ), जबकि 386 मेमोरी मैनेजर जैसे EMM386 रिंग 0 पर चलते हैं। इसके अलावा, DR-DOS' EMM386 3.xx वैकल्पिक रूप से रिंग 1 पर कुछ मॉड्यूल (जैसे डॉस संरक्षित मोड सेवाएं) चला सकते हैं। ओपन VMS कर्नेल, कार्यकारी, पर्यवेक्षक और उपयोगकर्ता नामक चार मोड का उपयोग करता है (घटते विशेषाधिकारों के क्रम में)।
इस डिज़ाइन संरचना में नए सिरे से रुचि एक्सईएन सूत्र सॉफ़्टवेयर के प्रसार के साथ आई, अखंड कर्नेल बनाम माइक्रोकर्नेल | माइक्रो-कर्नेल (विशेष रूप से यूज़नेट न्यूज़ग्रुप और इंटरनेट मंच में), माइक्रोसॉफ्ट की रिंग -1 डिज़ाइन संरचना के हिस्से के रूप में टेनेनबाम-टोरवाल्ड्स बहस उनकी