माइक्रोकर्नेल: Difference between revisions
(Created page with "{{Short description|Kernel that provides fewer services than a traditional kernel}} {{Use dmy dates|date=February 2021}} File:OS-structure.svg|thumb|450px|क्रमशः...") |
No edit summary |
||
Line 1: | Line 1: | ||
{{Short description|Kernel that provides fewer services than a traditional kernel}} | {{Short description|Kernel that provides fewer services than a traditional kernel}} | ||
{{Use dmy dates|date=February 2021}} | {{Use dmy dates|date=February 2021}} | ||
[[File:OS-structure.svg|thumb|450px|क्रमशः मोनोलिथिक और माइक्रोकर्नेल-आधारित ऑपरेटिंग सिस्टम की संरचना]][[कंप्यूटर विज्ञान]] में, एक माइक्रोकर्नेल ( | [[File:OS-structure.svg|thumb|450px|क्रमशः मोनोलिथिक और माइक्रोकर्नेल-आधारित ऑपरेटिंग सिस्टम की संरचना]][[कंप्यूटर विज्ञान]] में, एक माइक्रोकर्नेल (प्रायः μ-कर्नेल के रूप में संक्षिप्त) [[सॉफ़्टवेयर]] की लगभग-न्यूनतम मात्रा है जो एक [[ऑपरेटिंग सिस्टम]] (OS) को लागू करने के लिए आवश्यक तंत्र प्रदान कर सकता है। इन तंत्रों में निम्न-स्तरीय [[पता स्थान]] प्रबंधन, [[थ्रेड (कंप्यूटिंग)]] प्रबंधन और अंतर-प्रक्रिया संचार (IPC) सम्मलित हैं। | ||
यदि हार्डवेयर एकाधिक सुरक्षा रिंग या [[सीपीयू मोड]] प्रदान करता है, तो माइक्रोकर्नेल एकमात्र सॉफ्टवेयर हो सकता है जो सबसे विशेषाधिकार प्राप्त स्तर पर निष्पादित होता है, जिसे आमतौर पर [[कर्नेल मोड]] कहा जाता है। पारंपरिक ऑपरेटिंग सिस्टम फ़ंक्शंस, जैसे [[डिवाइस ड्राइवर]], [[प्रोटोकॉल स्टैक]] और [[फाइल सिस्टम]], आमतौर पर माइक्रोकर्नेल से ही हटा दिए जाते हैं और इसके | यदि हार्डवेयर एकाधिक सुरक्षा रिंग या [[सीपीयू मोड]] प्रदान करता है, तो माइक्रोकर्नेल एकमात्र सॉफ्टवेयर हो सकता है जो सबसे विशेषाधिकार प्राप्त स्तर पर निष्पादित होता है, जिसे आमतौर पर [[कर्नेल मोड]] कहा जाता है। पारंपरिक ऑपरेटिंग सिस्टम फ़ंक्शंस, जैसे [[डिवाइस ड्राइवर]], [[प्रोटोकॉल स्टैक]] और [[फाइल सिस्टम]], आमतौर पर माइक्रोकर्नेल से ही हटा दिए जाते हैं और इसके अतिरिक्त [[उपयोक्ता स्थान]] में चलाए जाते हैं।<ref>{{cite web | ||
| url = http://www.minix3.org/theses/herder-true-microkernel.pdf | | url = http://www.minix3.org/theses/herder-true-microkernel.pdf | ||
| title = एक ट्रू माइक्रोकर्नेल ऑपरेटिंग सिस्टम की ओर| date = 23 February 2005 | access-date = 22 June 2015 | | title = एक ट्रू माइक्रोकर्नेल ऑपरेटिंग सिस्टम की ओर| date = 23 February 2005 | access-date = 22 June 2015 | ||
| first = Jorrit N. | last=Herder | website = minix3.org | | first = Jorrit N. | last=Herder | website = minix3.org | ||
}}</ref> | }}</ref> | ||
स्रोत कोड आकार के संदर्भ में, माइक्रोकर्नेल | स्रोत कोड आकार के संदर्भ में, माइक्रोकर्नेल प्रायः [[अखंड कर्नेल]] से छोटे होते हैं। उदाहरण के लिए, MINIX 3 माइक्रोकर्नेल में कोड की केवल लगभग 12,000 पंक्तियाँ होती हैं।<ref>{{cite web|url=http://wiki.minix3.org/doku.php?id=www:documentation:अधिक पढ़ें|title=अधिक पढ़ें|access-date=20 December 2016}}</ref> | ||
Line 17: | Line 17: | ||
| access-date = 13 September 2016 | | access-date = 13 September 2016 | ||
}} | }} | ||
</ref> 1967 में, Regnecentralen पोलैंड में Zakłady Azotowe Pulawy उर्वरक संयंत्र में एक RC 4000 प्रोटोटाइप स्थापित कर रहा था। कंप्यूटर ने संयंत्र की जरूरतों के अनुरूप एक छोटे रीयल-टाइम ऑपरेटिंग सिस्टम का | </ref> 1967 में, Regnecentralen पोलैंड में Zakłady Azotowe Pulawy उर्वरक संयंत्र में एक RC 4000 प्रोटोटाइप स्थापित कर रहा था। कंप्यूटर ने संयंत्र की जरूरतों के अनुरूप एक छोटे रीयल-टाइम ऑपरेटिंग सिस्टम का उपयोग किया। ब्रिन्च हैनसेन और उनकी टीम आरसी 4000 प्रणाली की सामान्यता और पुन: प्रयोज्यता की कमी से चिंतित हो गई। उन्हें डर था कि प्रत्येक स्थापना के लिए एक अलग ऑपरेटिंग सिस्टम की आवश्यकता होगी, इसलिए उन्होंने आरसी 4000 के लिए सॉफ्टवेयर बनाने के नए और अधिक सामान्य तरीकों की जांच शुरू कर दी।<ref name="Hansen_2004">{{cite book | ||
| url = http://brinch-hansen.net/memoirs/contents.html | | url = http://brinch-hansen.net/memoirs/contents.html | ||
| title = एक प्रोग्रामर की कहानी: एक कंप्यूटर पायनियर का जीवन| last= Brinch Hansen | | title = एक प्रोग्रामर की कहानी: एक कंप्यूटर पायनियर का जीवन| last= Brinch Hansen | ||
Line 82: | Line 82: | ||
वही तंत्र जो कर्नेल को उपयोगकर्ता स्थान में वितरित करने की अनुमति देता है, सिस्टम को नेटवर्क लिंक पर वितरित करने की अनुमति देता है। [[रिचर्ड राशिद]] द्वारा बनाए गए पहले माइक्रोकर्नेल, विशेष रूप से [[मच (कर्नेल)]] का प्रदर्शन निराशाजनक साबित हुआ, लेकिन अंतर्निहित फायदे इतने महान दिखाई दिए कि यह 1990 के दशक के अंत में अनुसंधान की एक प्रमुख पंक्ति थी।{{Citation needed|date=November 2012}} हालाँकि, इस समय के दौरान नेटवर्किंग सिस्टम के संबंध में कंप्यूटर की गति बहुत बढ़ गई, और प्रदर्शन में नुकसान ने विकास के मामले में फायदे को खत्म कर दिया।{{citation needed|date = June 2015}} | वही तंत्र जो कर्नेल को उपयोगकर्ता स्थान में वितरित करने की अनुमति देता है, सिस्टम को नेटवर्क लिंक पर वितरित करने की अनुमति देता है। [[रिचर्ड राशिद]] द्वारा बनाए गए पहले माइक्रोकर्नेल, विशेष रूप से [[मच (कर्नेल)]] का प्रदर्शन निराशाजनक साबित हुआ, लेकिन अंतर्निहित फायदे इतने महान दिखाई दिए कि यह 1990 के दशक के अंत में अनुसंधान की एक प्रमुख पंक्ति थी।{{Citation needed|date=November 2012}} हालाँकि, इस समय के दौरान नेटवर्किंग सिस्टम के संबंध में कंप्यूटर की गति बहुत बढ़ गई, और प्रदर्शन में नुकसान ने विकास के मामले में फायदे को खत्म कर दिया।{{citation needed|date = June 2015}} | ||
मौजूदा सिस्टम को बेहतर प्रदर्शन के लिए अनुकूलित करने के लिए कई प्रयास किए गए, लेकिन ओवरहेड हमेशा काफी था और इनमें से अधिकांश प्रयासों के लिए यूजर-स्पेस प्रोग्राम को कर्नेल में वापस ले जाने की आवश्यकता थी। 2000 तक, अधिकांश बड़े पैमाने के [[मैक ओएस]] (कर्नेल) कर्नेल प्रयास समाप्त हो गए थे, हालांकि 2001 में जारी ऐप्पल का मैकोज़ अभी भी [[एक्सएनयू]] नामक एक [[संकर गिरी]] का उपयोग करता है, जो भारी संशोधित (हाइब्रिड) ओएसएफ/1 के [[मच कर्नेल]] ([[ओएसएफटीके]] 7.3 कर्नेल) को जोड़ता है। बीएसडी यूनिक्स से कोड के साथ,<ref>{{cite AV media|url=https://www.youtube.com/watch?v=ggnFoDqzGMU |archive-url=https://ghostarchive.org/varchive/youtube/20211211/ggnFoDqzGMU| archive-date=2021-12-11 |url-status=live|author=Jim Magee|title=डब्ल्यूडब्ल्यूडीसी 2000 सत्र 106 - मैक ओएस एक्स: कर्नेल|minutes=14}}{{cbignore}}</ref><ref>{{cite web|title=UNIX/Linux अनुप्रयोगों को Mac OS X में पोर्ट करना|url=https://developer.apple.com/library/mac/#documentation/Porting/Conceptual/PortingUnix/glossary/glossary.html#//apple_ref/doc/uid/TP40002859-TPXREF101|publisher=Apple|access-date=26 April 2011}}</ref> और यह कर्नेल [[आईओएस]], [[tvOS]] और वॉचओएस में भी प्रयोग किया जाता है। [[Windows NT]], Windows NT 3.1|NT 3.1 के साथ शुरू होकर और [[Windows 11]] के साथ जारी है, एक हाइब्रिड कर्नेल डिज़ाइन का उपयोग करता है। {{As of|2012}}, मैक-आधारित [[जीएनयू हर्ड]] भी कार्यात्मक है और [[आर्क लिनक्स]] और [[डेबियन]] के परीक्षण संस्करणों में | मौजूदा सिस्टम को बेहतर प्रदर्शन के लिए अनुकूलित करने के लिए कई प्रयास किए गए, लेकिन ओवरहेड हमेशा काफी था और इनमें से अधिकांश प्रयासों के लिए यूजर-स्पेस प्रोग्राम को कर्नेल में वापस ले जाने की आवश्यकता थी। 2000 तक, अधिकांश बड़े पैमाने के [[मैक ओएस]] (कर्नेल) कर्नेल प्रयास समाप्त हो गए थे, हालांकि 2001 में जारी ऐप्पल का मैकोज़ अभी भी [[एक्सएनयू]] नामक एक [[संकर गिरी]] का उपयोग करता है, जो भारी संशोधित (हाइब्रिड) ओएसएफ/1 के [[मच कर्नेल]] ([[ओएसएफटीके]] 7.3 कर्नेल) को जोड़ता है। बीएसडी यूनिक्स से कोड के साथ,<ref>{{cite AV media|url=https://www.youtube.com/watch?v=ggnFoDqzGMU |archive-url=https://ghostarchive.org/varchive/youtube/20211211/ggnFoDqzGMU| archive-date=2021-12-11 |url-status=live|author=Jim Magee|title=डब्ल्यूडब्ल्यूडीसी 2000 सत्र 106 - मैक ओएस एक्स: कर्नेल|minutes=14}}{{cbignore}}</ref><ref>{{cite web|title=UNIX/Linux अनुप्रयोगों को Mac OS X में पोर्ट करना|url=https://developer.apple.com/library/mac/#documentation/Porting/Conceptual/PortingUnix/glossary/glossary.html#//apple_ref/doc/uid/TP40002859-TPXREF101|publisher=Apple|access-date=26 April 2011}}</ref> और यह कर्नेल [[आईओएस]], [[tvOS]] और वॉचओएस में भी प्रयोग किया जाता है। [[Windows NT]], Windows NT 3.1|NT 3.1 के साथ शुरू होकर और [[Windows 11]] के साथ जारी है, एक हाइब्रिड कर्नेल डिज़ाइन का उपयोग करता है। {{As of|2012}}, मैक-आधारित [[जीएनयू हर्ड]] भी कार्यात्मक है और [[आर्क लिनक्स]] और [[डेबियन]] के परीक्षण संस्करणों में सम्मलित है। | ||
यद्यपि माइक्रोकर्नेल पर प्रमुख कार्य काफी हद तक समाप्त हो गया था, प्रयोगकर्ताओं ने विकास जारी रखा।{{Citation needed|date=November 2012}} इसके बाद से यह दिखाया गया है कि पहले के डिजाइनों की कई प्रदर्शन समस्याएं अवधारणा की मौलिक सीमा नहीं थीं, बल्कि इसके | यद्यपि माइक्रोकर्नेल पर प्रमुख कार्य काफी हद तक समाप्त हो गया था, प्रयोगकर्ताओं ने विकास जारी रखा।{{Citation needed|date=November 2012}} इसके बाद से यह दिखाया गया है कि पहले के डिजाइनों की कई प्रदर्शन समस्याएं अवधारणा की मौलिक सीमा नहीं थीं, बल्कि इसके अतिरिक्त डिजाइनर की एकल-उद्देश्य प्रणालियों का उपयोग करने की इच्छा के कारण इनमें से कई सेवाओं को लागू करने की इच्छा थी।{{Citation needed|date=November 2012}} [[विधानसभा कोड]] सहित समस्या के लिए अधिक व्यावहारिक दृष्टिकोण का उपयोग करना और सॉफ़्टवेयर में सामान्य रूप से समर्थित अवधारणाओं को लागू करने के लिए प्रोसेसर पर भरोसा करना नाटकीय रूप से बेहतर प्रदर्शन के साथ माइक्रोकर्नेल की एक नई श्रृंखला का नेतृत्व करता है। | ||
माइक्रोकर्नेल [[exokernel]] से निकटता से संबंधित हैं।<ref name="Liedtke_96">{{cite journal | माइक्रोकर्नेल [[exokernel]] से निकटता से संबंधित हैं।<ref name="Liedtke_96">{{cite journal | ||
Line 129: | Line 129: | ||
| location = Asheville, NC, USA | | location = Asheville, NC, USA | ||
| citeseerx = 10.1.1.40.1293 | | citeseerx = 10.1.1.40.1293 | ||
}}</ref> इनमें एक IPC सिस्टम कॉल | }}</ref> इनमें एक IPC सिस्टम कॉल सम्मलित है जो एक भेजने के साथ-साथ एक प्राप्त ऑपरेशन का समर्थन करता है, सभी IPC को समकालिक बनाता है, और रजिस्टरों में जितना संभव हो उतना डेटा पास करता है। इसके अतिरिक्त, Liedtke ने डायरेक्ट प्रोसेस स्विच की अवधारणा पेश की, जहां IPC निष्पादन के दौरान एक (अपूर्ण) [[संदर्भ स्विच]] प्रेषक से सीधे रिसीवर तक किया जाता है। यदि, जैसा कि L4 में है, संदेश का भाग या पूरा भाग रजिस्टरों में पारित किया जाता है, तो यह बिना किसी प्रतिलिपि के संदेश के इन-रजिस्टर भाग को स्थानांतरित कर देता है। इसके अतिरिक्त, शेड्यूलर को कॉल करने के ओवरहेड से बचा जाता है; यह आम मामले में विशेष रूप से फायदेमंद है जहां आईपीसी का प्रयोग [[दुरस्तह प्रकिया कॉल]] (आरपीसी) प्रकार के फैशन में क्लाइंट द्वारा सर्वर को आमंत्रित करने के लिए किया जाता है। एक अन्य अनुकूलन, जिसे लेज़ी शेड्यूलिंग कहा जाता है, IPC के दौरान तैयार कतार में IPC के दौरान ब्लॉक होने वाले थ्रेड्स को छोड़कर IPC के दौरान ट्रैवर्सिंग शेड्यूलिंग कतारों से बचता है। एक बार अनुसूचक के आह्वान के बाद, यह ऐसे धागों को उपयुक्त प्रतीक्षा कतार में ले जाता है। जैसा कि कई स्थितियों में अगले अनुसूचक आह्वान से पहले एक थ्रेड अनब्लॉक हो जाता है, यह दृष्टिकोण महत्वपूर्ण कार्य बचाता है। इसी तरह के दृष्टिकोण को [[QNX]] और [[MINIX 3]] द्वारा अपनाया गया है।{{Citation needed|date=August 2010}} | ||
प्रयोगों की एक श्रृंखला में, चेन और बरशाद ने मोनोलिथिक [[प्रतिशोध]] के स्मृति चक्र प्रति निर्देश (MCPI) की तुलना माइक्रोकर्नेल मच (कर्नेल) के साथ की, जो उपयोगकर्ता स्थान में चल रहे 4.3BSD यूनिक्स सर्वर के साथ संयुक्त है। उनके परिणामों ने उच्च MCPI द्वारा Mach के खराब प्रदर्शन की व्याख्या की और प्रदर्शित किया कि IPC अकेले सिस्टम ओवरहेड के लिए ज़िम्मेदार नहीं है, यह सुझाव देते हुए कि IPC पर विशेष रूप से केंद्रित अनुकूलन का सीमित प्रभाव होगा।<ref name="Chen_Bershad_93">{{cite conference | प्रयोगों की एक श्रृंखला में, चेन और बरशाद ने मोनोलिथिक [[प्रतिशोध]] के स्मृति चक्र प्रति निर्देश (MCPI) की तुलना माइक्रोकर्नेल मच (कर्नेल) के साथ की, जो उपयोगकर्ता स्थान में चल रहे 4.3BSD यूनिक्स सर्वर के साथ संयुक्त है। उनके परिणामों ने उच्च MCPI द्वारा Mach के खराब प्रदर्शन की व्याख्या की और प्रदर्शित किया कि IPC अकेले सिस्टम ओवरहेड के लिए ज़िम्मेदार नहीं है, यह सुझाव देते हुए कि IPC पर विशेष रूप से केंद्रित अनुकूलन का सीमित प्रभाव होगा।<ref name="Chen_Bershad_93">{{cite conference | ||
| first1 = J. Bradley | | first1 = J. Bradley | ||
Line 177: | Line 177: | ||
== डिवाइस ड्राइवर == | == डिवाइस ड्राइवर == | ||
डिवाइस ड्राइवर | डिवाइस ड्राइवर प्रायः [[प्रत्यक्ष मेमोरी एक्सेस]] (डीएमए) करते हैं, और इसलिए विभिन्न कर्नेल डेटा संरचनाओं सहित भौतिक मेमोरी के मनमाने स्थानों पर लिख सकते हैं। इसलिए ऐसे ड्राइवरों पर भरोसा किया जाना चाहिए। यह एक आम ग़लतफ़हमी है कि इसका मतलब है कि उन्हें कर्नेल का हिस्सा होना चाहिए। वास्तव में, एक ड्राइवर कर्नेल का हिस्सा होने के कारण स्वाभाविक रूप से अधिक या कम भरोसेमंद नहीं होता है। | ||
उपयोक्ता स्थान में एक डिवाइस ड्राइवर चलाने के दौरान आवश्यक रूप से एक दुर्व्यवहार करने वाले ड्राइवर को होने वाली क्षति को कम नहीं करता है, व्यवहार में यह बग्गी (दुर्भावनापूर्ण के | उपयोक्ता स्थान में एक डिवाइस ड्राइवर चलाने के दौरान आवश्यक रूप से एक दुर्व्यवहार करने वाले ड्राइवर को होने वाली क्षति को कम नहीं करता है, व्यवहार में यह बग्गी (दुर्भावनापूर्ण के अतिरिक्त) ड्राइवरों की उपस्थिति में सिस्टम स्थिरता के लिए फायदेमंद है: ड्राइवर कोड द्वारा ही मेमोरी-एक्सेस उल्लंघन ( डिवाइस के विपरीत) अभी भी मेमोरी-मैनेजमेंट हार्डवेयर द्वारा पकड़ा जा सकता है। इसके अतिरिक्त, कई डिवाइस डीएमए-सक्षम नहीं हैं, उनके ड्राइवरों को उपयोगकर्ता स्थान में चलाकर अविश्वसनीय बनाया जा सकता है। हाल ही में, कंप्यूटरों की बढ़ती संख्या में [[IOMMU]]s की सुविधा है, जिनमें से कई का उपयोग डिवाइस की भौतिक मेमोरी तक पहुंच को प्रतिबंधित करने के लिए किया जा सकता है।<ref name="Wong_07">{{cite journal |title=I/O, I/O, इट्स ऑफ टू वर्चुअल वर्क वी गो|url=http://www.electronicdesign.com/embedded/io-io-its-virtual-work-we-go |last=Wong |first=William |journal=[[Electronic Design (magazine)|Electronic Design]] |date=27 April 2007 |access-date=8 June 2009 }}</ रेफ> यह उपयोगकर्ता-मोड ड्राइवरों को अविश्वसनीय बनने की भी अनुमति देता है। | ||
उपयोगकर्ता-मोड ड्राइवर वास्तव में माइक्रोकर्नेल से पहले के हैं। [[मिशिगन टर्मिनल सिस्टम]] (MTS), 1967 में, यूजर स्पेस ड्राइवर्स (इसकी फाइल सिस्टम सपोर्ट सहित) को सपोर्ट करता है, जो उस क्षमता के साथ डिजाइन किया जाने वाला पहला ऑपरेटिंग सिस्टम है। रेफरी>{{cite journal |title=मिशिगन टर्मिनल सिस्टम का संगठन और विशेषताएं|first=Michael T. |last=Alexander |journal=Proceedings of the November 16–18, 1971, Fall Joint Computer Conference |volume=40 |year=1971 |pages=589–591 |doi=10.1145/1478873.1478951|s2cid=14614148 }}</ref> ऐतिहासिक रूप से, ड्राइवरों को कोई समस्या नहीं थी, क्योंकि उपकरणों की संख्या वैसे भी छोटी और भरोसेमंद थी, इसलिए उन्हें कर्नेल में रखने से डिज़ाइन सरल हो गया और संभावित प्रदर्शन समस्याओं से बचा गया। इसने यूनिक्स की पारंपरिक ड्राइवर-इन-द-कर्नेल शैली को जन्म दिया, रेफरी नाम = लायंस बुक >{{cite book |title=स्रोत कोड के साथ यूनिक्स छठे संस्करण पर लायंस की टिप्पणी|last=Lions |first=John |date=1 August 1977 |isbn=978-1-57398-013-5 |publisher=Peer-To-Peer Communications|title-link=स्रोत कोड के साथ यूनिक्स छठे संस्करण पर लायंस की टिप्पणी}}</ रेफ> लिनक्स, और विंडोज एनटी। विभिन्न प्रकार के बाह्य उपकरणों के प्रसार के साथ, ड्राइवर कोड की मात्रा में वृद्धि हुई और आधुनिक ऑपरेटिंग सिस्टम में कोड आकार में कर्नेल पर हावी हो गया। | उपयोगकर्ता-मोड ड्राइवर वास्तव में माइक्रोकर्नेल से पहले के हैं। [[मिशिगन टर्मिनल सिस्टम]] (MTS), 1967 में, यूजर स्पेस ड्राइवर्स (इसकी फाइल सिस्टम सपोर्ट सहित) को सपोर्ट करता है, जो उस क्षमता के साथ डिजाइन किया जाने वाला पहला ऑपरेटिंग सिस्टम है। रेफरी>{{cite journal |title=मिशिगन टर्मिनल सिस्टम का संगठन और विशेषताएं|first=Michael T. |last=Alexander |journal=Proceedings of the November 16–18, 1971, Fall Joint Computer Conference |volume=40 |year=1971 |pages=589–591 |doi=10.1145/1478873.1478951|s2cid=14614148 }}</ref> ऐतिहासिक रूप से, ड्राइवरों को कोई समस्या नहीं थी, क्योंकि उपकरणों की संख्या वैसे भी छोटी और भरोसेमंद थी, इसलिए उन्हें कर्नेल में रखने से डिज़ाइन सरल हो गया और संभावित प्रदर्शन समस्याओं से बचा गया। इसने यूनिक्स की पारंपरिक ड्राइवर-इन-द-कर्नेल शैली को जन्म दिया, रेफरी नाम = लायंस बुक >{{cite book |title=स्रोत कोड के साथ यूनिक्स छठे संस्करण पर लायंस की टिप्पणी|last=Lions |first=John |date=1 August 1977 |isbn=978-1-57398-013-5 |publisher=Peer-To-Peer Communications|title-link=स्रोत कोड के साथ यूनिक्स छठे संस्करण पर लायंस की टिप्पणी}}</ रेफ> लिनक्स, और विंडोज एनटी। विभिन्न प्रकार के बाह्य उपकरणों के प्रसार के साथ, ड्राइवर कोड की मात्रा में वृद्धि हुई और आधुनिक ऑपरेटिंग सिस्टम में कोड आकार में कर्नेल पर हावी हो गया। | ||
== आवश्यक घटक और न्यूनतम == | == आवश्यक घटक और न्यूनतम == | ||
जैसा कि एक माइक्रोकर्नेल को शीर्ष पर मनमाने ढंग से ऑपरेटिंग सिस्टम सेवाओं के निर्माण की अनुमति देनी चाहिए, इसे कुछ मुख्य कार्यक्षमता प्रदान करनी चाहिए। कम से कम, इसमें | जैसा कि एक माइक्रोकर्नेल को शीर्ष पर मनमाने ढंग से ऑपरेटिंग सिस्टम सेवाओं के निर्माण की अनुमति देनी चाहिए, इसे कुछ मुख्य कार्यक्षमता प्रदान करनी चाहिए। कम से कम, इसमें सम्मलित हैं: | ||
* स्मृति सुरक्षा के प्रबंधन के लिए आवश्यक पता स्थान से निपटने के लिए कुछ तंत्र | * स्मृति सुरक्षा के प्रबंधन के लिए आवश्यक पता स्थान से निपटने के लिए कुछ तंत्र | ||
* सीपीयू आवंटन, आमतौर पर थ्रेड (कंप्यूटिंग) या [[अनुसूचक सक्रियण]] को प्रबंधित करने के लिए कुछ निष्पादन अमूर्त | * सीपीयू आवंटन, आमतौर पर थ्रेड (कंप्यूटिंग) या [[अनुसूचक सक्रियण]] को प्रबंधित करने के लिए कुछ निष्पादन अमूर्त | ||
Line 197: | Line 197: | ||
दक्षता के लिए, अधिकांश माइक्रोकर्नेल में अनुसूचक होते हैं और न्यूनतम सिद्धांत और नीति-तंत्र पृथक्करण के सिद्धांत का उल्लंघन करते हुए टाइमर का प्रबंधन करते हैं। | दक्षता के लिए, अधिकांश माइक्रोकर्नेल में अनुसूचक होते हैं और न्यूनतम सिद्धांत और नीति-तंत्र पृथक्करण के सिद्धांत का उल्लंघन करते हुए टाइमर का प्रबंधन करते हैं। | ||
माइक्रोकर्नेल-आधारित सिस्टम के स्टार्ट अप ([[बूटिंग]]) के लिए डिवाइस ड्राइवर की आवश्यकता होती है, जो कर्नेल का हिस्सा नहीं होते हैं। आमतौर पर इसका मतलब है कि वे बूट छवि में कर्नेल के साथ पैक किए गए हैं, और कर्नेल बूटस्ट्रैप प्रोटोकॉल का समर्थन करता है जो परिभाषित करता है कि ड्राइवर कैसे स्थित हैं और शुरू हुए हैं; यह L4 माइक्रोकर्नेल परिवार की पारंपरिक बूटस्ट्रैप प्रक्रिया है। कुछ माइक्रोकर्नेल कर्नेल के अंदर कुछ प्रमुख ड्राइवरों को रखकर इसे सरल बनाते हैं (न्यूनतम सिद्धांत का उल्लंघन करते हुए), [[लिंक्सओएस]] और मूल [[मिनिक्स]] इसके उदाहरण हैं। कुछ बूटिंग को आसान बनाने के लिए कर्नेल में फ़ाइल सिस्टम भी | माइक्रोकर्नेल-आधारित सिस्टम के स्टार्ट अप ([[बूटिंग]]) के लिए डिवाइस ड्राइवर की आवश्यकता होती है, जो कर्नेल का हिस्सा नहीं होते हैं। आमतौर पर इसका मतलब है कि वे बूट छवि में कर्नेल के साथ पैक किए गए हैं, और कर्नेल बूटस्ट्रैप प्रोटोकॉल का समर्थन करता है जो परिभाषित करता है कि ड्राइवर कैसे स्थित हैं और शुरू हुए हैं; यह L4 माइक्रोकर्नेल परिवार की पारंपरिक बूटस्ट्रैप प्रक्रिया है। कुछ माइक्रोकर्नेल कर्नेल के अंदर कुछ प्रमुख ड्राइवरों को रखकर इसे सरल बनाते हैं (न्यूनतम सिद्धांत का उल्लंघन करते हुए), [[लिंक्सओएस]] और मूल [[मिनिक्स]] इसके उदाहरण हैं। कुछ बूटिंग को आसान बनाने के लिए कर्नेल में फ़ाइल सिस्टम भी सम्मलित करते हैं। ए <!-- In other cases, [[GNU GRUB]] for example, (This is NOT according to GRUB wiki) --> माइक्रोकर्नेल-आधारित सिस्टम मल्टीबूट संगत बूट लोडर के माध्यम से बूट हो सकता है। इस तरह के सिस्टम आमतौर पर प्रारंभिक बूटस्ट्रैप बनाने या बूटस्ट्रैपिंग जारी रखने के लिए OS इमेज को माउंट करने के लिए स्टेटिकली-लिंक्ड सर्वर को लोड करते हैं। | ||
माइक्रोकर्नेल का एक प्रमुख घटक एक अच्छी इंटर-प्रोसेस संचार प्रणाली और वर्चुअल-मेमोरी-मैनेजर डिज़ाइन है जो पेज-फ़ॉल्ट हैंडलिंग को लागू करने और सुरक्षित तरीके से यूजरमोड सर्वर में स्वैप करने की अनुमति देता है। चूंकि सभी सेवाओं को यूजरमोड प्रोग्राम द्वारा निष्पादित किया जाता है, कार्यक्रमों के बीच संचार के कुशल साधन आवश्यक हैं, अखंड गुठली की तुलना में कहीं अधिक। IPC प्रणाली का डिज़ाइन एक माइक्रोकर्नेल बनाता या तोड़ता है। प्रभावी होने के लिए, IPC सिस्टम में न केवल कम ओवरहेड होना चाहिए, बल्कि CPU शेड्यूलिंग के साथ भी अच्छी तरह से इंटरैक्ट करना चाहिए। | माइक्रोकर्नेल का एक प्रमुख घटक एक अच्छी इंटर-प्रोसेस संचार प्रणाली और वर्चुअल-मेमोरी-मैनेजर डिज़ाइन है जो पेज-फ़ॉल्ट हैंडलिंग को लागू करने और सुरक्षित तरीके से यूजरमोड सर्वर में स्वैप करने की अनुमति देता है। चूंकि सभी सेवाओं को यूजरमोड प्रोग्राम द्वारा निष्पादित किया जाता है, कार्यक्रमों के बीच संचार के कुशल साधन आवश्यक हैं, अखंड गुठली की तुलना में कहीं अधिक। IPC प्रणाली का डिज़ाइन एक माइक्रोकर्नेल बनाता या तोड़ता है। प्रभावी होने के लिए, IPC सिस्टम में न केवल कम ओवरहेड होना चाहिए, बल्कि CPU शेड्यूलिंग के साथ भी अच्छी तरह से इंटरैक्ट करना चाहिए। | ||
== प्रदर्शन == | == प्रदर्शन == | ||
अधिकांश मुख्यधारा के प्रोसेसर पर, एक मोनोलिथिक प्रणाली की तुलना में एक माइक्रोकर्नेल-आधारित प्रणाली में एक सेवा प्राप्त करना स्वाभाविक रूप से अधिक महंगा है।<ref name="Liedtke_96"/>अखंड प्रणाली में, सेवा एकल सिस्टम कॉल द्वारा प्राप्त की जाती है, जिसके लिए दो मोड स्विच (प्रोसेसर की [[रिंग (कंप्यूटर सुरक्षा)]] या सीपीयू मोड में परिवर्तन) की आवश्यकता होती है। माइक्रोकर्नेल-आधारित प्रणाली में, एक सर्वर को IPC संदेश भेजकर और सर्वर से दूसरे IPC संदेश में परिणाम प्राप्त करके सेवा प्राप्त की जाती है। यदि ड्राइवरों को प्रक्रियाओं के रूप में कार्यान्वित किया जाता है, या प्रक्रियाओं के रूप में कार्यान्वित किए जाने पर फ़ंक्शन कॉल के लिए इसके लिए एक संदर्भ स्विच की आवश्यकता होती है। इसके | अधिकांश मुख्यधारा के प्रोसेसर पर, एक मोनोलिथिक प्रणाली की तुलना में एक माइक्रोकर्नेल-आधारित प्रणाली में एक सेवा प्राप्त करना स्वाभाविक रूप से अधिक महंगा है।<ref name="Liedtke_96"/>अखंड प्रणाली में, सेवा एकल सिस्टम कॉल द्वारा प्राप्त की जाती है, जिसके लिए दो मोड स्विच (प्रोसेसर की [[रिंग (कंप्यूटर सुरक्षा)]] या सीपीयू मोड में परिवर्तन) की आवश्यकता होती है। माइक्रोकर्नेल-आधारित प्रणाली में, एक सर्वर को IPC संदेश भेजकर और सर्वर से दूसरे IPC संदेश में परिणाम प्राप्त करके सेवा प्राप्त की जाती है। यदि ड्राइवरों को प्रक्रियाओं के रूप में कार्यान्वित किया जाता है, या प्रक्रियाओं के रूप में कार्यान्वित किए जाने पर फ़ंक्शन कॉल के लिए इसके लिए एक संदर्भ स्विच की आवश्यकता होती है। इसके अतिरिक्त, वास्तविक डेटा को सर्वर और बैक में पास करने से अतिरिक्त कॉपी ओवरहेड हो सकता है, जबकि एक अखंड प्रणाली में कर्नेल सीधे क्लाइंट के बफ़र्स में डेटा तक पहुँच सकता है। | ||
इसलिए प्रदर्शन माइक्रोकर्नेल सिस्टम में एक संभावित मुद्दा है। मच (कर्नेल) और [[कोरसोस]] जैसे पहली पीढ़ी के माइक्रोकर्नेल के अनुभव से पता चला है कि उन पर आधारित सिस्टम बहुत खराब प्रदर्शन करते हैं।<ref name="Chen_Bershad_93" />हालांकि, जोचेन लिडटके ने दिखाया कि मच की प्रदर्शन समस्याएं खराब डिजाइन और कार्यान्वयन, विशेष रूप से मैक के अत्यधिक [[सीपीयू कैश]] फुटप्रिंट का परिणाम थीं।<ref name="Liedtke_95"/>Liedtke ने अपने स्वयं के L4 माइक्रोकर्नेल के साथ प्रदर्शित किया कि सावधानीपूर्वक डिजाइन और कार्यान्वयन के माध्यम से, और विशेष रूप से न्यूनतम सिद्धांत का पालन करके, IPC की लागत को मच की तुलना में परिमाण के एक क्रम से अधिक कम किया जा सकता है। L4 का IPC प्रदर्शन अभी भी आर्किटेक्चर की एक श्रृंखला में अजेय है।<ref name="Liedtke_ESHHIJ_97">{{cite conference | इसलिए प्रदर्शन माइक्रोकर्नेल सिस्टम में एक संभावित मुद्दा है। मच (कर्नेल) और [[कोरसोस]] जैसे पहली पीढ़ी के माइक्रोकर्नेल के अनुभव से पता चला है कि उन पर आधारित सिस्टम बहुत खराब प्रदर्शन करते हैं।<ref name="Chen_Bershad_93" />हालांकि, जोचेन लिडटके ने दिखाया कि मच की प्रदर्शन समस्याएं खराब डिजाइन और कार्यान्वयन, विशेष रूप से मैक के अत्यधिक [[सीपीयू कैश]] फुटप्रिंट का परिणाम थीं।<ref name="Liedtke_95"/>Liedtke ने अपने स्वयं के L4 माइक्रोकर्नेल के साथ प्रदर्शित किया कि सावधानीपूर्वक डिजाइन और कार्यान्वयन के माध्यम से, और विशेष रूप से न्यूनतम सिद्धांत का पालन करके, IPC की लागत को मच की तुलना में परिमाण के एक क्रम से अधिक कम किया जा सकता है। L4 का IPC प्रदर्शन अभी भी आर्किटेक्चर की एक श्रृंखला में अजेय है।<ref name="Liedtke_ESHHIJ_97">{{cite conference | ||
Line 252: | Line 252: | ||
== सुरक्षा == | == सुरक्षा == | ||
माइक्रोकर्नेल के सुरक्षा लाभों पर | माइक्रोकर्नेल के सुरक्षा लाभों पर प्रायः चर्चा की जाती रही है।<ref>{{cite web | author-link = Andrew S. Tanenbaum | last = Tanenbaum | first = Andrew S. | url = http://www.cs.vu.nl/~ast/reliable-os/ | title = तनेनबौम-टोरवाल्ड्स बहस, भाग II }}</ref><ref>Tanenbaum, A., Herder, J. and Bos, H. (May 2006).</ref> सुरक्षा के संदर्भ में माइक्रो कर्नेल का न्यूनतम सिद्धांत, कुछ लोगों ने तर्क दिया है, कम से कम विशेषाधिकार के सिद्धांत का सीधा परिणाम है, जिसके अनुसार सभी कोड में केवल आवश्यक कार्यक्षमता प्रदान करने के लिए आवश्यक विशेषाधिकार होने चाहिए। न्यूनतमता के लिए आवश्यक है कि सिस्टम का [[विश्वसनीय कंप्यूटिंग बेस]] (TCB) न्यूनतम रखा जाए। चूंकि कर्नेल (कोड जो हार्डवेयर के विशेषाधिकार प्राप्त मोड में निष्पादित होता है) के पास किसी भी डेटा तक पहुंच नहीं है और इस प्रकार इसकी अखंडता या गोपनीयता का उल्लंघन कर सकता है, कर्नेल हमेशा टीसीबी का हिस्सा होता है। सुरक्षा-संचालित डिज़ाइन में इसे कम करना स्वाभाविक है। | ||
परिणाम स्वरुप , माइक्रोकर्नेल डिज़ाइन का उपयोग उच्च-सुरक्षा अनुप्रयोगों के लिए डिज़ाइन किए गए सिस्टम के लिए किया गया है, जिसमें [[KeyKOS]], अत्यंत विश्वसनीय ऑपरेटिंग सिस्टम और सैन्य सिस्टम सम्मलित हैं। वास्तव में उच्चतम आश्वासन स्तर ([[मूल्यांकन आश्वासन स्तर]] (ईएएल) 7) पर [[सामान्य मानदंड]] (सीसी) की एक स्पष्ट आवश्यकता है कि मूल्यांकन का लक्ष्य सरल हो, एक जटिल प्रणाली के लिए सच्ची विश्वसनीयता स्थापित करने की व्यावहारिक असंभवता की स्वीकृति। फिर से, सरल शब्द भ्रामक और खराब परिभाषित है। कम से कम रक्षा विभाग के भरोसेमंद कंप्यूटर सिस्टम मूल्यांकन मानदंड ने B3/A1 कक्षाओं में कुछ अधिक सटीक शब्दावली पेश की: | |||
{{Quote|text="The TCB shall [implement] complete, conceptually simple protection mechanisms with precisely defined semantics. Significant system engineering shall be directed toward minimizing the complexity of the TCB, as well as excluding from the TCB those modules that are not protection-critical."|sign=|source=Department of Defense Trusted Computer System Evaluation Criteria}} | {{Quote|text="The TCB shall [implement] complete, conceptually simple protection mechanisms with precisely defined semantics. Significant system engineering shall be directed toward minimizing the complexity of the TCB, as well as excluding from the TCB those modules that are not protection-critical."|sign=|source=Department of Defense Trusted Computer System Evaluation Criteria}} | ||
Line 388: | Line 388: | ||
{{Reflist}} | {{Reflist}} | ||
==अग्रिम पठन== | ==अग्रिम पठन== | ||
* [http://citeseerx.ist.psu.edu/search?q=microkernel Scientific articles about microkernels] (on [[CiteSeerX]]), including: | * [http://citeseerx.ist.psu.edu/search?q=microkernel Scientific articles about microkernels] (on [[CiteSeerX]]), including: | ||
Line 426: | Line 406: | ||
{{Authority control}} | {{Authority control}} | ||
[[यह:कर्नेल#माइक्रोकर्नेल]] | [[यह:कर्नेल#माइक्रोकर्नेल]] | ||
[[फाई:कायट्टोर्जेस्टेलमैन यदिन#मिक्रोयडिन]] | [[फाई:कायट्टोर्जेस्टेलमैन यदिन#मिक्रोयडिन]] |
Revision as of 20:48, 3 December 2022
कंप्यूटर विज्ञान में, एक माइक्रोकर्नेल (प्रायः μ-कर्नेल के रूप में संक्षिप्त) सॉफ़्टवेयर की लगभग-न्यूनतम मात्रा है जो एक ऑपरेटिंग सिस्टम (OS) को लागू करने के लिए आवश्यक तंत्र प्रदान कर सकता है। इन तंत्रों में निम्न-स्तरीय पता स्थान प्रबंधन, थ्रेड (कंप्यूटिंग) प्रबंधन और अंतर-प्रक्रिया संचार (IPC) सम्मलित हैं।
यदि हार्डवेयर एकाधिक सुरक्षा रिंग या सीपीयू मोड प्रदान करता है, तो माइक्रोकर्नेल एकमात्र सॉफ्टवेयर हो सकता है जो सबसे विशेषाधिकार प्राप्त स्तर पर निष्पादित होता है, जिसे आमतौर पर कर्नेल मोड कहा जाता है। पारंपरिक ऑपरेटिंग सिस्टम फ़ंक्शंस, जैसे डिवाइस ड्राइवर, प्रोटोकॉल स्टैक और फाइल सिस्टम, आमतौर पर माइक्रोकर्नेल से ही हटा दिए जाते हैं और इसके अतिरिक्त उपयोक्ता स्थान में चलाए जाते हैं।[1] स्रोत कोड आकार के संदर्भ में, माइक्रोकर्नेल प्रायः अखंड कर्नेल से छोटे होते हैं। उदाहरण के लिए, MINIX 3 माइक्रोकर्नेल में कोड की केवल लगभग 12,000 पंक्तियाँ होती हैं।[2]
इतिहास
माइक्रोकर्नेल अपनी जड़ों को डेनिश कंप्यूटर अग्रणी प्रति ब्रिन्च हैनसेन और डेनिश कंप्यूटर कंपनी कंप्यूटिंग केंद्र में अपने कार्यकाल के लिए खोजते हैं जहां उन्होंने आरसी 4000 कंप्यूटर के लिए सॉफ्टवेयर विकास प्रयासों का नेतृत्व किया।[3] 1967 में, Regnecentralen पोलैंड में Zakłady Azotowe Pulawy उर्वरक संयंत्र में एक RC 4000 प्रोटोटाइप स्थापित कर रहा था। कंप्यूटर ने संयंत्र की जरूरतों के अनुरूप एक छोटे रीयल-टाइम ऑपरेटिंग सिस्टम का उपयोग किया। ब्रिन्च हैनसेन और उनकी टीम आरसी 4000 प्रणाली की सामान्यता और पुन: प्रयोज्यता की कमी से चिंतित हो गई। उन्हें डर था कि प्रत्येक स्थापना के लिए एक अलग ऑपरेटिंग सिस्टम की आवश्यकता होगी, इसलिए उन्होंने आरसी 4000 के लिए सॉफ्टवेयर बनाने के नए और अधिक सामान्य तरीकों की जांच शुरू कर दी।Cite error: Closing </ref>
missing for <ref>
tag
ब्रिंच हैनसेन के काम के बाद, 1970 के दशक से माइक्रोकर्नेल विकसित किए गए हैं।Cite error: Closing </ref>
missing for <ref>
tag[4] और यह कर्नेल आईओएस, tvOS और वॉचओएस में भी प्रयोग किया जाता है। Windows NT, Windows NT 3.1|NT 3.1 के साथ शुरू होकर और Windows 11 के साथ जारी है, एक हाइब्रिड कर्नेल डिज़ाइन का उपयोग करता है। As of 2012[update], मैक-आधारित जीएनयू हर्ड भी कार्यात्मक है और आर्क लिनक्स और डेबियन के परीक्षण संस्करणों में सम्मलित है।
यद्यपि माइक्रोकर्नेल पर प्रमुख कार्य काफी हद तक समाप्त हो गया था, प्रयोगकर्ताओं ने विकास जारी रखा।[citation needed] इसके बाद से यह दिखाया गया है कि पहले के डिजाइनों की कई प्रदर्शन समस्याएं अवधारणा की मौलिक सीमा नहीं थीं, बल्कि इसके अतिरिक्त डिजाइनर की एकल-उद्देश्य प्रणालियों का उपयोग करने की इच्छा के कारण इनमें से कई सेवाओं को लागू करने की इच्छा थी।[citation needed] विधानसभा कोड सहित समस्या के लिए अधिक व्यावहारिक दृष्टिकोण का उपयोग करना और सॉफ़्टवेयर में सामान्य रूप से समर्थित अवधारणाओं को लागू करने के लिए प्रोसेसर पर भरोसा करना नाटकीय रूप से बेहतर प्रदर्शन के साथ माइक्रोकर्नेल की एक नई श्रृंखला का नेतृत्व करता है।
माइक्रोकर्नेल exokernel से निकटता से संबंधित हैं।[5] उनके पास हाइपरविजर के साथ भी बहुत कुछ है,Cite error: Closing </ref>
missing for <ref>
tag इनमें एक IPC सिस्टम कॉल सम्मलित है जो एक भेजने के साथ-साथ एक प्राप्त ऑपरेशन का समर्थन करता है, सभी IPC को समकालिक बनाता है, और रजिस्टरों में जितना संभव हो उतना डेटा पास करता है। इसके अतिरिक्त, Liedtke ने डायरेक्ट प्रोसेस स्विच की अवधारणा पेश की, जहां IPC निष्पादन के दौरान एक (अपूर्ण) संदर्भ स्विच प्रेषक से सीधे रिसीवर तक किया जाता है। यदि, जैसा कि L4 में है, संदेश का भाग या पूरा भाग रजिस्टरों में पारित किया जाता है, तो यह बिना किसी प्रतिलिपि के संदेश के इन-रजिस्टर भाग को स्थानांतरित कर देता है। इसके अतिरिक्त, शेड्यूलर को कॉल करने के ओवरहेड से बचा जाता है; यह आम मामले में विशेष रूप से फायदेमंद है जहां आईपीसी का प्रयोग दुरस्तह प्रकिया कॉल (आरपीसी) प्रकार के फैशन में क्लाइंट द्वारा सर्वर को आमंत्रित करने के लिए किया जाता है। एक अन्य अनुकूलन, जिसे लेज़ी शेड्यूलिंग कहा जाता है, IPC के दौरान तैयार कतार में IPC के दौरान ब्लॉक होने वाले थ्रेड्स को छोड़कर IPC के दौरान ट्रैवर्सिंग शेड्यूलिंग कतारों से बचता है। एक बार अनुसूचक के आह्वान के बाद, यह ऐसे धागों को उपयुक्त प्रतीक्षा कतार में ले जाता है। जैसा कि कई स्थितियों में अगले अनुसूचक आह्वान से पहले एक थ्रेड अनब्लॉक हो जाता है, यह दृष्टिकोण महत्वपूर्ण कार्य बचाता है। इसी तरह के दृष्टिकोण को QNX और MINIX 3 द्वारा अपनाया गया है।[citation needed]
प्रयोगों की एक श्रृंखला में, चेन और बरशाद ने मोनोलिथिक प्रतिशोध के स्मृति चक्र प्रति निर्देश (MCPI) की तुलना माइक्रोकर्नेल मच (कर्नेल) के साथ की, जो उपयोगकर्ता स्थान में चल रहे 4.3BSD यूनिक्स सर्वर के साथ संयुक्त है। उनके परिणामों ने उच्च MCPI द्वारा Mach के खराब प्रदर्शन की व्याख्या की और प्रदर्शित किया कि IPC अकेले सिस्टम ओवरहेड के लिए ज़िम्मेदार नहीं है, यह सुझाव देते हुए कि IPC पर विशेष रूप से केंद्रित अनुकूलन का सीमित प्रभाव होगा।Cite error: Closing </ref>
missing for <ref>
tag
डिवाइस ड्राइवर
डिवाइस ड्राइवर प्रायः प्रत्यक्ष मेमोरी एक्सेस (डीएमए) करते हैं, और इसलिए विभिन्न कर्नेल डेटा संरचनाओं सहित भौतिक मेमोरी के मनमाने स्थानों पर लिख सकते हैं। इसलिए ऐसे ड्राइवरों पर भरोसा किया जाना चाहिए। यह एक आम ग़लतफ़हमी है कि इसका मतलब है कि उन्हें कर्नेल का हिस्सा होना चाहिए। वास्तव में, एक ड्राइवर कर्नेल का हिस्सा होने के कारण स्वाभाविक रूप से अधिक या कम भरोसेमंद नहीं होता है।
उपयोक्ता स्थान में एक डिवाइस ड्राइवर चलाने के दौरान आवश्यक रूप से एक दुर्व्यवहार करने वाले ड्राइवर को होने वाली क्षति को कम नहीं करता है, व्यवहार में यह बग्गी (दुर्भावनापूर्ण के अतिरिक्त) ड्राइवरों की उपस्थिति में सिस्टम स्थिरता के लिए फायदेमंद है: ड्राइवर कोड द्वारा ही मेमोरी-एक्सेस उल्लंघन ( डिवाइस के विपरीत) अभी भी मेमोरी-मैनेजमेंट हार्डवेयर द्वारा पकड़ा जा सकता है। इसके अतिरिक्त, कई डिवाइस डीएमए-सक्षम नहीं हैं, उनके ड्राइवरों को उपयोगकर्ता स्थान में चलाकर अविश्वसनीय बनाया जा सकता है। हाल ही में, कंप्यूटरों की बढ़ती संख्या में IOMMUs की सुविधा है, जिनमें से कई का उपयोग डिवाइस की भौतिक मेमोरी तक पहुंच को प्रतिबंधित करने के लिए किया जा सकता है।[6] ऐतिहासिक रूप से, ड्राइवरों को कोई समस्या नहीं थी, क्योंकि उपकरणों की संख्या वैसे भी छोटी और भरोसेमंद थी, इसलिए उन्हें कर्नेल में रखने से डिज़ाइन सरल हो गया और संभावित प्रदर्शन समस्याओं से बचा गया। इसने यूनिक्स की पारंपरिक ड्राइवर-इन-द-कर्नेल शैली को जन्म दिया, रेफरी नाम = लायंस बुक >Lions, John (1 August 1977). स्रोत कोड के साथ यूनिक्स छठे संस्करण पर लायंस की टिप्पणी. Peer-To-Peer Communications. ISBN 978-1-57398-013-5.</ रेफ> लिनक्स, और विंडोज एनटी। विभिन्न प्रकार के बाह्य उपकरणों के प्रसार के साथ, ड्राइवर कोड की मात्रा में वृद्धि हुई और आधुनिक ऑपरेटिंग सिस्टम में कोड आकार में कर्नेल पर हावी हो गया।
आवश्यक घटक और न्यूनतम
जैसा कि एक माइक्रोकर्नेल को शीर्ष पर मनमाने ढंग से ऑपरेटिंग सिस्टम सेवाओं के निर्माण की अनुमति देनी चाहिए, इसे कुछ मुख्य कार्यक्षमता प्रदान करनी चाहिए। कम से कम, इसमें सम्मलित हैं:
- स्मृति सुरक्षा के प्रबंधन के लिए आवश्यक पता स्थान से निपटने के लिए कुछ तंत्र
- सीपीयू आवंटन, आमतौर पर थ्रेड (कंप्यूटिंग) या अनुसूचक सक्रियण को प्रबंधित करने के लिए कुछ निष्पादन अमूर्त
- इंटर-प्रोसेस कम्युनिकेशन, अपने स्वयं के एड्रेस स्पेस में चल रहे सर्वर को इनवॉइस करने के लिए आवश्यक है
यह न्यूनतम डिजाइन ब्रिनच हैनसेन के आरसी 4000 मल्टीप्रोग्रामिंग सिस्टम और आईबीएम के वीएम (ऑपरेटिंग सिस्टम) के हाइपरवाइजर द्वारा अग्रणी था। इसके बाद से लिडटके के न्यूनतम सिद्धांत में इसे औपचारिक रूप दिया गया है:
एक अवधारणा को माइक्रोकर्नल के अंदर तभी सहन किया जाता है जब इसे कर्नेल के बाहर ले जाया जाता है, यानी, प्रतिस्पर्धी कार्यान्वयन की अनुमति, सिस्टम की आवश्यक कार्यक्षमता के कार्यान्वयन को रोक देगा।[7]</ब्लॉककोट>
यूजरमोड प्रोग्राम में बाकी सब कुछ किया जा सकता है, हालांकि कुछ प्रोसेसर आर्किटेक्चर पर उपयोगकर्ता प्रोग्राम के रूप में कार्यान्वित डिवाइस ड्राइवर को I/O हार्डवेयर तक पहुंचने के लिए विशेष विशेषाधिकार की आवश्यकता होती है।
न्यूनता सिद्धांत से संबंधित, और माइक्रोकर्नेल डिज़ाइन के लिए समान रूप से महत्वपूर्ण, तंत्र और नीति का पृथक्करण है, यह वह है जो न्यूनतम कर्नेल के शीर्ष पर मनमाना सिस्टम के निर्माण को सक्षम बनाता है। कर्नेल में निर्मित कोई भी नीति उपयोक्ता स्तर पर अधिलेखित नहीं की जा सकती है और इसलिए माइक्रोकर्नेल की व्यापकता को सीमित करती है।[5]उपयोगकर्ता-स्तर के सर्वरों में लागू की गई नीति को सर्वरों को बदलकर बदला जा सकता है (या समान सेवाओं की पेशकश करने वाले प्रतिस्पर्धी सर्वरों के बीच एप्लिकेशन को चुनने दिया जा सकता है)।
दक्षता के लिए, अधिकांश माइक्रोकर्नेल में अनुसूचक होते हैं और न्यूनतम सिद्धांत और नीति-तंत्र पृथक्करण के सिद्धांत का उल्लंघन करते हुए टाइमर का प्रबंधन करते हैं।
माइक्रोकर्नेल-आधारित सिस्टम के स्टार्ट अप (बूटिंग) के लिए डिवाइस ड्राइवर की आवश्यकता होती है, जो कर्नेल का हिस्सा नहीं होते हैं। आमतौर पर इसका मतलब है कि वे बूट छवि में कर्नेल के साथ पैक किए गए हैं, और कर्नेल बूटस्ट्रैप प्रोटोकॉल का समर्थन करता है जो परिभाषित करता है कि ड्राइवर कैसे स्थित हैं और शुरू हुए हैं; यह L4 माइक्रोकर्नेल परिवार की पारंपरिक बूटस्ट्रैप प्रक्रिया है। कुछ माइक्रोकर्नेल कर्नेल के अंदर कुछ प्रमुख ड्राइवरों को रखकर इसे सरल बनाते हैं (न्यूनतम सिद्धांत का उल्लंघन करते हुए), लिंक्सओएस और मूल मिनिक्स इसके उदाहरण हैं। कुछ बूटिंग को आसान बनाने के लिए कर्नेल में फ़ाइल सिस्टम भी सम्मलित करते हैं। ए माइक्रोकर्नेल-आधारित सिस्टम मल्टीबूट संगत बूट लोडर के माध्यम से बूट हो सकता है। इस तरह के सिस्टम आमतौर पर प्रारंभिक बूटस्ट्रैप बनाने या बूटस्ट्रैपिंग जारी रखने के लिए OS इमेज को माउंट करने के लिए स्टेटिकली-लिंक्ड सर्वर को लोड करते हैं।
माइक्रोकर्नेल का एक प्रमुख घटक एक अच्छी इंटर-प्रोसेस संचार प्रणाली और वर्चुअल-मेमोरी-मैनेजर डिज़ाइन है जो पेज-फ़ॉल्ट हैंडलिंग को लागू करने और सुरक्षित तरीके से यूजरमोड सर्वर में स्वैप करने की अनुमति देता है। चूंकि सभी सेवाओं को यूजरमोड प्रोग्राम द्वारा निष्पादित किया जाता है, कार्यक्रमों के बीच संचार के कुशल साधन आवश्यक हैं, अखंड गुठली की तुलना में कहीं अधिक। IPC प्रणाली का डिज़ाइन एक माइक्रोकर्नेल बनाता या तोड़ता है। प्रभावी होने के लिए, IPC सिस्टम में न केवल कम ओवरहेड होना चाहिए, बल्कि CPU शेड्यूलिंग के साथ भी अच्छी तरह से इंटरैक्ट करना चाहिए।
प्रदर्शन
अधिकांश मुख्यधारा के प्रोसेसर पर, एक मोनोलिथिक प्रणाली की तुलना में एक माइक्रोकर्नेल-आधारित प्रणाली में एक सेवा प्राप्त करना स्वाभाविक रूप से अधिक महंगा है।[5]अखंड प्रणाली में, सेवा एकल सिस्टम कॉल द्वारा प्राप्त की जाती है, जिसके लिए दो मोड स्विच (प्रोसेसर की रिंग (कंप्यूटर सुरक्षा) या सीपीयू मोड में परिवर्तन) की आवश्यकता होती है। माइक्रोकर्नेल-आधारित प्रणाली में, एक सर्वर को IPC संदेश भेजकर और सर्वर से दूसरे IPC संदेश में परिणाम प्राप्त करके सेवा प्राप्त की जाती है। यदि ड्राइवरों को प्रक्रियाओं के रूप में कार्यान्वित किया जाता है, या प्रक्रियाओं के रूप में कार्यान्वित किए जाने पर फ़ंक्शन कॉल के लिए इसके लिए एक संदर्भ स्विच की आवश्यकता होती है। इसके अतिरिक्त, वास्तविक डेटा को सर्वर और बैक में पास करने से अतिरिक्त कॉपी ओवरहेड हो सकता है, जबकि एक अखंड प्रणाली में कर्नेल सीधे क्लाइंट के बफ़र्स में डेटा तक पहुँच सकता है।
इसलिए प्रदर्शन माइक्रोकर्नेल सिस्टम में एक संभावित मुद्दा है। मच (कर्नेल) और कोरसोस जैसे पहली पीढ़ी के माइक्रोकर्नेल के अनुभव से पता चला है कि उन पर आधारित सिस्टम बहुत खराब प्रदर्शन करते हैं।[8]हालांकि, जोचेन लिडटके ने दिखाया कि मच की प्रदर्शन समस्याएं खराब डिजाइन और कार्यान्वयन, विशेष रूप से मैक के अत्यधिक सीपीयू कैश फुटप्रिंट का परिणाम थीं।[7]Liedtke ने अपने स्वयं के L4 माइक्रोकर्नेल के साथ प्रदर्शित किया कि सावधानीपूर्वक डिजाइन और कार्यान्वयन के माध्यम से, और विशेष रूप से न्यूनतम सिद्धांत का पालन करके, IPC की लागत को मच की तुलना में परिमाण के एक क्रम से अधिक कम किया जा सकता है। L4 का IPC प्रदर्शन अभी भी आर्किटेक्चर की एक श्रृंखला में अजेय है।Cite error: Closing
</ref>
missing for<ref>
tag हालांकि, यह परियोजना कभी पूरी नहीं हुई।इस बीच यह दिखाया गया है कि उपयोगकर्ता-स्तरीय डिवाइस ड्राइवर गीगाबिट ईथरनेट जैसे उच्च-थ्रूपुट, उच्च-इंटरप्ट डिवाइस के लिए भी इन-कर्नेल ड्राइवरों के प्रदर्शन के करीब आ सकते हैं।[9] ऐसा प्रतीत होता है कि उच्च-प्रदर्शन बहु-सर्वर सिस्टम संभव हैं।
सुरक्षा
माइक्रोकर्नेल के सुरक्षा लाभों पर प्रायः चर्चा की जाती रही है।[10][11] सुरक्षा के संदर्भ में माइक्रो कर्नेल का न्यूनतम सिद्धांत, कुछ लोगों ने तर्क दिया है, कम से कम विशेषाधिकार के सिद्धांत का सीधा परिणाम है, जिसके अनुसार सभी कोड में केवल आवश्यक कार्यक्षमता प्रदान करने के लिए आवश्यक विशेषाधिकार होने चाहिए। न्यूनतमता के लिए आवश्यक है कि सिस्टम का विश्वसनीय कंप्यूटिंग बेस (TCB) न्यूनतम रखा जाए। चूंकि कर्नेल (कोड जो हार्डवेयर के विशेषाधिकार प्राप्त मोड में निष्पादित होता है) के पास किसी भी डेटा तक पहुंच नहीं है और इस प्रकार इसकी अखंडता या गोपनीयता का उल्लंघन कर सकता है, कर्नेल हमेशा टीसीबी का हिस्सा होता है। सुरक्षा-संचालित डिज़ाइन में इसे कम करना स्वाभाविक है।
परिणाम स्वरुप , माइक्रोकर्नेल डिज़ाइन का उपयोग उच्च-सुरक्षा अनुप्रयोगों के लिए डिज़ाइन किए गए सिस्टम के लिए किया गया है, जिसमें KeyKOS, अत्यंत विश्वसनीय ऑपरेटिंग सिस्टम और सैन्य सिस्टम सम्मलित हैं। वास्तव में उच्चतम आश्वासन स्तर (मूल्यांकन आश्वासन स्तर (ईएएल) 7) पर सामान्य मानदंड (सीसी) की एक स्पष्ट आवश्यकता है कि मूल्यांकन का लक्ष्य सरल हो, एक जटिल प्रणाली के लिए सच्ची विश्वसनीयता स्थापित करने की व्यावहारिक असंभवता की स्वीकृति। फिर से, सरल शब्द भ्रामक और खराब परिभाषित है। कम से कम रक्षा विभाग के भरोसेमंद कंप्यूटर सिस्टम मूल्यांकन मानदंड ने B3/A1 कक्षाओं में कुछ अधिक सटीक शब्दावली पेश की:
"The TCB shall [implement] complete, conceptually simple protection mechanisms with precisely defined semantics. Significant system engineering shall be directed toward minimizing the complexity of the TCB, as well as excluding from the TCB those modules that are not protection-critical."
— Department of Defense Trusted Computer System Evaluation Criteria2018 में, एशिया-पैसिफिक सिस्टम्स कॉन्फ्रेंस में प्रस्तुत एक पेपर ने दावा किया कि उस समय लिनक्स कर्नेल के लिए सभी प्रकाशित महत्वपूर्ण सामान्य कमजोरियों और एक्सपोजर की जांच करके माइक्रोकर्नेल मोनोलिथिक कर्नेल की तुलना में सुरक्षित रूप से सुरक्षित थे। अध्ययन ने निष्कर्ष निकाला कि औपचारिक रूप से सत्यापित माइक्रोकर्नेल में 40% मुद्दे बिल्कुल भी नहीं हो सकते हैं, और केवल 4% मुद्दे ऐसी प्रणाली में पूरी तरह से असंतुलित रहेंगे।[12]
तीसरी पीढ़ी
माइक्रोकर्नेल पर हाल ही में किया गया कार्य कर्नेल एपीआई के औपचारिक विनिर्देशों और एपीआई के सुरक्षा गुणों और कार्यान्वयन शुद्धता के औपचारिक प्रमाण पर ध्यान केंद्रित कर रहा है। इसका पहला उदाहरण ईआरओएस एपीआई के सरलीकृत मॉडल के आधार पर ईआरओएस में कारावास तंत्र का गणितीय प्रमाण है।[13] हाल ही में (2007 में) L4 माइक्रोकर्नेल परिवार के सुरक्षा मॉडल के गुणों का एक व्यापक सेट मशीन-जाँच किए गए सबूतों का प्रदर्शन किया गया था # उच्च आश्वासन: seL4, L4 का एक संस्करण।[14] इसने तीसरी पीढ़ी के माइक्रो कर्नेल के रूप में संदर्भित किया है,Cite error: Closing
</ref>
missing for<ref>
tag Redox (ऑपरेटिंग सिस्टम) और Fiasco.OC।[15]Cite error: Closing</ref>
missing for<ref>
tag
यह भी देखें
- कर्नेल (ऑपरेटिंग सिस्टम)
- एक्सोकर्नेल
- हाइब्रिड कर्नेल
- लोड करने योग्य कर्नेल मॉड्यूल
- अखंड गिरी
- माइक्रोसर्विसेज
- तनेनबौम-टोरवाल्ड्स बहस
- विश्वसनीय कंप्यूटिंग बेस
- यूनिकर्नेल
- बहु-पर्यावरण रीयल-टाइम
संदर्भ
- ↑ Herder, Jorrit N. (23 February 2005). "एक ट्रू माइक्रोकर्नेल ऑपरेटिंग सिस्टम की ओर" (PDF). minix3.org. Retrieved 22 June 2015.
- ↑ पढ़ें "अधिक पढ़ें". Retrieved 20 December 2016.
{{cite web}}
: Check|url=
value (help)- ↑ "2002 कंप्यूटर पायनियर पुरस्कार प्राप्तकर्ता". IEEE Computer Society. Retrieved 13 September 2016.
- ↑ "UNIX/Linux अनुप्रयोगों को Mac OS X में पोर्ट करना". Apple. Retrieved 26 April 2011.
- ↑ 5.0 5.1 5.2 Liedtke, Jochen (September 1996). "रियल माइक्रोकर्नेल की ओर". Communications of the ACM. 39 (9): 70–77. doi:10.1145/234215.234473. S2CID 2867357.
- ↑ Wong, William (27 April 2007). "I/O, I/O, इट्स ऑफ टू वर्चुअल वर्क वी गो". Electronic Design. Retrieved 8 June 2009.</ रेफ> यह उपयोगकर्ता-मोड ड्राइवरों को अविश्वसनीय बनने की भी अनुमति देता है। उपयोगकर्ता-मोड ड्राइवर वास्तव में माइक्रोकर्नेल से पहले के हैं। मिशिगन टर्मिनल सिस्टम (MTS), 1967 में, यूजर स्पेस ड्राइवर्स (इसकी फाइल सिस्टम सपोर्ट सहित) को सपोर्ट करता है, जो उस क्षमता के साथ डिजाइन किया जाने वाला पहला ऑपरेटिंग सिस्टम है। रेफरी>Alexander, Michael T. (1971). "मिशिगन टर्मिनल सिस्टम का संगठन और विशेषताएं". Proceedings of the November 16–18, 1971, Fall Joint Computer Conference. 40: 589–591. doi:10.1145/1478873.1478951. S2CID 14614148.
- ↑ 7.0 7.1 Cite error: Invalid
<ref>
tag; no text was provided for refs namedLiedtke_95
- ↑ Cite error: Invalid
<ref>
tag; no text was provided for refs namedChen_Bershad_93
- ↑ Leslie, Ben; Chubb, Peter; FitzRoy-Dale, Nicholas; Götz, Stefan; Gray, Charles; Macpherson, Luke; Potts, Daniel; Shen, Yueting; Elphinstone, Kevin; Heiser, Gernot (September 2005). "उपयोगकर्ता-स्तरीय डिवाइस ड्राइवर: प्रदर्शन हासिल किया". Journal of Computer Science and Technology. 20 (5): 654–664. doi:10.1007/s11390-005-0654-4. S2CID 1121537.
- ↑ Tanenbaum, Andrew S. "तनेनबौम-टोरवाल्ड्स बहस, भाग II".
- ↑ Tanenbaum, A., Herder, J. and Bos, H. (May 2006).
- ↑ Biggs, Simon; Lee, Damon; Heiser, Gernot (2018). "जूरी है: मोनोलिथिक OS डिज़ाइन त्रुटिपूर्ण है: माइक्रोकर्नेल-आधारित डिज़ाइन सुरक्षा में सुधार करते हैं". Proceedings of the 9th Asia-Pacific Workshop on Systems. Jeju Island, Republic of Korea: Association for Computing Machinery. pp. 1–7. doi:10.1145/3265723.3265733.
- ↑ Shapiro, Jonathan S.; Weber, Samuel. Verifying the EROS Confinement Mechanism. IEEE Conference on Security and Privacy. Archived from the original on 3 March 2016.
- ↑ Elkaduwe, Dhammika; Klein, Gerwin; Elphinstone, Kevin (2007). SEL4 माइक्रोकर्नेल का सत्यापित सुरक्षा मॉडल. submitted for publication.
- ↑ Cite error: Invalid
<ref>
tag; no text was provided for refs namedTUD
अग्रिम पठन
- Scientific articles about microkernels (on CiteSeerX), including:
- Dan Hildebrand (1992). "An Architectural Overview of QNX". Proceedings of the Workshop on Micro-kernels and Other Kernel Architectures: 113–126. CiteSeerX 10.1.1.459.4481. ISBN 1-880446-42-1. – the basic QNX reference.
- Tanenbaum, A., Herder, J. and Bos, H. (May 2006). "Can We Make Operating Systems Reliable and Secure?". Computer. 39 (5): 44–51. doi:10.1109/MC.2006.156. S2CID 99779. Archived from the original on 21 June 2017. Retrieved 3 April 2020.
{{cite journal}}
: CS1 maint: multiple names: authors list (link) -the basic reliable reference.- Black, D.L., Golub, D.B., Julin, D.P., Rashid, R.F., Draves, R.P., Dean, R.W., Forin, A., Barrera, J., Tokuda, H., Malan, G., and Bohman, D. (March 1992). "Microkernel Operating System Architecture and Mach". Journal of Information Processing. 14 (4).
{{cite journal}}
: CS1 maint: multiple names: authors list (link) – the basic Mach reference.- *Varhol, Peter D. (January 1994). "Small Kernels Hit It Big". Byte. Archived from the original on 7 March 2006. Retrieved 20 September 2017. An assessment of the present and future state of microkernel based OSes as of January 1994
- MicroKernel page from the Portland Pattern Repository
- The Tanenbaum–Torvalds debate
- The Tanenbaum-Torvalds Debate, 1992.01.29
- Tanenbaum, A. S. "Can We Make Operating Systems Reliable and Secure?".
- Torvalds, L. Linus Torvalds about the microkernels again, 2006.05.09
- Shapiro, J. "Debunking Linus's Latest".
- Tanenbaum, A. S. "Tanenbaum-Torvalds Debate: Part II".
यह:कर्नेल#माइक्रोकर्नेल फाई:कायट्टोर्जेस्टेलमैन यदिन#मिक्रोयडिन