/ / X86 सीपीयू केवल चार "रिंग्स" में से दो का उपयोग क्यों करते हैं?

क्यों x86 CPUs केवल चार "रिंगों" में से दो का उपयोग करते हैं?

क्यों करते हैं-86-CPUs-केवल उपयोग-दो बाहर के चार अंगूठियां-00

जब ऑपरेटिंग सिस्टम के बारे में अधिक जानकारी प्राप्त करनाऔर वे जिस हार्डवेयर पर काम करते हैं और एक दूसरे के साथ बातचीत करते हैं, आप यह देखकर आश्चर्यचकित हो सकते हैं कि क्या विषमताएँ या "संसाधन" घटित होते हैं। ऐसा क्यों है? आज के सुपरयूजर Q & A पोस्ट में एक जिज्ञासु पाठक के प्रश्न का उत्तर है।

आज का प्रश्न और उत्तर सत्र हमारे पास SuperUser के सौजन्य से आता है — स्टैक एक्सचेंज का एक उपखंड, जो कि Q & A वेब साइटों का एक समुदाय संचालित समूह है।

Lemsipmatt (फ़्लिकर) की फोटो शिष्टाचार।

प्रश्न

SuperUser रीडर AdHominem जानना चाहता है कि x86 CPUs केवल चार में से दो रिंगों का उपयोग क्यों करते हैं:

लिनक्स और विंडोज आधारित x86 सिस्टम ही उपयोग करते हैं अंगूठी ० कर्नेल मोड के लिए और अँगूठी ३ उपयोगकर्ता मोड के लिए। क्यों प्रोसेसर भी चार अलग-अलग रिंगों को भेद करते हैं अगर वे सभी वैसे भी दो का उपयोग करके समाप्त हो जाते हैं? यह AMD64 वास्तुकला के साथ बदल गया है?

X86 CPU केवल चार में से दो रिंगों का उपयोग क्यों करते हैं?

उत्तर

सुपरयूजर योगदानकर्ता जेमी हैनराहन का जवाब हमारे लिए है:

इसके दो प्राथमिक कारण हैं।

पहला वह है, हालाँकि x86 CPUs ऑफ़र करते हैंस्मृति सुरक्षा के चार वलय, संरक्षण की ग्रेन्युलैरिटी की पेशकश प्रति-खंड स्तर पर ही होती है। यही है, प्रत्येक खंड को एक विशिष्ट रिंग (विशेषाधिकार स्तर) के साथ-साथ अन्य सुरक्षा जैसे कि राइट-डिसेबल किया जा सकता है। लेकिन कई खंड वर्णनकर्ता उपलब्ध नहीं हैं। अधिकांश ऑपरेटिंग सिस्टम व्यक्तिगत पेजों के लिए, स्मृति सुरक्षा की बहुत बारीक बारीकियों को पसंद करना चाहते हैं।

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

दूसरा कारण ऑपरेटिंग सिस्टम की इच्छा हैपोर्टेबिलिटी। यह सिर्फ x86 के बारे में नहीं है; यूनिक्स ने हमें सिखाया कि एक ऑपरेटिंग सिस्टम कई प्रोसेसर आर्किटेक्चर के लिए अपेक्षाकृत पोर्टेबल हो सकता है, और यह एक अच्छी बात थी। और कुछ प्रोसेसर केवल दो रिंग का समर्थन करते हैं। वास्तुकला में कई छल्ले के आधार पर, ऑपरेटिंग सिस्टम को लागू करने वालों ने ऑपरेटिंग सिस्टम को अधिक पोर्टेबल बना दिया।

एक तीसरा कारण है जो विशिष्ट हैविंडोज एनटी विकास। NT के डिज़ाइनर (डेविड कटलर और उनकी टीम, जिन्हें Microsoft ने DEC वेस्टर्न रीजन लैब्स से दूर रखा था) को VMS पर व्यापक पिछला अनुभव था; वास्तव में, कटलर और कुछ अन्य वीएमएस के मूल डिजाइनरों में से थे। और VAX प्रोसेसर जिसके लिए VMS डिजाइन किया गया था, उसके चार रिंग होते हैं (VMS चार रिंग का उपयोग करता है)।

लेकिन वे घटक जो वीएमएस में चलते थे रिंग्स 1 और 2 (रिकॉर्ड प्रबंधन सेवाएं और सीएलआई, क्रमशः) एनटी डिजाइन से बचे थे। अँगूठी २ VMS में वास्तव में ऑपरेटिंग सिस्टम के बारे में नहीं थासुरक्षा, लेकिन उपयोगकर्ता के सीएलआई पर्यावरण को एक कार्यक्रम से दूसरे कार्यक्रम तक संरक्षित करने के बारे में, और विंडोज में यह अवधारणा नहीं थी; सीएलआई एक सामान्य प्रक्रिया के रूप में चलता है। वीएमएस के लिए के रूप में अंगूठी 1, RMS कोड में अंगूठी 1 में बुलाना पड़ा अंगूठी ० काफी अक्सर, और अंगूठी संक्रमण महंगा है। यह सिर्फ जाने के लिए कहीं अधिक कुशल निकला अंगूठी ० और इसके साथ बहुत कुछ किया जाना चाहिए अंगूठी ० के भीतर संक्रमण अंगूठी 1 कोड (फिर, ऐसा नहीं है कि NT के पास वैसे भी RMS जैसा कुछ भी है)।

X86 ने चार रिंगों को क्यों लागू कियाऑपरेटिंग सिस्टम ने उनका उपयोग नहीं किया, आप x86 की तुलना में कहीं अधिक हाल के डिजाइन के ऑपरेटिंग सिस्टम के बारे में बात कर रहे हैं। X86 के बहुत सारे सिस्टम प्रोग्रामिंग फीचर्स NT या ट्रू यूनिक्स-ईश की गुठली पर लंबे समय से पहले डिजाइन किए गए थे, और वे वास्तव में नहीं जानते थे कि ऑपरेटिंग सिस्टम क्या उपयोग करेगा। यह तब तक नहीं था जब तक हमें x86 पर पेजिंग नहीं मिली थी कि हम सही यूनिक्स-ईश या वीएमएस जैसी गुठली को लागू कर सकते थे।

न केवल आधुनिक x86 ऑपरेटिंग सिस्टम मोटे तौर परसेगमेंटिंग को अनदेखा करें (वे 0, 4 और 0 के आकार वाले बेस एड्रेस के साथ C, D और S सेगमेंट सेट करते हैं। एफ और जी सेगमेंट को कभी-कभी कुंजी ऑपरेटिंग सिस्टम डेटा संरचनाओं की ओर इशारा करते हैं), वे भी काफी हद तक चीजों को अनदेखा करते हैं जैसे "कार्य राज्य खंड"। TSS तंत्र को स्पष्ट रूप से थ्रेड संदर्भ स्विचिंग के लिए डिज़ाइन किया गया था, लेकिन यह बहुत अधिक साइड इफेक्ट करता है, इसलिए आधुनिक x86 ऑपरेटिंग सिस्टम इसे "हाथ से" करते हैं। एक ही समय x86 NT हार्डवेयर कार्य कुछ वास्तविक स्थितियों के लिए है, एक दोहरे दोष अपवाद की तरह।

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


स्पष्टीकरण में कुछ जोड़ना है? टिप्पणियों में विचार व्यक्त करो। अन्य टेक-सेवी स्टैक एक्सचेंज उपयोगकर्ताओं से अधिक उत्तर पढ़ना चाहते हैं? पूरी चर्चा धागा यहाँ देखें।