सुरक्षा रिंग: Difference between revisions
No edit summary |
No edit summary |
||
| Line 46: | Line 46: | ||
[[मौरिस विल्क्स]] ने अंकित किया है-<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> | [[मौरिस विल्क्स]] ने अंकित किया है-<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> | ||
फंक्शंस को कभी-कभी दूसरी दिशा में रिंगों में भी ले जाया जाता है। उदाहरण के लिए, लिनक्स कर्नेल | फंक्शंस को कभी-कभी दूसरी दिशा में रिंगों में भी ले जाया जाता है। उदाहरण के लिए, लिनक्स कर्नेल [[ vDSO | vDSO]] अनुभाग को प्रक्रियाओं में प्रवेश करता है जिसमें ऐसे कार्य होते हैं जिन्हें सामान्य रूप से सिस्टम कॉल अर्थात रिंग ट्रांज़िशन की आवश्यकता होती है। सिस्कल करने के अतिरिक्त ये कार्य कर्नेल द्वारा प्रदान किए गए स्थिर डेटा का उपयोग करते हैं। यह रिंग ट्रांज़िशन की आवश्यकता से बचा जाता है और इसलिए यह सिस्कल की तुलना में अधिक हल्का है। समारोह gettimeofday इस तरह प्रदान किया जा सकता है। | ||
=== हाइपरवाइजर मोड === | === हाइपरवाइजर मोड === | ||
इंटेल और एएमडी के | इंटेल और एएमडी के सीपीयू रिंग 0 हार्डवेयर एक्सेस को नियंत्रित करने के लिए हाइपरविजर के लिए x86 वर्चुअलाइजेशन निर्देश प्रदान करते हैं। चूँकि वे पारस्परिक रूप से असंगत हैं, Intel VT-x (कोडनेम वेंडरपूल) और X86 वर्चुअलाइजेशन#AMD वर्चुअलाइजेशन (AMD-V)|AMD-V (कोडनेम Pacifica) दोनों नया रिंग बनाते हैं -1 ताकि अतिथि ऑपरेटिंग सिस्टम रिंग 0 चला सके संचालन मूल रूप से अन्य मेहमानों या मेजबान ओएस को प्रभावित किए बिना। | ||
<ब्लॉककोट> | <ब्लॉककोट> | ||
वर्चुअलाइजेशन की सहायता के लिए, वीटी-एक्स और [[ सुरक्षित वर्चुअल मशीन ]] रिंग 0 के नीचे नया विशेषाधिकार स्तर डालते हैं। दोनों नौ नए मशीन कोड निर्देश जोड़ते हैं जो केवल रिंग −1 पर काम करते हैं, जिसका उद्देश्य हाइपरविजर द्वारा उपयोग किया जाना है।<ref>{{cite web | last=Dornan | first=Andy | date=1 November 2005 | url = http://www.informationweek.com/intel-vt-vs-amd-pacifica/172302134 | archive-url=https://web.archive.org/web/20130530214041/http://www.informationweek.com/intel-vt-vs-amd-pacifica/172302134 | title=इंटेल वीटी बनाम एएमडी पैसिफिक| publisher=CMP | access-date=11 November 2012 | archive-date = 2013-05-30 |url-status=dead}}</ref> | वर्चुअलाइजेशन की सहायता के लिए, वीटी-एक्स और [[ सुरक्षित वर्चुअल मशीन ]] रिंग 0 के नीचे नया विशेषाधिकार स्तर डालते हैं। दोनों नौ नए मशीन कोड निर्देश जोड़ते हैं जो केवल रिंग −1 पर काम करते हैं, जिसका उद्देश्य हाइपरविजर द्वारा उपयोग किया जाना है।<ref>{{cite web | last=Dornan | first=Andy | date=1 November 2005 | url = http://www.informationweek.com/intel-vt-vs-amd-pacifica/172302134 | archive-url=https://web.archive.org/web/20130530214041/http://www.informationweek.com/intel-vt-vs-amd-pacifica/172302134 | title=इंटेल वीटी बनाम एएमडी पैसिफिक| publisher=CMP | access-date=11 November 2012 | archive-date = 2013-05-30 |url-status=dead}}</ref> | ||
Revision as of 17:22, 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 आर्किटेक्चर तीन विशेषाधिकार स्तरों एप्लिकेशन (पीएल0), ऑपरेटिंग सिस्टम (पीएल1), और हाइपरविजर (पीएल2) को प्रस्तावित करता है। असामान्य रूप से, स्तर 0 (पीएल0) न्यूनतम विशेषाधिकार प्राप्त स्तर है, जबकि स्तर 2 अधिक विशेषाधिकार प्राप्त स्तर है।[8] AArch64 के लिए एआरएम संस्करण 8 चार अपवाद स्तरों एप्लिकेशन (ईएल0), ऑपरेटिंग सिस्टम (ईएल1), हाइपरविजर (ईएल2) और सुरक्षित मॉनिटर/फर्मवेयर (ईएल3)[9]: D1-2454 और AArch32[9]: G1-6013 को प्रस्तावित करता है|
कुछ प्रणालियों में रिंग सुरक्षा को प्रोसेसर मोड (मास्टर/कर्नेल/विशेषाधिकार/सुपरवाइज़र-मोड के प्रति स्लेव/अनविशेष/उपयोगकर्ता मोड) के साथ जोड़ा जा सकता है। दोनों का समर्थन करने वाले हार्डवेयर पर कार्य करने वाले ऑपरेटिंग सिस्टम सुरक्षा के दोनों रूपों का उपयोग कर सकते हैं।
रिंग आर्किटेक्चर के प्रभावी उपयोग के लिए हार्डवेयर और ऑपरेटिंग सिस्टम के मध्य घनिष्ठ सहयोग की आवश्यकता होती है|[why?] कई हार्डवेयर प्लेटफॉर्म पर काम करने के लिए डिज़ाइन किए गए ऑपरेटिंग सिस्टम रिंग्स का केवल सीमित उपयोग कर सकते हैं यदि वे प्रत्येक समर्थित प्लेटफॉर्म पर उपस्थित नहीं हैं। अधिकांशतः सुरक्षा मॉडल को कर्नेल और उपयोगकर्ता के लिए सरलीकृत किया जाता है, भले ही हार्डवेयर रिंगों के माध्यम से श्रेष्ठ ग्रैन्युलैरिटी प्रदान करता हो।
मोड
पर्यवेक्षक मोड
कंप्यूटर शब्दों में, पर्यवेक्षक मोड हार्डवेयर-मध्यस्थ फ़्लैग है जिसे सिस्टम-स्तरीय सॉफ़्टवेयर में चल रहे कोड द्वारा परिवर्तित किया जा सकता है। सिस्टम-स्तरीय कार्यों या थ्रेड्स में यह फ़्लैग कार्य के समय सेट हो सकते हैं,[lower-alpha 1] जबकि उपयोगकर्ता-स्तर के अनुप्रयोग में यह नहीं हो सकते हैं। यह फ़्लैग निर्धारित करता है कि मशीन कोड संचालन को निष्पादित करना संभव होगा जैसे विभिन्न डिस्क्रिप्टर टेबल के लिए रजिस्टरों को संशोधित करना या इंटरप्ट्स को अक्षम करने जैसे संचालन करना। संचालन हेतु दो भिन्न-भिन्न मोड का विचार अधिक शक्ति और उत्तरदायित्व से आता है- पर्यवेक्षक मोड में प्रोग्राम विफल न हो ऐसा विश्वास किया जाता है क्योंकि विफलता पूर्ण कंप्यूटर सिस्टम को क्रैश कर सकती है|
पर्यवेक्षक मोड कुछ प्रोसेसरों पर निष्पादन मोड है जो विशेषाधिकार प्राप्त निर्देशों सहित सभी निर्देशों के निष्पादन को सक्षम बनाता है। यह स्मृति प्रबंधन हार्डवेयर और अन्य बाह्य उपकरणों के लिए विभिन्न एड्रेस स्पेस एक्सेस प्रदान कर सकता है। यह वह मोड है जिसमें ऑपरेटिंग सिस्टम सामान्यतः कार्य करता है।[10]
मोनोलिथिक कर्नेल (ऑपरेटिंग सिस्टम) में, ऑपरेटिंग सिस्टम पर्यवेक्षक मोड में कार्य करता है और एप्लिकेशन उपयोगकर्ता मोड में कार्य करता है। अन्य प्रकार के ऑपरेटिंग सिस्टम, जैसे एक्सोकर्नेल या माइक्रोकर्नेल वाले ऑपरेटिंग सिस्टम आवश्यक रूप से इस व्यवहार को साझा नहीं करते हैं।
पीसी जगत से कुछ उदाहरण हैं-
- लिनक्स कर्नेल, मैकोज़ और माइक्रोसॉफ़्ट विंडोज़ तीन ऑपरेटिंग सिस्टम हैं जो पर्यवेक्षक/उपयोगकर्ता मोड का उपयोग करते हैं। विशिष्ट कार्यों को करने के लिए, उपयोगकर्ता मोड कोड को पर्यवेक्षक मोड में सिस्टम कॉल करना चाहिए या कर्नेल स्थान पर जहाँ ऑपरेटिंग सिस्टम का विश्वसनीय कोड आवश्यक कार्य करेगा और निष्पादन को उपयोगकर्ता स्थान पर रिटर्न करेगा। लोडेबल कर्नेल मॉड्यूल के उपयोग के माध्यम से अतिरिक्त कोड को कर्नेल स्थान में आवश्यक अनुमति वाले उपयोगकर्ता द्वारा जोड़ा जा सकता है, क्योंकि यह कोड उपयोगकर्ता मोड के अभिगम नियंत्रण और सुरक्षा सीमाओं के अधीन नहीं है।
- DOS (जब तक कोई 386 मेमोरी मैनेजर जैसे EMM386 लोड नहीं होता है), साथ ही साथ अन्य सरल ऑपरेटिंग सिस्टम और कई एम्बेडेड डिवाइस सुपरवाइज़र मोड में स्थायी रूप से कार्य करते हैं, जिसका अर्थ है कि ड्राइवरों को सीधे उपयोगकर्ता प्रोग्राम के रूप में लिखा जा सकता है।
अधिकांश प्रोसेसर में दो भिन्न-भिन्न मोड होते हैं। X86-प्रोसेसर के चार भिन्न-भिन्न मोड हैं जो चार भिन्न-भिन्न रिंगों में विभाजित हैं। रिंग 0 में कार्य करने वाले प्रोग्राम सिस्टम के साथ कुछ भी कर सकते हैं, और रिंग 3 में कार्य करने वाले कोड को किसी भी समय अन्य कंप्यूटर सिस्टम को प्रभावित किए बिना विफल होने में सक्षम होना चाहिए। रिंग 1 और रिंग 2 का कदाचित ही कभी उपयोग किया जाता है, किन्तु इसे एक्सेस के विभिन्न स्तरों के साथ कॉन्फ़िगर किया जा सकता है।
अधिकांश उपस्तिथ प्रणालियों में, उपयोगकर्ता मोड से कर्नेल मोड में स्विच करने से प्रदर्शन में उच्च कॉस्ट आती है। इसे मूल अनुरोध getpid पर अधिकांश मशीनों पर 1000-1500 चक्र व्यय के लिए मापा गया है। इनमें से लगभग 100 वास्तविक स्विच के लिए हैं, शेष कर्नेल ओवरहेड है।[11][12] L3 माइक्रोकर्नेल में, इस ओवरहेड को कम करने से कुल व्यय लगभग 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 निर्देश
- सेगमेंट डिस्क्रिप्टर
- पर्यवेक्षक कॉल निर्देश
- सिस्टम प्रबंधन मोड (एसएमएम)
- कम से कम विशेषाधिकार का सिद्धांत
टिप्पणियाँ