सुरक्षा रिंग

कंप्यूटर विज्ञान में, श्रेणीबद्ध सुरक्षा डोमेन, अक्सर सुरक्षा रिंग कहा जाता है, डेटा और कार्यक्षमता को दोषों (दोष-सहिष्णु डिजाइन में सुधार करके) और दुर्भावनापूर्ण व्यवहार (कंप्यूटर सुरक्षा प्रदान करके) से बचाने के लिए तंत्र हैं।

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

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

कार्यान्वयन
मॉलटिक्स ऑपरेटिंग सिस्टम द्वारा शुरू की गई सबसे क्रांतिकारी अवधारणाओं में सुरक्षा के कई छल्ले थे, जो ऑपरेटिंग सिस्टम के आज के यूनिक्स परिवार के एक अत्यधिक सुरक्षित पूर्ववर्ती हैं। GE 645 मेनफ्रेम कंप्यूटर में कुछ हार्डवेयर अभिगम नियंत्रण था, लेकिन यह हार्डवेयर में रिंगों के लिए पूर्ण समर्थन प्रदान करने के लिए पर्याप्त नहीं था, इसलिए मल्टिक्स ने सॉफ्टवेयर में रिंग ट्रांज़िशन को फंसाकर उनका समर्थन किया; इसके उत्तराधिकारी, हनीवेल 6180 ने उन्हें आठ रिंगों के समर्थन के साथ हार्डवेयर में लागू किया। हालाँकि, अधिकांश सामान्य-प्रयोजन प्रणालियाँ केवल दो रिंगों का उपयोग करती हैं, भले ही वे जिस हार्डवेयर पर चलते हैं वह उससे अधिक CPU मोड प्रदान करता हो। उदाहरण के लिए, विंडोज 7 और विंडोज सर्वर 2008 (और उनके पूर्ववर्ती) केवल दो रिंगों का उपयोग करते हैं, जिसमें रिंग 0 #SUPERVISOR-MODE के अनुरूप है और रिंग 3  उपयोक्ता स्थान  के लिए है, क्योंकि Windows के पुराने संस्करण ऐसे प्रोसेसर पर चलते थे जो केवल दो सुरक्षा स्तरों का समर्थन करते थे। कई आधुनिक सीपीयू आर्किटेक्चर (लोकप्रिय इंटेल x86 आर्किटेक्चर सहित) में कुछ प्रकार की रिंग सुरक्षा शामिल है, हालांकि यूनिक्स की तरह विंडोज एनटी ऑपरेटिंग सिस्टम इस सुविधा का पूरी तरह से उपयोग नहीं करता है। OS/2 कुछ हद तक तीन रिंगों का उपयोग करता है: कर्नेल कोड और डिवाइस ड्राइवरों के लिए 0 रिंग करें, विशेषाधिकार प्राप्त कोड के लिए 2 रिंग करें (I/O एक्सेस अनुमतियों के साथ उपयोगकर्ता प्रोग्राम), और अनपेक्षित कोड (लगभग सभी उपयोगकर्ता प्रोग्राम) के लिए रिंग 3। DOS के तहत, कर्नेल, ड्राइवर और एप्लिकेशन आमतौर पर रिंग 3 पर चलते हैं (हालांकि, यह उस मामले के लिए विशिष्ट है जहां संरक्षित-मोड ड्राइवर और/या DOS एक्सटेंडर का उपयोग किया जाता है; एक वास्तविक-मोड OS के रूप में, सिस्टम प्रभावी रूप से बिना किसी सुरक्षा के चलता है। ), जबकि 386 मेमोरी मैनेजर जैसे EMM386 रिंग 0 पर चलते हैं। इसके अलावा, DR-DOS' EMM386 3.xx वैकल्पिक रूप से रिंग 1 पर कुछ मॉड्यूल (जैसे डॉस संरक्षित मोड सेवाएं) चला सकते हैं। ओपन VMS  कर्नेल, कार्यकारी, पर्यवेक्षक और उपयोगकर्ता नामक चार मोड का उपयोग करता है (घटते विशेषाधिकारों के क्रम में)।

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

