तो कर्नेल क्या है?
एक कर्नेल आसानी से बदलने योग्य सॉफ़्टवेयर का निम्नतम स्तर है जो आपके कंप्यूटर में हार्डवेयर के साथ इंटरफेस करता है। यह आपके सभी अनुप्रयोगों को इंटरफ़ेस करने के लिए ज़िम्मेदार है जो भौतिक हार्डवेयर पर "उपयोगकर्ता मोड" में चल रहे हैं, और इंटर-प्रोसेस संचार (आईपीसी) का उपयोग करके एक-दूसरे से जानकारी प्राप्त करने के लिए सर्वर के रूप में ज्ञात प्रक्रियाओं को अनुमति देते हैं।
कर्नेल के विभिन्न प्रकार
स्क्रैच से एक बनाते समय, कर्नेल और वास्तुकला के विचारों को बनाने के लिए, अलग-अलग तरीके हैं। आम तौर पर, अधिकांश कर्नल तीन प्रकारों में से एक में आते हैं: मोनोलिथिक, माइक्रोक्रोनर, और हाइब्रिड। लिनक्स एक मोनोलिथिक कर्नेल है जबकि ओएस एक्स (एक्सएनयू) और विंडोज 7 हाइब्रिड कर्नेल का उपयोग करते हैं। आइए तीन श्रेणियों का त्वरित दौरा करें ताकि हम बाद में अधिक जानकारी प्राप्त कर सकें।
द्वारा छवि अपटाउन पॉपकॉर्न
microkernel एक माइक्रोक्रोनर केवल उस प्रबंधन के दृष्टिकोण को लेता है जो उसके पास है: सीपीयू, मेमोरी, और आईपीसी। कंप्यूटर में बहुत कुछ सब कुछ सहायक के रूप में देखा जा सकता है और इसे उपयोगकर्ता मोड में संभाला जा सकता है। Microkernels पोर्टेबिलिटी का लाभ है क्योंकि अगर आप अपने वीडियो कार्ड या यहां तक कि अपने ऑपरेटिंग सिस्टम को तब तक बदलना चाहते हैं, जब तक ऑपरेटिंग सिस्टम अभी भी हार्डवेयर को उसी तरह एक्सेस करने का प्रयास करता है, तो उन्हें चिंता करने की ज़रूरत नहीं है। माइक्रोकर्नल्स में स्मृति और स्थापित स्थान दोनों के लिए बहुत छोटा पदचिह्न भी होता है, और वे अधिक सुरक्षित होते हैं क्योंकि उपयोगकर्ता मोड में केवल विशिष्ट प्रक्रियाएं चलती हैं जिनके पास पर्यवेक्षक मोड के रूप में उच्च अनुमति नहीं होती है।
पेशेवरों
- पोर्टेबिलिटी
- छोटे पद पदचिह्न स्थापित करें
- छोटी स्मृति पदचिह्न
- सुरक्षा
विपक्ष
- हार्डवेयर ड्राइवरों के माध्यम से अधिक सार तत्व है
- हार्डवेयर धीमे प्रतिक्रिया दे सकता है क्योंकि ड्राइवर उपयोगकर्ता मोड में हैं
- जानकारी प्राप्त करने के लिए प्रक्रियाओं को कतार में इंतजार करना पड़ता है
- प्रक्रियाओं को प्रतीक्षा किए बिना अन्य प्रक्रियाओं तक पहुंच नहीं मिल सकती है
मोनोलिथिक कर्नेल मोनोलिथिक कर्नेल microkernels के विपरीत हैं क्योंकि वे न केवल सीपीयू, मेमोरी, और आईपीसी शामिल हैं, लेकिन उनमें डिवाइस ड्राइवर, फ़ाइल सिस्टम प्रबंधन और सिस्टम सर्वर कॉल जैसी चीजें भी शामिल हैं। मोनोलिथिक कर्नेल हार्डवेयर और मल्टीटास्किंग तक पहुंचने के लिए बेहतर होते हैं क्योंकि यदि किसी प्रोग्राम को मेमोरी या अन्य प्रक्रिया से जानकारी प्राप्त करने की आवश्यकता होती है तो इसे एक्सेस करने के लिए एक और सीधी रेखा होती है और चीजों को पूरा करने के लिए कतार में इंतजार नहीं करना पड़ता है। हालांकि यह समस्याएं पैदा कर सकता है क्योंकि अधिकतर चीजें जो पर्यवेक्षक मोड में चलती हैं, उतनी ही चीजें जो आपके सिस्टम को नीचे ला सकती हैं अगर कोई सही तरीके से व्यवहार नहीं करता है।
पेशेवरों
- कार्यक्रमों के लिए हार्डवेयर के लिए अधिक सीधी पहुंच
- प्रक्रियाओं के लिए एक दूसरे के बीच संवाद करने के लिए आसान है
- यदि आपका डिवाइस समर्थित है, तो इसे अतिरिक्त इंस्टॉलेशन के साथ काम करना चाहिए
- प्रक्रियाएं तेजी से प्रतिक्रिया करती हैं क्योंकि प्रोसेसर समय के लिए कोई कतार नहीं है
विपक्ष
- बड़े स्थापित पदचिह्न
- बड़ी मेमोरी पदचिह्न
- कम सुरक्षित क्योंकि सबकुछ पर्यवेक्षक मोड में चलता है
हाइब्रिड कर्नेल हाइब्रिड कर्नेल में उपयोगकर्ता मोड में क्या चलाना है और वे पर्यवेक्षक मोड में क्या चलाना चाहते हैं, इसे चुनने और चुनने की क्षमता रखते हैं। कई बार डिवाइस ड्राइवर और फाइल सिस्टम I / O जैसी चीजें उपयोगकर्ता मोड में चलती हैं जबकि आईपीसी और सर्वर कॉल पर्यवेक्षक मोड में रखे जाएंगे। यह दोनों दुनिया के सर्वश्रेष्ठ प्रदान करता है लेकिन अक्सर हार्डवेयर निर्माता के अधिक काम की आवश्यकता होती है क्योंकि सभी ड्राइवर जिम्मेदारी उनके ऊपर होती है। इसमें कुछ विलंबता समस्याएं भी हो सकती हैं जो microkernels के साथ निहित है।
पेशेवरों
- डेवलपर उपयोगकर्ता मोड में क्या चलता है और पर्यवेक्षक मोड में क्या चलता है चुन सकता है और चुन सकता है
- मोनोलिथिक कर्नेल की तुलना में छोटे पदचिह्न स्थापित करें
- अन्य मॉडलों की तुलना में अधिक लचीला
विपक्ष
- Microkernel के रूप में एक ही प्रक्रिया अंतराल से पीड़ित हो सकता है
- डिवाइस ड्राइवरों को उपयोगकर्ता द्वारा प्रबंधित करने की आवश्यकता है (आमतौर पर)
लिनक्स कर्नेल फ़ाइलें कहां हैं?
उबंटू में कर्नेल फ़ाइल आपके / बूट फ़ोल्डर में संग्रहीत है और इसे vmlinuz-संस्करण। नाम vmlinuz यूनिक्स दुनिया से आता है जहां वे 60 के दशक में अपने कर्नेल को "यूनिक्स" वापस कॉल करते थे, इसलिए लिनक्स ने अपने कर्नेल "लिनक्स" को कॉल करना शुरू किया जब इसे पहली बार 90 के दशक में विकसित किया गया था।
जब वर्चुअल मेमोरी को आसान मल्टीटास्किंग क्षमताओं के लिए विकसित किया गया था, तो फ़ाइल के सामने "vm" डाला गया था ताकि यह दिखाया जा सके कि कर्नेल वर्चुअल मेमोरी का समर्थन करता है। थोड़ी देर के लिए लिनक्स कर्नेल को vmlinux कहा जाता था, लेकिन कर्नेल उपलब्ध बूट मेमोरी में फिट होने के लिए बहुत बड़ा हो गया था, इसलिए कर्नेल छवि संपीड़ित हो गई थी और अंत में एक्स को ज़्लिब संपीड़न के साथ संपीड़ित करने के लिए एक ज़ेड में बदल दिया गया था। यह वही संपीड़न हमेशा उपयोग नहीं किया जाता है, अक्सर एलजेएमएमए या बीजेआईपी 2 के साथ प्रतिस्थापित किया जाता है, और कुछ कर्नल को बस ज़ीमेज कहा जाता है।
संस्करण संख्या एबीसीसी प्रारूप में होगी जहां एबी शायद 2.6 हो जाएगा, सी आपका संस्करण होगा, और डी आपके पैच या फिक्सेस को इंगित करता है।
लिनक्स कर्नेल आर्किटेक्चर
चूंकि लिनक्स कर्नेल मोनोलिथिक है, इसलिए इसका सबसे बड़ा पदचिह्न और अन्य प्रकार के कर्नल पर सबसे जटिलता है। यह एक डिज़ाइन फीचर था जो लिनक्स के शुरुआती दिनों में काफी बहस के तहत था और अभी भी एक ही डिज़ाइन त्रुटियों को लेता है जो मोनोलिथिक कर्नेल के निहित हैं।
एक बात यह है कि लिनक्स कर्नेल डेवलपर्स को इन त्रुटियों के आसपास जाना था, कर्नेल मॉड्यूल बनाना था जिसे रनटाइम पर लोड और अनलोड किया जा सकता था, जिसका अर्थ है कि आप फ्लाई पर अपने कर्नेल की विशेषताओं को जोड़ या निकाल सकते हैं। यह कर्नेल को केवल हार्डवेयर कार्यक्षमता जोड़ने से परे जा सकता है, जो निम्न स्तर वर्चुअलाइजेशन जैसे सर्वर प्रक्रियाओं को चलाने वाले मॉड्यूल को शामिल कर सकता है, लेकिन यह कुछ मामलों में आपके कंप्यूटर को रीबूट करने की आवश्यकता के बिना पूरे कर्नेल को प्रतिस्थापित करने की अनुमति भी दे सकता है।
कल्पना करें कि क्या आप किसी भी विंडोज सर्विस पैक में अपग्रेड किए बिना कभी भी रीबूट करने की आवश्यकता के बिना अपग्रेड कर सकते हैं …
कर्नेल मॉड्यूल
एक मॉड्यूल आमतौर पर डिवाइस कर्नेल, फाइल सिस्टम और सिस्टम कॉल जैसी चीजों के लिए बेस कर्नेल को कार्यक्षमता जोड़ता है। एलकेएम में फ़ाइल एक्सटेंशन.ko है और आमतौर पर / lib / मॉड्यूल निर्देशिका में संग्रहीत किया जाता है। उनके मॉड्यूलर प्रकृति के कारण आप मेन्यूनफ़िग कमांड के साथ स्टार्टअप के दौरान लोड करने या लोड करने के लिए मॉड्यूल सेट करके या अपने / boot / config फ़ाइल को संपादित करके आसानी से अपने कर्नेल को कस्टमाइज़ कर सकते हैं, या आप फ्लाई पर मॉड्यूल को लोड और अनलोड कर सकते हैं आदेश।
तीसरे पक्ष और बंद स्रोत मॉड्यूल कुछ वितरणों में उपलब्ध हैं, जैसे उबंटू, और डिफ़ॉल्ट रूप से स्थापित नहीं हो सकते हैं क्योंकि मॉड्यूल के लिए स्रोत कोड उपलब्ध नहीं है। सॉफ़्टवेयर के डेवलपर (यानी एनवीडिया, एटीआई, दूसरों के बीच) स्रोत कोड प्रदान नहीं करते हैं बल्कि वे अपने मॉड्यूल का निर्माण करते हैं और वितरण के लिए आवश्यक.ko फाइलों को संकलित करते हैं। हालांकि ये मॉड्यूल बीयर के रूप में स्वतंत्र हैं, वे भाषण में मुक्त नहीं हैं और इस प्रकार कुछ वितरणों द्वारा शामिल नहीं हैं क्योंकि रखरखावकर्ता इसे गैर-मुक्त सॉफ्टवेयर प्रदान करके कर्नेल को "संत" मानते हैं।
एक कर्नेल जादू नहीं है, लेकिन यह किसी भी कंप्यूटर को ठीक से चलने के लिए पूरी तरह से आवश्यक है। लिनक्स कर्नेल ओएस एक्स और विंडोज से अलग है क्योंकि इसमें कर्नेल स्तर पर ड्राइवर शामिल हैं और "बॉक्स से बाहर" समर्थित कई चीजें हैं। उम्मीद है कि आप अपने सॉफ्टवेयर और हार्डवेयर को कैसे काम करते हैं और आपके कंप्यूटर को बूट करने के लिए आपको कौन सी फाइलों की आवश्यकता है, इस बारे में कुछ और पता चल जाएगा।
Kernel.org द्वारा छवि ingridtaylar