लिनक्स को एक अखंड कर्नेल क्यों कहा जाता है?


208

मैंने पढ़ा कि लिनक्स एक अखंड कर्नेल है। क्या अखंड कर्नेल का अर्थ संपूर्ण कर्नेल कोड को एक निष्पादन में जोड़ना और जोड़ना है?

यदि लिनक्स मॉड्यूल का समर्थन करने में सक्षम है, तो सभी सबसिस्टम को मॉड्यूल में क्यों न तोड़ें और आवश्यकता पड़ने पर लोड करें? उस स्थिति में, कर्नेल को शुरू में सभी मॉड्यूल को लोड नहीं करना पड़ता है और मॉड्यूल में फ़ंक्शन का एक सूचकांक बनाए रख सकता है और आवश्यक होने पर उन्हें लोड कर सकता है।

जवाबों:


290

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

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

मॉड्यूलर कर्नेल शब्द को भ्रमित करने के लिए कुछ भी नहीं है, बल्कि अखंड। कुछ अखंड गुठली को मॉड्यूलर (जैसे लिनक्स) होने के लिए संकलित किया जा सकता है, क्या मायने रखता है कि मॉड्यूल को उसी स्थान से डाला जाता है और उसी स्थान से चलता है जो कोर कार्यक्षमता (कर्नेल स्थान) को संभालता है।

माइक्रो कर्नेल के लिए लाभ यह है कि किसी भी विफल सेवा को आसानी से फिर से शुरू किया जा सकता है, उदाहरण के लिए, रूट फाइल सिस्टम एबॉर्ट फेंकता है तो कोई कर्नेल रुकावट नहीं है। यह एक नुकसान के रूप में भी देखा जा सकता है, हालांकि, क्योंकि यह बहुत महत्वपूर्ण कीड़े छिपा सकता है (या उन्हें ऐसा करने के लिए नहीं-महत्वपूर्ण लगता है, क्योंकि समस्या लगातार खुद को ठीक करने लगती है)। इसे उन परिदृश्यों में एक बड़े लाभ के रूप में देखा जाता है जहाँ आप आसानी से किसी चीज़ को ठीक से ठीक नहीं कर सकते हैं क्योंकि इसे तैनात किया गया है।

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

एक काम करने के लिए सबसे छोटा रास्ता, स्थिर कर्नेल अखंड दृष्टिकोण है। या तो दृष्टिकोण एक POSIX इंटरफ़ेस की पेशकश कर सकता है, जहां कर्नेल का डिज़ाइन किसी के लिए थोड़े रुचि का हो जाता है, जो किसी दिए गए डिज़ाइन पर चलने के लिए कोड लिखना चाहते हैं।

मैं उत्पादन में लिनक्स (अखंड) का उपयोग करता हूं। हालांकि, कर्नेल विकास के साथ मेरी अधिकांश शिक्षा, हैकिंग या टिंकरिंग एक माइक्रोकर्नल, विशेष रूप से हेलेनओएस में जाती है

संपादित करें

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

Linus "my first, and hopefully last flamefest" Torvalds

जाहिर है, यह तेनबाम की भविष्यवाणी से ज्यादा सच नहीं था कि x86 जल्द ही अप्रचलित हो जाएगा।

ध्यान दें:

जब मैं "मिनिक्स" कहता हूं, तो मैं मिनिक्स 3 का अर्थ नहीं करता हूं। इसके अलावा, जब मैंने एचयूआरडी का उल्लेख किया है, तो मैं मच माइक्रोकर्नल का संदर्भ दे रहा हूं। दूसरों के हालिया काम को नापसंद करना मेरा उद्देश्य नहीं है।


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

2
@ मर्टिन लेवरेज: प्रभावित होने से ज्यादा निराश :) मैंने अपना जवाब उस बात को प्रतिबिंबित करने के लिए संपादित किया।
टिम पोस्ट

25
@DigitalRoss: इसका जवाब देने के बाद आपको मेरा इनबॉक्स देखना चाहिए, मिनिक्स और माच के उत्साही लोगों की तुलना में लिनुस नामी है।
टिम पोस्ट