मूल मल्टिक्स प्रणाली में आठ छल्ले थे, लेकिन कई आधुनिक प्रणालियों में कम हैं। हार्डवेयर एक विशेष मशीन रजिस्टर की मदद से हर समय निष्पादन निर्देश थ्रेड (कंप्यूटिंग) की वर्तमान रिंग से अवगत रहता है। कुछ प्रणालियों में, आभासी मेमोरी  के क्षेत्रों को इसके बजाय हार्डवेयर में रिंग नंबर दिए जाते हैं। एक उदाहरण डेटा जनरल एक्लिप्स एमवी / 8000 है, जिसमें  कार्यक्रम गणक  के शीर्ष तीन बिट्स | प्रोग्राम काउंटर (पीसी) रिंग रजिस्टर के रूप में कार्य करता है। इस प्रकार वर्चुअल पीसी सेट के साथ 0xE200000 पर कोड निष्पादित करना, उदाहरण के लिए, स्वचालित रूप से रिंग 7 में होगा, और मेमोरी के एक अलग सेक्शन में सबरूटीन को कॉल करने से स्वचालित रूप से रिंग ट्रांसफर हो जाएगा।

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

एआरएम वास्तुकला संस्करण 7 आर्किटेक्चर तीन विशेषाधिकार स्तरों को लागू करता है: एप्लिकेशन (PL0), ऑपरेटिंग सिस्टम (PL1), और हाइपरविजर (PL2)। असामान्य रूप से, स्तर 0 (PL0) सबसे कम विशेषाधिकार प्राप्त स्तर है, जबकि स्तर 2 सबसे विशेषाधिकार प्राप्त स्तर है। AArch64 के लिए एआरएम संस्करण 8 चार अपवाद स्तरों को लागू करता है: एप्लिकेशन (ईएल0), ऑपरेटिंग सिस्टम (ईएल1), हाइपरविजर (ईएल2), और सुरक्षित मॉनिटर/फर्मवेयर (ईएल3)।  और AArch32.

