सुरक्षा रिंग: Difference between revisions
No edit summary |
No edit summary |
||
| Line 13: | Line 13: | ||
विभिन्न आधुनिक सीपीयू आर्किटेक्चर (लोकप्रिय [[इंटेल]] 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 पर कार्य करते हैं (चूँकि, यह उस स्तिथि के लिए विशिष्ट है जहां संरक्षित-मोड ड्राइवर या डॉस एक्सटेंडर का वास्तविक-मोड OS के रूप में उपयोग किया जाता है, जिससे सिस्टम प्रभावी रूप से बिना किसी सुरक्षा के कार्य करता है।), जबकि 386 मेमोरी मैनेजर जैसे [[EMM386|ईएमएम 386]] रिंग 0 पर कार्य करते हैं। इसके अतिरिक्त, [[DR-DOS|डीआर-डॉस]] ईएमएम 386 3.xx वैकल्पिक रूप से रिंग 1 पर कुछ मॉड्यूल (जैसे [[डॉस संरक्षित मोड सेवाएं]]) संचालित कर सकते हैं। [[ ओपन VMS | ओपन 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 पर कार्य करते हैं (चूँकि, यह उस स्तिथि के लिए विशिष्ट है जहां संरक्षित-मोड ड्राइवर या डॉस एक्सटेंडर का वास्तविक-मोड OS के रूप में उपयोग किया जाता है, जिससे सिस्टम प्रभावी रूप से बिना किसी सुरक्षा के कार्य करता है।), जबकि 386 मेमोरी मैनेजर जैसे [[EMM386|ईएमएम 386]] रिंग 0 पर कार्य करते हैं। इसके अतिरिक्त, [[DR-DOS|डीआर-डॉस]] ईएमएम 386 3.xx वैकल्पिक रूप से रिंग 1 पर कुछ मॉड्यूल (जैसे [[डॉस संरक्षित मोड सेवाएं]]) संचालित कर सकते हैं। [[ ओपन VMS | ओपन VMS]] कर्नेल, कार्यकारी, पर्यवेक्षक और उपयोगकर्ता नामक चार मोड का उपयोग करता है (अवरोही विशेषाधिकारों के क्रम में)। | ||
इस | इस संरचना में [[ एक्सईएन |एक्सईएन]] [[सूत्र|वीएमएम]] सॉफ्टवेयर के प्रसार, [[ अखंड कर्नेल |मोनोलिथिक]] बनाम [[माइक्रोकर्नेल]] (विशेष रूप से [[यूज़नेट]] न्यूज़ग्रुप और [[इंटरनेट मंच]] में) पर विचार-विमर्श, माइक्रोसॉफ्ट [[की]] रिंग -1 डिजाइन संरचना के रूप में उनके [[नेक्स्ट-जेनरेशन सिक्योर कंप्यूटिंग बेस]] पहल के अंश के रूप में, और [[इंटेल वीटी-एक्स]] जैसे [[x86 वर्चुअलाइजेशन]] पर आधारित हाइपरवाइजर के साथ पुनः रुचि उत्पन्न हुई थी। | ||
मूल मल्टिक्स प्रणाली में आठ | मूल मल्टिक्स प्रणाली में आठ रिंग थे, किन्तु विभिन्न आधुनिक प्रणालियों में कम रिंग होते हैं। हार्डवेयर विशेष मशीन रजिस्टर की सहायता से निष्पादन निर्देश [[थ्रेड (कंप्यूटिंग)]] की वर्तमान रिंग से सदैव अवगत रहता है। कुछ प्रणालियों में, [[ आभासी मेमोरी ]] के क्षेत्रों को इसके अतिरिक्त हार्डवेयर में रिंग संख्याएँ प्रदान की जाती हैं। उदाहरण डेटा जनरल एक्लिप्स एमवी / 8000 है, जिसमें [[ कार्यक्रम गणक |प्रोग्राम काउंटर]] (पीसी) के शीर्ष तीन बिट्स रिंग रजिस्टर के रूप में कार्य करते हैं। इस प्रकार वर्चुअल पीसी सेट के साथ 0xE200000 पर कोड निष्पादित करना, उदाहरण के लिए, स्वचालित रूप से रिंग 7 में होगा, और मेमोरी के अलग सेक्शन में सबरूटीन को कॉल करने से स्वचालित रूप से रिंग ट्रांसफर हो जाएगा। | ||
हार्डवेयर उन तरीकों को गंभीर रूप से प्रतिबंधित करता है जिसमें नियंत्रण एक रिंग से दूसरे में पारित किया जा सकता है, और उन मेमोरी एक्सेस के प्रकारों पर भी प्रतिबंध लगाता है जो रिंगों में किए जा सकते हैं। उदाहरण के रूप में x86 का उपयोग करना, विशेष है{{clarify|date=November 2015}} गेट संरचना जिसे कॉल निर्देश द्वारा संदर्भित किया जाता है जो नियंत्रण को सुरक्षित तरीके से स्थानांतरित करता है{{clarify|date=November 2015}} निचले-स्तर (अधिक विश्वसनीय) रिंगों में पूर्वनिर्धारित प्रवेश बिंदुओं की ओर; यह रिंग आर्किटेक्चर का उपयोग करने वाले कई ऑपरेटिंग सिस्टम में [[पर्यवेक्षक कॉल]] के रूप में कार्य करता है। हार्डवेयर प्रतिबंध सुरक्षा के आकस्मिक या दुर्भावनापूर्ण उल्लंघनों के अवसरों को सीमित करने के लिए डिज़ाइन किए गए हैं। इसके अलावा, सबसे विशेषाधिकार प्राप्त रिंग को विशेष क्षमताएं दी जा सकती हैं, (जैसे वास्तविक मेमोरी एड्रेसिंग जो वर्चुअल मेमोरी हार्डवेयर को बायपास करती है)। | हार्डवेयर उन तरीकों को गंभीर रूप से प्रतिबंधित करता है जिसमें नियंत्रण एक रिंग से दूसरे में पारित किया जा सकता है, और उन मेमोरी एक्सेस के प्रकारों पर भी प्रतिबंध लगाता है जो रिंगों में किए जा सकते हैं। उदाहरण के रूप में x86 का उपयोग करना, विशेष है{{clarify|date=November 2015}} गेट संरचना जिसे कॉल निर्देश द्वारा संदर्भित किया जाता है जो नियंत्रण को सुरक्षित तरीके से स्थानांतरित करता है{{clarify|date=November 2015}} निचले-स्तर (अधिक विश्वसनीय) रिंगों में पूर्वनिर्धारित प्रवेश बिंदुओं की ओर; यह रिंग आर्किटेक्चर का उपयोग करने वाले कई ऑपरेटिंग सिस्टम में [[पर्यवेक्षक कॉल]] के रूप में कार्य करता है। हार्डवेयर प्रतिबंध सुरक्षा के आकस्मिक या दुर्भावनापूर्ण उल्लंघनों के अवसरों को सीमित करने के लिए डिज़ाइन किए गए हैं। इसके अलावा, सबसे विशेषाधिकार प्राप्त रिंग को विशेष क्षमताएं दी जा सकती हैं, (जैसे वास्तविक मेमोरी एड्रेसिंग जो वर्चुअल मेमोरी हार्डवेयर को बायपास करती है)। | ||
Revision as of 13:25, 28 April 2023
कंप्यूटर विज्ञान में, श्रेणीबद्ध सुरक्षा डोमेन,[1][2] जिन्हें प्रायः सुरक्षा रिंग कहा जाता है, डेटा और कार्यक्षमता को दोषों (फॉल्ट टॉलरेंस में संशोधन करके) और विद्वेषी (कंप्यूटर सुरक्षा प्रदान करके) से सुरक्षित रखने के लिए क्रियाविधि है।
कंप्यूटर ऑपरेटिंग सिस्टम संसाधनों तक पहुंच के विभिन्न स्तर प्रदान करते हैं। कंप्यूटर प्रणाली के आर्किटेक्चर के भीतर दो या दो से अधिक पदानुक्रमित स्तरों या विशेषाधिकार (कंप्यूटिंग) की परतों में सुरक्षा रिंग है। यह सामान्यतः कुछ सेंट्रल प्रोसेसिंग यूनिट कंप्यूटर आर्किटेक्चर द्वारा हार्डवेयर-प्रवर्तित होता है जो हार्डवेयर या माइक्रोकोड लेयर पर विभिन्न सीपीयू मोड प्रदान करता है। रिंगों को पदानुक्रम में अधिक विशेषाधिकार प्राप्त (सबसे विश्वसनीय, सामान्यतः शून्य संख्या) से कम विशेषाधिकार प्राप्त (कम से कम विश्वसनीय, सामान्यतः उच्चतम रिंग संख्या के साथ) करने के लिए व्यवस्थित किया जाता है। रिंग 0 अधिक विशेषाधिकार का स्तर है और भौतिक हार्डवेयर जैसे कुछ सीपीयू कार्यक्षमता और मदरबोर्ड पर चिप्स के साथ संपर्क की अनुमति प्रदान करता है।
स्वेच्छाचारी उपयोग के विपरीत, पूर्वनिर्धारित विधि से बाह्य रिंग को आंतरिक रिंग के संसाधनों पर एक्सेस की अनुमति देने के लिए रिंगों के मध्य विशेष कॉल गेट प्रदान किए जाते हैं। रिंगों के मध्य उचित गेटिंग एक्सेस रिंग या विशेषाधिकार स्तर के प्रोग्राम को दूसरे रिंग में प्रोग्राम के लिए अभिप्रेत संसाधनों के दुरुपयोग को अवरोधित करके सुरक्षा में संशोधन किया जा सकता है। उदाहरण के लिए, रिंग 3 में उपयोगकर्ता प्रोग्राम के रूप में चल रहे स्पाइवेयर को उपयोगकर्ता को सूचित किए बिना वेब कैमरे के उपयोग से अवरोधित करना चाहिए, क्योंकि हार्डवेयर एक्सेस डिवाइस ड्राइवर के लिए आरक्षित रिंग 1 फ़ंक्शन होना चाहिए। उच्च क्रमांकित रिंगों में चलने वाले वेब ब्राउज़र जैसे प्रोग्रामों को कम संख्या वाले रिंगों तक सीमित संसाधन को नेटवर्क एक्सेस अनुरोध करना चाहिए।
कार्यान्वयन
मॉलटिक्स ऑपरेटिंग सिस्टम द्वारा प्रारम्भ की गई क्रांतिकारी अवधारणाओं में विभिन्न सुरक्षा रिंग थे, जो वर्तमान में यूनिक्स ऑपरेटिंग सिस्टम के सदस्य के सुरक्षित पूर्ववर्ती हैं। जीई 645 मेनफ्रेम कंप्यूटर में हार्डवेयर एक्सेस कण्ट्रोल था, किन्तु यह हार्डवेयर में रिंगों के लिए पूर्ण समर्थन प्रदान करने के लिए पर्याप्त नहीं था, इसलिए मल्टिक्स ने सॉफ्टवेयर में रिंग ट्रांज़िशन को पाशबद कर उनका समर्थन किया।[3] इसके उत्तराधिकारी, हनीवेल 6180 ने उन्हें आठ रिंगों के समर्थन के साथ हार्डवेयर में प्रस्तावित किया।[4] चूँकि, अधिकांश सामान्य-प्रयोजन प्रणालियाँ मात्र दो रिंगों का उपयोग करती हैं, भले ही वे जिस हार्डवेयर पर कार्य करते हैं वह उससे अधिक सीपीयू मोड प्रदान करता हो। उदाहरण के लिए, विंडोज 7 और विंडोज सर्वर 2008 (और उनके पूर्ववर्ती) मात्र दो रिंगों का उपयोग करते हैं, जिसमें रिंग 0 कर्नेल मोड और रिंग 3 उपयोगकर्ता मोड के अनुरूप है,[5]क्योंकि विंडोज के प्राचीन संस्करण ऐसे प्रोसेसर पर कार्य करते थे जो मात्र दो सुरक्षा स्तरों का समर्थन करते थे।[6]
विभिन्न आधुनिक सीपीयू आर्किटेक्चर (लोकप्रिय इंटेल x86 आर्किटेक्चर सहित) में विभिन्न प्रकार की रिंग सुरक्षा सम्मिलित है, चूँकि यूनिक्स की भाँति विंडोज एनटी ऑपरेटिंग सिस्टम इस सुविधा का पूर्ण रूप से उपयोग नहीं करता है। OS/2 तीन रिंगों का उपयोग करता है-[7] कर्नेल कोड और डिवाइस ड्राइवरों के लिए 0 रिंग, विशेषाधिकार प्राप्त कोड के लिए 2 रिंग (I/O एक्सेस अनुमतियों के साथ उपयोगकर्ता प्रोग्राम) और अनपेक्षित कोड (प्रायः सभी उपयोगकर्ता प्रोग्राम) के लिए रिंग 3 का उपयोग करता है। DOS के अंतर्गत, कर्नेल, ड्राइवर और एप्लिकेशन सामान्यतः रिंग 3 पर कार्य करते हैं (चूँकि, यह उस स्तिथि के लिए विशिष्ट है जहां संरक्षित-मोड ड्राइवर या डॉस एक्सटेंडर का वास्तविक-मोड OS के रूप में उपयोग किया जाता है, जिससे सिस्टम प्रभावी रूप से बिना किसी सुरक्षा के कार्य करता है।), जबकि 386 मेमोरी मैनेजर जैसे ईएमएम 386 रिंग 0 पर कार्य करते हैं। इसके अतिरिक्त, डीआर-डॉस ईएमएम 386 3.xx वैकल्पिक रूप से रिंग 1 पर कुछ मॉड्यूल (जैसे डॉस संरक्षित मोड सेवाएं) संचालित कर सकते हैं। ओपन VMS कर्नेल, कार्यकारी, पर्यवेक्षक और उपयोगकर्ता नामक चार मोड का उपयोग करता है (अवरोही विशेषाधिकारों के क्रम में)।
इस संरचना में एक्सईएन वीएमएम सॉफ्टवेयर के प्रसार, मोनोलिथिक बनाम माइक्रोकर्नेल (विशेष रूप से यूज़नेट न्यूज़ग्रुप और इंटरनेट मंच में) पर विचार-विमर्श, माइक्रोसॉफ्ट की रिंग -1 डिजाइन संरचना के रूप में उनके नेक्स्ट-जेनरेशन सिक्योर कंप्यूटिंग बेस पहल के अंश के रूप में, और इंटेल वीटी-एक्स जैसे x86 वर्चुअलाइजेशन पर आधारित हाइपरवाइजर के साथ पुनः रुचि उत्पन्न हुई थी।
मूल मल्टिक्स प्रणाली में आठ रिंग थे, किन्तु विभिन्न आधुनिक प्रणालियों में कम रिंग होते हैं। हार्डवेयर विशेष मशीन रजिस्टर की सहायता से निष्पादन निर्देश थ्रेड (कंप्यूटिंग) की वर्तमान रिंग से सदैव अवगत रहता है। कुछ प्रणालियों में, आभासी मेमोरी के क्षेत्रों को इसके अतिरिक्त हार्डवेयर में रिंग संख्याएँ प्रदान की जाती हैं। उदाहरण डेटा जनरल एक्लिप्स एमवी / 8000 है, जिसमें प्रोग्राम काउंटर (पीसी) के शीर्ष तीन बिट्स रिंग रजिस्टर के रूप में कार्य करते हैं। इस प्रकार वर्चुअल पीसी सेट के साथ 0xE200000 पर कोड निष्पादित करना, उदाहरण के लिए, स्वचालित रूप से रिंग 7 में होगा, और मेमोरी के अलग सेक्शन में सबरूटीन को कॉल करने से स्वचालित रूप से रिंग ट्रांसफर हो जाएगा।
हार्डवेयर उन तरीकों को गंभीर रूप से प्रतिबंधित करता है जिसमें नियंत्रण एक रिंग से दूसरे में पारित किया जा सकता है, और उन मेमोरी एक्सेस के प्रकारों पर भी प्रतिबंध लगाता है जो रिंगों में किए जा सकते हैं। उदाहरण के रूप में x86 का उपयोग करना, विशेष है[clarification needed] गेट संरचना जिसे कॉल निर्देश द्वारा संदर्भित किया जाता है जो नियंत्रण को सुरक्षित तरीके से स्थानांतरित करता है[clarification needed] निचले-स्तर (अधिक विश्वसनीय) रिंगों में पूर्वनिर्धारित प्रवेश बिंदुओं की ओर; यह रिंग आर्किटेक्चर का उपयोग करने वाले कई ऑपरेटिंग सिस्टम में पर्यवेक्षक कॉल के रूप में कार्य करता है। हार्डवेयर प्रतिबंध सुरक्षा के आकस्मिक या दुर्भावनापूर्ण उल्लंघनों के अवसरों को सीमित करने के लिए डिज़ाइन किए गए हैं। इसके अलावा, सबसे विशेषाधिकार प्राप्त रिंग को विशेष क्षमताएं दी जा सकती हैं, (जैसे वास्तविक मेमोरी एड्रेसिंग जो वर्चुअल मेमोरी हार्डवेयर को बायपास करती है)।
एआरएम वास्तुकला संस्करण 7 आर्किटेक्चर तीन विशेषाधिकार स्तरों को लागू करता है: एप्लिकेशन (PL0), ऑपरेटिंग सिस्टम (PL1), और हाइपरविजर (PL2)। असामान्य रूप से, स्तर 0 (PL0) सबसे कम विशेषाधिकार प्राप्त स्तर है, जबकि स्तर 2 सबसे विशेषाधिकार प्राप्त स्तर है।[8] AArch64 के लिए एआरएम संस्करण 8 चार अपवाद स्तरों को लागू करता है: एप्लिकेशन (ईएल0), ऑपरेटिंग सिस्टम (ईएल1), हाइपरविजर (ईएल2), और सुरक्षित मॉनिटर/फर्मवेयर (ईएल3)।[9]: D1-2454 और AArch32.[9]: G1-6013
कुछ प्रणालियों में रिंग सुरक्षा को प्रोसेसर मोड (मास्टर/कर्नेल/विशेषाधिकार/#सुपरवाइज़र-मोड बनाम दास/अनविशेष/उपयोगकर्ता मोड) के साथ जोड़ा जा सकता है। दोनों का समर्थन करने वाले हार्डवेयर पर चलने वाले ऑपरेटिंग सिस्टम सुरक्षा के दोनों रूपों या केवल एक का उपयोग कर सकते हैं।
रिंग आर्किटेक्चर के प्रभावी उपयोग के लिए हार्डवेयर और ऑपरेटिंग सिस्टम के मध्य घनिष्ठ सहयोग की आवश्यकता होती है[why?]. कई हार्डवेयर प्लेटफॉर्म पर काम करने के लिए डिज़ाइन किए गए ऑपरेटिंग सिस्टम रिंग्स का केवल सीमित उपयोग कर सकते हैं यदि वे हर समर्थित प्लेटफॉर्म पर मौजूद नहीं हैं। अक्सर सुरक्षा मॉडल को कर्नेल और उपयोगकर्ता के लिए सरलीकृत किया जाता है, भले ही हार्डवेयर रिंगों के माध्यम से बेहतर ग्रैन्युलैरिटी प्रदान करता हो।
मोड
पर्यवेक्षक मोड
कंप्यूटर शब्दों में, पर्यवेक्षक मोड हार्डवेयर-मध्यस्थ ध्वज है जिसे सिस्टम-स्तरीय सॉफ़्टवेयर में चल रहे कोड द्वारा बदला जा सकता है। सिस्टम-लेवल टास्क या थ्रेड्स हो सकते हैं[lower-alpha 1] के चलने के दौरान यह ध्वज सेट होता है, जबकि उपयोगकर्ता-स्तर के अनुप्रयोग नहीं होंगे। यह ध्वज निर्धारित करता है कि मशीन कोड संचालन को निष्पादित करना संभव होगा जैसे विभिन्न डिस्क्रिप्टर टेबल के लिए रजिस्टरों को संशोधित करना, या इंटरप्ट्स को अक्षम करने जैसे संचालन करना। अधिक शक्ति के साथ काम करने के लिए दो अलग-अलग मोड होने का विचार अधिक जिम्मेदारी से आता है – पर्यवेक्षक मोड में प्रोग्राम कभी विफल नहीं होने पर भरोसा किया जाता है, क्योंकि विफलता के कारण संपूर्ण कंप्यूटर सिस्टम क्रैश हो सकता है।
पर्यवेक्षक मोड कुछ प्रोसेसरों पर निष्पादन मोड है जो विशेषाधिकार प्राप्त निर्देशों सहित सभी निर्देशों के निष्पादन को सक्षम बनाता है। यह स्मृति प्रबंधन हार्डवेयर और अन्य बाह्य उपकरणों के लिए अलग पता स्थान तक पहुंच प्रदान कर सकता है। यह वह मोड है जिसमें ऑपरेटिंग सिस्टम सामान्यतः चलता है।[10]
अखंड कर्नेल (ऑपरेटिंग सिस्टम) में, ऑपरेटिंग सिस्टम पर्यवेक्षक मोड में चलता है और एप्लिकेशन उपयोगकर्ता मोड में चलता है। अन्य प्रकार कर्नेल (ऑपरेटिंग सिस्टम), जैसे exokernel या माइक्रोकर्नेल वाले, आवश्यक रूप से इस व्यवहार को साझा नहीं करते हैं।
पीसी की दुनिया से कुछ उदाहरण:
- लिनक्स कर्नेल, मैकोज़ और माइक्रोसॉफ़्ट विंडोज़ ़ तीन ऑपरेटिंग सिस्टम हैं जो पर्यवेक्षक/उपयोगकर्ता मोड का उपयोग करते हैं। विशिष्ट कार्यों को करने के लिए, उपयोगकर्ता मोड कोड को पर्यवेक्षक मोड में या यहां तक कि कर्नेल स्थान पर सिस्टम कॉल करना चाहिए जहां ऑपरेटिंग सिस्टम का विश्वसनीय कोड आवश्यक कार्य करेगा और निष्पादन को उपयोगकर्ता स्थान पर वापस लौटाएगा। लोड करने योग्य कर्नेल मॉड्यूल के उपयोग के माध्यम से अतिरिक्त कोड को कर्नेल स्थान में जोड़ा जा सकता है, किन्तु केवल आवश्यक अनुमति वाले उपयोगकर्ता द्वारा, क्योंकि यह कोड उपयोगकर्ता मोड के अभिगम नियंत्रण और सुरक्षा सीमाओं के अधीन नहीं है।
- DOS (जब तक कोई 386 मेमोरी मैनेजर जैसे EMM386 लोड नहीं होता है), साथ ही साथ अन्य सरल ऑपरेटिंग सिस्टम और कई एम्बेडेड डिवाइस सुपरवाइज़र मोड में स्थायी रूप से चलते हैं, जिसका अर्थ है कि ड्राइवरों को सीधे उपयोगकर्ता प्रोग्राम के रूप में लिखा जा सकता है।
अधिकांश प्रोसेसर में कम से कम दो अलग-अलग मोड होते हैं। X86-प्रोसेसर के चार अलग-अलग मोड हैं जो चार अलग-अलग रिंगों में विभाजित हैं। रिंग 0 में चलने वाले प्रोग्राम सिस्टम के साथ कुछ भी कर सकते हैं, और रिंग 3 में चलने वाले कोड को किसी भी समय बाकी कंप्यूटर सिस्टम को प्रभावित किए बिना विफल होने में सक्षम होना चाहिए। रिंग 1 और रिंग 2 का शायद ही कभी उपयोग किया जाता है, किन्तु इसे एक्सेस के विभिन्न स्तरों के साथ कॉन्फ़िगर किया जा सकता है।
अधिकांश मौजूदा प्रणालियों में, उपयोगकर्ता मोड से कर्नेल मोड में स्विच करने से प्रदर्शन में उच्च लागत आती है। इसे बुनियादी अनुरोध पर मापा गया है getpid, अधिकांश मशीनों पर 1000-1500 चक्र खर्च करने के लिए। इनमें से लगभग 100 वास्तविक स्विच के लिए हैं (70 उपयोगकर्ता से कर्नेल स्थान तक, और 40 पीछे), शेष कर्नेल ओवरहेड है।[11][12] लोल मसरूरनल में, इस ओवरहेड को कम करने से कुल लागत लगभग 150 चक्र तक कम हो गई।[11]
मौरिस विल्क्स ने लिखा:[13]
... अंततः यह स्पष्ट हो गया कि रिंग प्रदान करने वाली पदानुक्रमित सुरक्षा सिस्टम प्रोग्रामर की आवश्यकताओं से निकटता से मेल नहीं खाती थी और केवल दो मोड होने की सरल प्रणाली पर बहुत कम या कोई सुधार नहीं देती थी। रिंग्स ऑफ प्रोटेक्शन ने हार्डवेयर में कुशल कार्यान्वयन के लिए खुद को उधार दिया, किन्तु उनके लिए कहने के लिए कुछ और नहीं था। [...] ठीक-ठाक सुरक्षा का आकर्षण तब भी बना रहा, जब यह देखा गया कि सुरक्षा के छल्ले ने जवाब नहीं दिया ... यह फिर से अंधी गली साबित हुई...
प्रदर्शन और नियतत्ववाद हासिल करने के लिए, कुछ प्रणालियां ऐसे कार्य करती हैं जिन्हें कर्नेल मोड में डिवाइस ड्राइवर के बजाय एप्लिकेशन लॉजिक के रूप में देखा जा सकता है; सुरक्षा अनुप्रयोग (अभिगम नियंत्रण , फ़ायरवॉल (कंप्यूटिंग), आदि) और ऑपरेटिंग सिस्टम मॉनिटर को उदाहरण के रूप में उद्धृत किया गया है। कम से कम एक एम्बेडेड डेटाबेस प्रबंधन प्रणाली, EXtremeDB#कर्नेल मोड परिनियोजन, विशेष रूप से कर्नेल मोड परिनियोजन के लिए विकसित किया गया है, कर्नेल-आधारित एप्लिकेशन फ़ंक्शंस के लिए स्थानीय डेटाबेस प्रदान करने के लिए, और संदर्भ स्विच को समाप्त करने के लिए जो अन्यथा तब होता जब कर्नेल फ़ंक्शंस इंटरैक्ट करते हैं उपयोगकर्ता मोड में चल रहा डेटाबेस सिस्टम।[14]
फंक्शंस को कभी-कभी दूसरी दिशा में रिंगों में भी ले जाया जाता है। उदाहरण के लिए, लिनक्स कर्नेल, vDSO अनुभाग को प्रक्रियाओं में इंजेक्ट करता है जिसमें ऐसे कार्य होते हैं जिन्हें सामान्य रूप से सिस्टम कॉल की आवश्यकता होती है, अर्थात रिंग ट्रांज़िशन। सिस्कल करने के बजाय ये कार्य कर्नेल द्वारा प्रदान किए गए स्थिर डेटा का उपयोग करते हैं। यह रिंग ट्रांज़िशन की आवश्यकता से बचा जाता है और इसलिए यह सिस्कल की तुलना में अधिक हल्का है। समारोह gettimeofday इस तरह प्रदान किया जा सकता है।
हाइपरवाइजर मोड
इंटेल और एएमडी के हालिया सीपीयू रिंग 0 हार्डवेयर एक्सेस को नियंत्रित करने के लिए हाइपरविजर के लिए x86 वर्चुअलाइजेशन निर्देश प्रदान करते हैं। चूँकि वे पारस्परिक रूप से असंगत हैं, Intel VT-x (कोडनेम वेंडरपूल) और X86 वर्चुअलाइजेशन#AMD वर्चुअलाइजेशन (AMD-V)|AMD-V (कोडनेम Pacifica) दोनों नया रिंग बनाते हैं -1 ताकि अतिथि ऑपरेटिंग सिस्टम रिंग 0 चला सके संचालन मूल रूप से अन्य मेहमानों या मेजबान ओएस को प्रभावित किए बिना। <ब्लॉककोट> वर्चुअलाइजेशन की सहायता के लिए, वीटी-एक्स और सुरक्षित वर्चुअल मशीन रिंग 0 के नीचे नया विशेषाधिकार स्तर डालते हैं। दोनों नौ नए मशीन कोड निर्देश जोड़ते हैं जो केवल रिंग −1 पर काम करते हैं, जिसका उद्देश्य हाइपरविजर द्वारा उपयोग किया जाना है।[15] </ब्लॉककोट>
विशेषाधिकार स्तर
X86 निर्देश सेट में विशेषाधिकार स्तर प्रोसेसर पर वर्तमान में चल रहे प्रोग्राम की पहुंच को स्मृति क्षेत्रों, I/O बंदरगाहों और विशेष निर्देशों जैसे संसाधनों तक नियंत्रित करता है। 0 से लेकर 4 विशेषाधिकार स्तर हैं जो सबसे अधिक विशेषाधिकार प्राप्त हैं, 3 जो सबसे कम विशेषाधिकार प्राप्त हैं। अधिकांश आधुनिक ऑपरेटिंग सिस्टम कर्नेल/कार्यकारी के लिए स्तर 0 का उपयोग करते हैं, और एप्लिकेशन प्रोग्राम के लिए स्तर 3 का उपयोग करते हैं। स्तर n के लिए उपलब्ध कोई भी संसाधन 0 से n स्तरों के लिए भी उपलब्ध है, इसलिए विशेषाधिकार स्तर रिंग हैं। जब कम विशेषाधिकार प्राप्त प्रक्रिया उच्च विशेषाधिकार प्राप्त प्रक्रिया तक पहुँचने की कोशिश करती है, तो OS को सामान्य सुरक्षा दोष अपवाद की सूचना दी जाती है।
सभी चार विशेषाधिकार स्तरों का उपयोग करना आवश्यक नहीं है। Microsoft Windows, macOS, Linux, iOS और Android (ऑपरेटिंग सिस्टम) सहित व्यापक बाजार हिस्सेदारी के साथ वर्तमान ऑपरेटिंग सिस्टम ज्यादातर पर्यवेक्षक या उपयोगकर्ता (U/S बिट) के रूप में विशेषाधिकार स्तर निर्दिष्ट करने के लिए केवल एक बिट के साथ पेजिंग तंत्र का उपयोग करते हैं। Windows NT दो-स्तरीय सिस्टम का उपयोग करता है।[16] 8086 में वास्तविक मोड प्रोग्राम 0 स्तर (उच्चतम विशेषाधिकार स्तर) पर निष्पादित होते हैं जबकि 8086 में वर्चुअल मोड 3 स्तर पर सभी प्रोग्राम निष्पादित करता है।[17] x86 ISA परिवार द्वारा समर्थित एकाधिक विशेषाधिकार स्तरों के संभावित भावी उपयोगों में कंटेनर (आभासी बनाएं ़ेशन) और आभासी मशीन शामिल हैं। होस्ट ऑपरेटिंग सिस्टम कर्नेल पूर्ण विशेषाधिकार एक्सेस (कर्नेल मोड) के साथ निर्देशों का उपयोग कर सकता है, जबकि वर्चुअल मशीन या कंटेनर में अतिथि OS पर चलने वाले एप्लिकेशन उपयोगकर्ता मोड में निम्नतम स्तर के विशेषाधिकारों का उपयोग कर सकते हैं। वर्चुअल मशीन और अतिथि OS कर्नेल स्वयं अतिथि ऑपरेटिंग सिस्टम के दृष्टिकोण से सिस्टम कॉल जैसे कर्नेल-मोड संचालन को लागू करने और वर्चुअलाइज़ करने के लिए मध्यवर्ती स्तर के निर्देश विशेषाधिकार का उपयोग कर सकते हैं।[18]
आईओपीएल
IOPL (I/O विशेषाधिकार स्तर) ध्वज सभी IA-32 संगत x86 आर्किटेक्चर पर पाया जाने वाला ध्वज है। यह FLAGS रजिस्टर में बिट्स 12 और 13 पर है। संरक्षित मोड और लंबे मोड में, यह वर्तमान प्रोग्राम या कार्य के I/O विशेषाधिकार स्तर को दर्शाता है। कार्य या कार्यक्रम का वर्तमान विशेषाधिकार स्तर (CPL) (CPL0, CPL1, CPL2, CPL3) I/O बंदरगाहों तक पहुँचने के लिए कार्य या कार्यक्रम के क्रम में IOPL से कम या बराबर होना चाहिए।
आईओपीएल का उपयोग करके बदला जा सकता है POPF(D) और IRET(D) केवल जब वर्तमान विशेषाधिकार स्तर रिंग 0 हो।
IOPL के अलावा, टास्क स्टेट सेगमेंट#I.2FO पोर्ट अनुमतियाँ | TSS में I/O पोर्ट अनुमतियाँ भी I/O पोर्ट तक पहुँचने के लिए किसी कार्य की क्षमता निर्धारित करने में भाग लेती हैं।
विविध
x86 सिस्टम में, x86 हार्डवेयर वर्चुअलाइजेशन (वीटी-एक्स और सिक्योर वर्चुअल मशीन) को रिंग -1 कहा जाता है, सिस्टम प्रबंधन मोड को रिंग -2 कहा जाता है, इंटेल प्रबंधन इंजन और एएमडी प्लेटफार्म सुरक्षा प्रोसेसर को कभी-कभी रिंग कहा जाता है − 3।[19]
हार्डवेयर सुविधाओं का उपयोग
कई सीपीयू हार्डवेयर आर्किटेक्चर उन ऑपरेटिंग सिस्टमों की तुलना में कहीं अधिक लचीलापन प्रदान करते हैं जो वे सामान्य रूप से चलाते हैं। जटिल सीपीयू मोड के उचित उपयोग के लिए ऑपरेटिंग सिस्टम और सीपीयू के मध्य बहुत करीबी सहयोग की आवश्यकता होती है, और इस प्रकार यह ओएस को सीपीयू आर्किटेक्चर से जोड़ता है। जब OS और सीपीयू को विशेष रूप से एक दूसरे के लिए डिज़ाइन किया जाता है, तो यह कोई समस्या नहीं है (चूँकि कुछ हार्डवेयर सुविधाएँ अभी भी अप्रयुक्त रह सकती हैं), किन्तु जब OS को कई, विभिन्न एमआईपीएस आर्किटेक्चर के साथ संगत होने के लिए डिज़ाइन किया गया है, तो इसका बड़ा हिस्सा सीपीयू मोड सुविधाओं को OS द्वारा अनदेखा किया जा सकता है। उदाहरण के लिए, Windows केवल दो स्तरों (रिंग 0 और रिंग 3) का उपयोग करने का कारण यह है कि कुछ हार्डवेयर आर्किटेक्चर जो अतीत में समर्थित थे (जैसे कि PowerPC या MIPS आर्किटेक्चर) ने केवल दो विशेषाधिकार स्तर लागू किए।[5]
मल्टिक्स ऑपरेटिंग सिस्टम था जिसे विशेष रूप से विशेष सीपीयू आर्किटेक्चर के लिए डिजाइन किया गया था (जो बदले में मल्टिक्स के लिए विशेष रूप से डिजाइन किया गया था), और इसने इसके लिए उपलब्ध सीपीयू मोड का पूरा फायदा उठाया। चूँकि, यह नियम का अपवाद था। आज, सुरक्षा और स्थिरता के संभावित लाभों के बावजूद, OS और हार्डवेयर के मध्य यह उच्च स्तर का इंटरऑपरेशन अक्सर लागत प्रभावी नहीं होता है।
अंततः, सीपीयू के लिए अलग-अलग ऑपरेटिंग मोड का उद्देश्य सॉफ्टवेयर द्वारा सिस्टम पर्यावरण (और सिस्टम सुरक्षा के इसी उल्लंघन) के आकस्मिक या जानबूझकर भ्रष्टाचार के खिलाफ हार्डवेयर सुरक्षा प्रदान करना है। सिस्टम सॉफ़्टवेयर के केवल विश्वसनीय भागों को कर्नेल मोड के अप्रतिबंधित वातावरण में निष्पादित करने की अनुमति दी जाती है, और फिर, प्रतिमान डिजाइन में, केवल जब आवश्यक हो। अन्य सभी सॉफ़्टवेयर एक या अधिक उपयोगकर्ता मोड में निष्पादित होते हैं। यदि कोई प्रोसेसर उपयोगकर्ता मोड में गलती या अपवाद की स्थिति उत्पन्न करता है, तो ज्यादातर मामलों में सिस्टम स्थिरता अप्रभावित रहती है; यदि कोई प्रोसेसर कर्नेल मोड में दोष या अपवाद की स्थिति उत्पन्न करता है, तो अधिकांश ऑपरेटिंग सिस्टम सिस्टम को अपरिवर्तनीय त्रुटि के साथ रोक देंगे। जब मोड का पदानुक्रम मौजूद होता है (रिंग-आधारित सुरक्षा), विशेषाधिकार स्तर पर दोष और अपवाद केवल उच्च संख्या वाले विशेषाधिकार स्तरों को अस्थिर कर सकते हैं। इस प्रकार, रिंग 0 (उच्चतम विशेषाधिकार वाला कर्नेल मोड) में गलती पूरे सिस्टम को क्रैश कर देगी, किन्तु रिंग 2 में गलती केवल रिंग 3 और उससे आगे और रिंग 2 को ही प्रभावित करेगी।
मोड के मध्य संक्रमण निष्पादन थ्रेड (कंप्यूटिंग) के विवेक पर होता है जब संक्रमण उच्च विशेषाधिकार के स्तर से कम विशेषाधिकार (कर्नेल से उपयोगकर्ता मोड तक) में होता है, किन्तु निम्न से उच्च स्तर के विशेषाधिकार में संक्रमण हो सकता है केवल सुरक्षित, हार्डवेयर-नियंत्रित फाटकों के माध्यम से जो विशेष निर्देशों को निष्पादित करके या बाहरी व्यवधान प्राप्त होने पर पार किए जाते हैं।
माइक्रोकर्नेल ऑपरेटिंग सिस्टम कंप्यूटर सुरक्षा और लालित्य के प्रयोजनों के लिए विशेषाधिकार प्राप्त मोड में चल रहे कोड की मात्रा को कम करने का प्रयास करते हैं, किन्तु अंततः प्रदर्शन का त्याग करते हैं।
यह भी देखें
- कॉल गेट (इंटेल)
- स्मृति विभाजन
- सुरक्षित प्रकार – x86-संगत 80286 सीपीयू और नए पर उपलब्ध है
- IOPL (CONFIG.SYS निर्देश) - रिंग 3 के बजाय रिंग 2 पर DLL कोड चलाने के लिए एक OS/2 निर्देश
- सेगमेंट डिस्क्रिप्टर
- पर्यवेक्षक कॉल निर्देश
- सिस्टम प्रबंधन मोड (एसएमएम)
- कम से कम विशेषाधिकार का सिद्धांत