3
@p_l मुझे लगता है कि यह उस समय के बहुत करीब है, जहां हमें सूक्ष्म, अखंड और संकर के बीच अंतर के बारे में बात करने की आवश्यकता है। वह एक सुंदर अच्छा सवाल :) हो सकता है
टिम पोस्ट

15

अखंड कर्नेल का अर्थ है कि पूरा ऑपरेटिंग सिस्टम कर्नेल मोड में चलता है (यानी हार्डवेयर द्वारा अत्यधिक विशेषाधिकार प्राप्त)। यही है, ओएस का कोई भी हिस्सा उपयोगकर्ता मोड (कम विशेषाधिकार) में नहीं चलता है। केवल ओएस के शीर्ष पर अनुप्रयोग उपयोगकर्ता मोड में चलते हैं।

गैर-अखंड कर्नेल ऑपरेटिंग सिस्टम में, जैसे कि विंडोज, ओएस का एक बड़ा हिस्सा स्वयं उपयोगकर्ता मोड में चलता है।

या तो मामले में, ओएस अत्यधिक मॉड्यूलर हो सकता है।


9
विंडोज सबसे निश्चित रूप से एक अखंड कर्नेल है।
एडम रोसेनफील्ड

7
@ एडम: मैं असहमत हूं। पुरानी शैली 16-बिट Windows था , अखंड कर्नेल के रूप में विंडोज 95 था और इस तरह। लेकिन विंडोज के NT- आधारित संस्करण, जिसमें सभी सर्वर संस्करण प्लस विस्टा और 7 शामिल हैं, स्पष्ट रूप से आपके द्वारा उपयोग किए जाने वाले "माइक्रोकर्नेल" की परिभाषा पर निर्भर करते हुए, सूक्ष्म रूप से या शायद हाइब्रिड हैं।
सीज़रगॉन

8
सिर्फ इसलिए कि मुद्रक ड्राइवर रिंग0 में नहीं चलते हैं, यह इसे माइक्रोक्रेन नहीं बनाता है :)
कैफे

7
@ कैफ: मेरा सुझाव है कि आप en.wikipedia.org/wiki/Windows_NT_kernel और en.wikipedia.org/wiki/Comparison_of_operating_system_kernels पर एक नज़र डालें । आप देखेंगे कि विस्टा और 7 और सर्वर सहित विंडोज एनटी और उनके उत्तराधिकारी, "हाइब्रिड कर्नेल" के रूप में वर्णित हैं। ओएस के दो बड़े सबसिस्टम पूरी तरह से उपयोगकर्ता मोड में चलते हैं, न कि केवल एक प्रिंटर ड्राइवर। :-)
सिजेरॉन

7
मेरी टिप्पणी कुछ हद तक जुबान से जुडी थी - "हाइब्रिड" पदनाम ऐसा लगता है कि बेकार है।
कैफे

10

; tl-dr - नहीं, लिनक्स हमेशा अखंड होता है।

लिनक्स मॉड्यूल कुछ अर्थों में मॉड्यूलर हो सकता है । जैसा कि अन्य ने उल्लेख किया है कि मोनोलिथिक आमतौर पर एक सूक्ष्म कर्नेल बनाम अखंड कर्नेल का प्रतिनिधित्व करता है । एक पारंपरिक माइक्रोकर्नल में केवल ये विशेषताएं होती हैं,

  1. निर्धारण
  2. स्मृति प्रबंधन
  3. अंतर-प्रक्रिया संचार

मुख्य कर्नेल में कोई हार्डवेयर ड्राइवर , प्रोटोकॉल स्टैक , फाइल सिस्टम , सस्पेंड / रिज्यूम , क्लॉक मैनेजमेंट आदि नहीं हैं। ये चीजें किसी भी उपयोगकर्ता के कार्य के समान हैं (हालांकि वे MMU / अनुसूचक के माध्यम से विभिन्न विशेषाधिकार हो सकते हैं)।


ताननबौम की भविष्यवाणियाँ

  1. माइक्रोकर्नेल भविष्य हैं
  2. x86 बाहर मर जाएगा और RISC आर्किटेक्चर बाजार पर हावी हो जाएगा
  3. (तब से 5 साल) हर कोई एक नि: शुल्क जीएनयू ओएस चला रहा होगा