कुछ प्रणालियों में रिंग सुरक्षा को प्रोसेसर मोड (मास्टर/कर्नेल/विशेषाधिकार/#सुपरवाइज़र-मोड बनाम दास/अनविशेष/उपयोगकर्ता मोड) के साथ जोड़ा जा सकता है। दोनों का समर्थन करने वाले हार्डवेयर पर चलने वाले ऑपरेटिंग सिस्टम सुरक्षा के दोनों रूपों या केवल एक का उपयोग कर सकते हैं।

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

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

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

पीसी की दुनिया से कुछ उदाहरण:


 * लिनक्स कर्नेल, मैकोज़ और माइक्रोसॉफ़्ट विंडोज़ ़ तीन ऑपरेटिंग सिस्टम हैं जो पर्यवेक्षक/उपयोगकर्ता मोड का उपयोग करते हैं। विशिष्ट कार्यों को करने के लिए, उपयोगकर्ता मोड कोड को पर्यवेक्षक मोड में या यहां तक ​​कि कर्नेल स्थान पर एक सिस्टम कॉल करना चाहिए जहां ऑपरेटिंग सिस्टम का विश्वसनीय कोड आवश्यक कार्य करेगा और निष्पादन को उपयोगकर्ता स्थान पर वापस लौटाएगा। लोड करने योग्य कर्नेल मॉड्यूल के उपयोग के माध्यम से अतिरिक्त कोड को कर्नेल स्थान में जोड़ा जा सकता है, लेकिन केवल आवश्यक अनुमति वाले उपयोगकर्ता द्वारा, क्योंकि यह कोड उपयोगकर्ता मोड के अभिगम नियंत्रण और सुरक्षा सीमाओं के अधीन नहीं है।
 * DOS (जब तक कोई 386 मेमोरी मैनेजर जैसे EMM386 लोड नहीं होता है), साथ ही साथ अन्य सरल ऑपरेटिंग सिस्टम और कई एम्बेडेड डिवाइस सुपरवाइज़र मोड में स्थायी रूप से चलते हैं, जिसका अर्थ है कि ड्राइवरों को सीधे उपयोगकर्ता प्रोग्राम के रूप में लिखा जा सकता है।

अधिकांश प्रोसेसर में कम से कम दो अलग-अलग मोड होते हैं। X86-प्रोसेसर के चार अलग-अलग मोड हैं जो चार अलग-अलग रिंगों में विभाजित हैं। रिंग 0 में चलने वाले प्रोग्राम सिस्टम के साथ कुछ भी कर सकते हैं, और रिंग 3 में चलने वाले कोड को किसी भी समय बाकी कंप्यूटर सिस्टम को प्रभावित किए बिना विफल होने में सक्षम होना चाहिए। रिंग 1 और रिंग 2 का शायद ही कभी उपयोग किया जाता है, लेकिन इसे एक्सेस के विभिन्न स्तरों के साथ कॉन्फ़िगर किया जा सकता है।

अधिकांश मौजूदा प्रणालियों में, उपयोगकर्ता मोड से कर्नेल मोड में स्विच करने से प्रदर्शन में उच्च लागत आती है। इसे बुनियादी अनुरोध पर मापा गया है, अधिकांश मशीनों पर 1000-1500 चक्र खर्च करने के लिए। इनमें से लगभग 100 वास्तविक स्विच के लिए हैं (70 उपयोगकर्ता से कर्नेल स्थान तक, और 40 पीछे), शेष कर्नेल ओवरहेड है।  लोल मसरूरनल में, इस ओवरहेड को कम करने से कुल लागत लगभग 150 चक्र तक कम हो गई।

मौरिस विल्क्स ने लिखा: "... अंततः यह स्पष्ट हो गया कि रिंग प्रदान करने वाली पदानुक्रमित सुरक्षा सिस्टम प्रोग्रामर की आवश्यकताओं से निकटता से मेल नहीं खाती थी और केवल दो मोड होने की सरल प्रणाली पर बहुत कम या कोई सुधार नहीं देती थी। रिंग्स ऑफ प्रोटेक्शन ने हार्डवेयर में कुशल कार्यान्वयन के लिए खुद को उधार दिया, लेकिन उनके लिए कहने के लिए कुछ और नहीं था। [...] ठीक-ठाक सुरक्षा का आकर्षण तब भी बना रहा, जब यह देखा गया कि सुरक्षा के छल्ले ने जवाब नहीं दिया ... यह फिर से एक अंधी गली साबित हुई..."

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

हाइपरवाइजर मोड
इंटेल और एएमडी के हालिया सीपीयू रिंग 0 हार्डवेयर एक्सेस को नियंत्रित करने के लिए हाइपरविजर के लिए x86 वर्चुअलाइजेशन निर्देश प्रदान करते हैं। हालांकि वे पारस्परिक रूप से असंगत हैं, Intel VT-x (कोडनेम वेंडरपूल) और X86 वर्चुअलाइजेशन#AMD वर्चुअलाइजेशन (AMD-V)|AMD-V (कोडनेम Pacifica) दोनों एक नया रिंग बनाते हैं -1 ताकि अतिथि ऑपरेटिंग सिस्टम रिंग 0 चला सके संचालन मूल रूप से अन्य मेहमानों या मेजबान ओएस को प्रभावित किए बिना।  वर्चुअलाइजेशन की सहायता के लिए, वीटी-एक्स और सुरक्षित वर्चुअल मशीन  रिंग 0 के नीचे एक नया विशेषाधिकार स्तर डालते हैं। दोनों नौ नए मशीन कोड निर्देश जोड़ते हैं जो केवल रिंग −1 पर काम करते हैं, जिसका उद्देश्य हाइपरविजर द्वारा उपयोग किया जाना है। 

विशेषाधिकार स्तर
X86 निर्देश सेट में एक विशेषाधिकार स्तर प्रोसेसर पर वर्तमान में चल रहे प्रोग्राम की पहुंच को स्मृति क्षेत्रों, I/O बंदरगाहों और विशेष निर्देशों जैसे संसाधनों तक नियंत्रित करता है। 0 से लेकर 4 विशेषाधिकार स्तर हैं जो सबसे अधिक विशेषाधिकार प्राप्त हैं, 3 जो सबसे कम विशेषाधिकार प्राप्त हैं। अधिकांश आधुनिक ऑपरेटिंग सिस्टम कर्नेल/कार्यकारी के लिए स्तर 0 का उपयोग करते हैं, और एप्लिकेशन प्रोग्राम के लिए स्तर 3 का उपयोग करते हैं। स्तर n के लिए उपलब्ध कोई भी संसाधन 0 से n स्तरों के लिए भी उपलब्ध है, इसलिए विशेषाधिकार स्तर रिंग हैं। जब एक कम विशेषाधिकार प्राप्त प्रक्रिया एक उच्च विशेषाधिकार प्राप्त प्रक्रिया तक पहुँचने की कोशिश करती है, तो OS को एक सामान्य सुरक्षा दोष अपवाद की सूचना दी जाती है।

सभी चार विशेषाधिकार स्तरों का उपयोग करना आवश्यक नहीं है। Microsoft Windows, macOS, Linux, iOS और Android (ऑपरेटिंग सिस्टम) सहित व्यापक बाजार हिस्सेदारी के साथ वर्तमान ऑपरेटिंग सिस्टम ज्यादातर पर्यवेक्षक या उपयोगकर्ता (U/S बिट) के रूप में विशेषाधिकार स्तर निर्दिष्ट करने के लिए केवल एक बिट के साथ एक पेजिंग तंत्र का उपयोग करते हैं। Windows NT दो-स्तरीय सिस्टम का उपयोग करता है। 8086 में वास्तविक मोड प्रोग्राम 0 स्तर (उच्चतम विशेषाधिकार स्तर) पर निष्पादित होते हैं जबकि 8086 में वर्चुअल मोड 3 स्तर पर सभी प्रोग्राम निष्पादित करता है। x86 ISA परिवार द्वारा समर्थित एकाधिक विशेषाधिकार स्तरों के संभावित भावी उपयोगों में कंटेनर ( आभासी बनाएं ़ेशन) और आभासी मशीन  शामिल हैं। एक होस्ट ऑपरेटिंग सिस्टम कर्नेल पूर्ण विशेषाधिकार एक्सेस (कर्नेल मोड) के साथ निर्देशों का उपयोग कर सकता है, जबकि वर्चुअल मशीन या कंटेनर में अतिथि OS पर चलने वाले एप्लिकेशन उपयोगकर्ता मोड में निम्नतम स्तर के विशेषाधिकारों का उपयोग कर सकते हैं। वर्चुअल मशीन और अतिथि OS कर्नेल स्वयं अतिथि ऑपरेटिंग सिस्टम के दृष्टिकोण से सिस्टम कॉल जैसे कर्नेल-मोड संचालन को लागू करने और वर्चुअलाइज़ करने के लिए एक मध्यवर्ती स्तर के निर्देश विशेषाधिकार का उपयोग कर सकते हैं।

आईओपीएल
IOPL (I/O विशेषाधिकार स्तर) ध्वज सभी IA-32 संगत x86 आर्किटेक्चर पर पाया जाने वाला ध्वज है। यह FLAGS रजिस्टर में बिट्स 12 और 13 पर है। संरक्षित मोड और लंबे मोड में, यह वर्तमान प्रोग्राम या कार्य के I/O विशेषाधिकार स्तर को दर्शाता है। कार्य या कार्यक्रम का वर्तमान विशेषाधिकार स्तर (CPL) (CPL0, CPL1, CPL2, CPL3) I/O बंदरगाहों तक पहुँचने के लिए कार्य या कार्यक्रम के क्रम में IOPL से कम या बराबर होना चाहिए।

आईओपीएल का उपयोग करके बदला जा सकता है  और   केवल जब वर्तमान विशेषाधिकार स्तर रिंग 0 हो।

IOPL के अलावा, टास्क स्टेट सेगमेंट#I.2FO पोर्ट अनुमतियाँ | TSS में I/O पोर्ट अनुमतियाँ भी I/O पोर्ट तक पहुँचने के लिए किसी कार्य की क्षमता निर्धारित करने में भाग लेती हैं।

विविध
x86 सिस्टम में, x86 हार्डवेयर वर्चुअलाइजेशन (वीटी-एक्स और सिक्योर वर्चुअल मशीन) को रिंग -1 कहा जाता है, सिस्टम प्रबंधन मोड को रिंग -2 कहा जाता है, इंटेल प्रबंधन इंजन और एएमडी प्लेटफार्म सुरक्षा प्रोसेसर को कभी-कभी रिंग कहा जाता है − 3।

हार्डवेयर सुविधाओं का उपयोग
कई सीपीयू हार्डवेयर आर्किटेक्चर उन ऑपरेटिंग सिस्टमों की तुलना में कहीं अधिक लचीलापन प्रदान करते हैं जो वे सामान्य रूप से चलाते हैं। जटिल सीपीयू मोड के उचित उपयोग के लिए ऑपरेटिंग सिस्टम और सीपीयू के बीच बहुत करीबी सहयोग की आवश्यकता होती है, और इस प्रकार यह ओएस को सीपीयू आर्किटेक्चर से जोड़ता है। जब OS और CPU को विशेष रूप से एक दूसरे के लिए डिज़ाइन किया जाता है, तो यह कोई समस्या नहीं है (हालाँकि कुछ हार्डवेयर सुविधाएँ अभी भी अप्रयुक्त रह सकती हैं), लेकिन जब OS को कई, विभिन्न एमआईपीएस आर्किटेक्चर के साथ संगत होने के लिए डिज़ाइन किया गया है, तो इसका एक बड़ा हिस्सा CPU मोड सुविधाओं को OS द्वारा अनदेखा किया जा सकता है। उदाहरण के लिए, Windows केवल दो स्तरों (रिंग 0 और रिंग 3) का उपयोग करने का कारण यह है कि कुछ हार्डवेयर आर्किटेक्चर जो अतीत में समर्थित थे (जैसे कि PowerPC या MIPS आर्किटेक्चर) ने केवल दो विशेषाधिकार स्तर लागू किए। मल्टिक्स एक ऑपरेटिंग सिस्टम था जिसे विशेष रूप से एक विशेष सीपीयू आर्किटेक्चर के लिए डिजाइन किया गया था (जो बदले में मल्टिक्स के लिए विशेष रूप से डिजाइन किया गया था), और इसने इसके लिए उपलब्ध सीपीयू मोड का पूरा फायदा उठाया। हालाँकि, यह नियम का अपवाद था। आज, सुरक्षा और स्थिरता के संभावित लाभों के बावजूद, OS और हार्डवेयर के बीच यह उच्च स्तर का इंटरऑपरेशन अक्सर लागत प्रभावी नहीं होता है।

अंततः, सीपीयू के लिए अलग-अलग ऑपरेटिंग मोड का उद्देश्य सॉफ्टवेयर द्वारा सिस्टम पर्यावरण (और सिस्टम सुरक्षा के इसी उल्लंघन) के आकस्मिक या जानबूझकर भ्रष्टाचार के खिलाफ हार्डवेयर सुरक्षा प्रदान करना है। सिस्टम सॉफ़्टवेयर के केवल विश्वसनीय भागों को कर्नेल मोड के अप्रतिबंधित वातावरण में निष्पादित करने की अनुमति दी जाती है, और फिर, प्रतिमान डिजाइन में, केवल जब आवश्यक हो। अन्य सभी सॉफ़्टवेयर एक या अधिक उपयोगकर्ता मोड में निष्पादित होते हैं। यदि कोई प्रोसेसर उपयोगकर्ता मोड में गलती या अपवाद की स्थिति उत्पन्न करता है, तो ज्यादातर मामलों में सिस्टम स्थिरता अप्रभावित रहती है; यदि कोई प्रोसेसर कर्नेल मोड में दोष या अपवाद की स्थिति उत्पन्न करता है, तो अधिकांश ऑपरेटिंग सिस्टम सिस्टम को एक अपरिवर्तनीय त्रुटि के साथ रोक देंगे। जब मोड का एक पदानुक्रम मौजूद होता है (रिंग-आधारित सुरक्षा), एक विशेषाधिकार स्तर पर दोष और अपवाद केवल उच्च संख्या वाले विशेषाधिकार स्तरों को अस्थिर कर सकते हैं। इस प्रकार, रिंग 0 (उच्चतम विशेषाधिकार वाला कर्नेल मोड) में एक गलती पूरे सिस्टम को क्रैश कर देगी, लेकिन रिंग 2 में एक गलती केवल रिंग 3 और उससे आगे और रिंग 2 को ही प्रभावित करेगी।

मोड के बीच संक्रमण निष्पादन थ्रेड (कंप्यूटिंग) के विवेक पर होता है जब संक्रमण उच्च विशेषाधिकार के स्तर से कम विशेषाधिकार (कर्नेल से उपयोगकर्ता मोड तक) में होता है, लेकिन निम्न से उच्च स्तर के विशेषाधिकार में संक्रमण हो सकता है केवल सुरक्षित, हार्डवेयर-नियंत्रित फाटकों के माध्यम से जो विशेष निर्देशों को निष्पादित करके या बाहरी व्यवधान प्राप्त होने पर पार किए जाते हैं।

माइक्रोकर्नेल ऑपरेटिंग सिस्टम कंप्यूटर सुरक्षा और लालित्य के प्रयोजनों के लिए विशेषाधिकार प्राप्त मोड में चल रहे कोड की मात्रा को कम करने का प्रयास करते हैं, लेकिन अंततः प्रदर्शन का त्याग करते हैं।

यह भी देखें

 * कॉल गेट (इंटेल)
 * स्मृति विभाजन
 * सुरक्षित प्रकार – x86-संगत 80286 CPU और नए पर उपलब्ध है
 * IOPL (CONFIG.SYS निर्देश) - रिंग 3 के बजाय रिंग 2 पर DLL कोड चलाने के लिए एक OS/2 निर्देश
 * सेगमेंट डिस्क्रिप्टर
 * पर्यवेक्षक कॉल निर्देश
 * सिस्टम प्रबंधन मोड (एसएमएम)
 * कम से कम विशेषाधिकार का सिद्धांत

संदर्भ

 * Intel 80386 Programmer's Reference