पीसी और सर्वर प्रोग्रामर हंस सकते हैं, लेकिन अस्तित्व में सेल फोन के बहुमत के लिए दो और तीन निश्चित रूप से सच हैं। ब्लैकबेरी QNX एक सफलता थी, तो सभी खातों पर तानबाम सही होगा।

इसके अलावा, कई एल 1-हाइपरविजर के नीचे एक माइक्रो-कर्नेल है। इसका कारण यह है कि हाइपर-विज़ोर आमतौर पर संदर्भ स्विच के पास बहुत कुछ नहीं करता है ।

जाहिर तौर पर तीन लिनक्स की सफलता की भविष्यवाणी करते हैं। ;-)


माइक्रोकर्नेल के लिए एक तर्क यह है कि सभी अखंड उप-प्रणालियों को एक समय में कई मूल्यों को सिंक्रनाइज़ करने की आवश्यकता होती है। ऐसा करने के लिए, उन्हें ताले का उपयोग करना होगा और समानांतर आर्किटेक्चर तक विस्तारित होने पर अमदहल के कानून से पीड़ित होंगे । काउंटर यह है कि माइक्रोकेर्नल के परिणामस्वरूप बहुत सारे आईपीसी संदेश आते हैं।

एक प्रमुख विकास एक अखंड कर्नेल में विवाद से बचने के लिए लॉक-फ्री प्रोग्रामिंग का उपयोग है । यह IPC ओवरहेड को कम करते हुए एक अखंड कर्नेल में लॉकिंग से बचा जाता है। हाल ही में सभी CPU लॉक-फ्री एल्गोरिदम के लिए बेहतर प्राइमरी को शामिल करने के लिए अपने ISA का विस्तार कर रहे हैं । इसलिए लिनक्स शायद कुछ समय के लिए एक अखंड कर्नेल बना रहेगा।


1
हां, मुझे पता है कि तेनबाम का मतलब हर्ड था। लेकिन जीएनयू ने लिनक्स पर स्विच कर लिया है इसलिए शब्दांकन मजाकिया है।
आर्टलेस शोर

मोबाइल उपकरणों के लिए x86 के उपयोग में कमी क्यों है? क्या अन्य आर्किटेक्चर फायदेमंद है?
अब्दुल


हां, वे महत्वपूर्ण हैं। एक x86 एसओसी (सिस्टम-ऑन-चिप) बनाना मुश्किल है। एक x86 बनाने के लिए मानक एचडीएल कोड नहीं है जो एक एसओसी विक्रेता (ब्रॉडकॉम, फ़्रीसेल, आदि) खरीद सकता है।
आर्टलेस शोर

9

से विकिपीडिया :

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

दूसरी ओर विंडोज के हाल के संस्करण हाइब्रिड कर्नेल का उपयोग करते हैं ।

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


7
यदि मैं कभी भी कर्नेल स्पेस में कुछ भी करता हूं, तो मुझे "हाइब्रिक केर्केल" का उपयोग करना याद रखना होगा। SCNR ;-)
Jürgen A. Erhard

1
विंडोज एनटी हमेशा एक हाइब्रिड सिस्टम था। कर्नेल वास्तव में हाइब्रिड नहीं हो सकता है, लेकिन आप इस सवाल में भाग लेते हैं कि आप इसके भाग के रूप में क्या गिनते हैं (उदाहरण के लिए winapi, उपयोगकर्ता-अंतरिक्ष सेवा के रूप में लागू किया गया है)
p_l

5

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

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


अपने स्रोतों की जाँच करें। विकिपीडिया एकजुट है। www2.cs.uh.edu/~rzheng/course/COSC6397sp2008/…
monksy

2

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

मुझे लगता है कि यह पोस्ट आपको अवधारणा को समझने में अधिक मदद करेगी।

http://learnlinuxconcepts.blogspot.in/2014/03/what-are-monolithic-and-micro-kernels.html


हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं।
स्कॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.