मुखपृष्ठ » कैसे » लिनक्स कर्नेल क्या है और यह क्या करता है?

    लिनक्स कर्नेल क्या है और यह क्या करता है?


    कोड की 13 मिलियन से अधिक लाइनों के साथ, लिनक्स कर्नेल दुनिया की सबसे बड़ी ओपन सोर्स परियोजनाओं में से एक है, लेकिन एक कर्नेल क्या है और इसके लिए क्या उपयोग किया जाता है?

    तो क्या कर्नेल है?

    एक कर्नेल आसानी से बदली जाने वाली सॉफ़्टवेयर का निम्नतम स्तर है जो आपके कंप्यूटर में हार्डवेयर के साथ इंटरफेस करता है। यह अंतर-प्रक्रिया संचार (IPC) का उपयोग करते हुए एक दूसरे से जानकारी प्राप्त करने के लिए, भौतिक हार्डवेयर के लिए "उपयोगकर्ता मोड" में चल रहे आपके सभी अनुप्रयोगों को बाधित करने के लिए जिम्मेदार है, और प्रक्रियाओं को सर्वर के रूप में जाना जाता है।.

    विभिन्न प्रकार के गुठली

    बेशक, खरोंच से एक का निर्माण करते समय एक कर्नेल और वास्तु संबंधी विचारों के निर्माण के विभिन्न तरीके हैं। सामान्य तौर पर, अधिकांश गुठली तीन प्रकारों में से एक में आती हैं: अखंड, सूक्ष्मकण, और संकर। लिनक्स एक अखंड कर्नेल है जबकि OS X (XNU) और विंडोज 7 हाइब्रिड कर्नेल का उपयोग करते हैं। चलो तीन श्रेणियों का त्वरित दौरा करते हैं ताकि हम बाद में और अधिक विवरण में जा सकें.


    द्वारा छवि शहर पॉपकॉर्न

    microkernel
    एक माइक्रोकर्नल केवल प्रबंधन का दृष्टिकोण लेता है कि उसके पास क्या है: सीपीयू, मेमोरी और आईपीसी। एक कंप्यूटर में बहुत अधिक सब कुछ एक सहायक के रूप में देखा जा सकता है और उपयोगकर्ता मोड में संभाला जा सकता है। Microkernels में पोर्टेबिलिटी का एक फायदा है क्योंकि उन्हें चिंता करने की ज़रूरत नहीं है अगर आप अपना वीडियो कार्ड या यहां तक ​​कि अपना ऑपरेटिंग सिस्टम भी बदलते हैं क्योंकि ऑपरेटिंग सिस्टम अभी भी उसी तरह से हार्डवेयर तक पहुंचने की कोशिश करता है। Microkernels में मेमोरी और इंस्टाल स्पेस दोनों के लिए एक बहुत छोटा पदचिह्न होता है, और वे अधिक सुरक्षित होते हैं क्योंकि उपयोगकर्ता मोड में केवल विशिष्ट प्रक्रियाएँ चलती हैं जिनमें पर्यवेक्षक मोड के रूप में उच्च अनुमतियाँ नहीं होती हैं.

    पेशेवरों

    • पोर्टेबिलिटी
    • छोटा स्थापित पदचिह्न
    • छोटे स्मृति पदचिह्न
    • सुरक्षा

    विपक्ष

    • ड्राइवरों के माध्यम से हार्डवेयर अधिक सारगर्भित है
    • हार्डवेयर धीमी प्रतिक्रिया कर सकते हैं क्योंकि ड्राइवर उपयोगकर्ता मोड में हैं
    • जानकारी प्राप्त करने के लिए प्रक्रियाओं को एक कतार में इंतजार करना पड़ता है
    • प्रक्रियाओं को प्रतीक्षा किए बिना अन्य प्रक्रियाओं तक पहुंच नहीं मिल सकती है

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

    पेशेवरों

    • कार्यक्रमों के लिए हार्डवेयर की अधिक सीधी पहुंच
    • प्रक्रियाओं के लिए आसान प्रत्येक के बीच संवाद करने के लिए
    • यदि आपका डिवाइस समर्थित है, तो उसे बिना किसी अतिरिक्त इंस्टॉलेशन के काम करना चाहिए
    • प्रोसेसर तेजी से प्रतिक्रिया करता है क्योंकि प्रोसेसर समय के लिए कतार नहीं है

    विपक्ष

    • बड़े स्थापित पदचिह्न
    • बड़े स्मृति पदचिह्न
    • कम सुरक्षित है क्योंकि सब कुछ पर्यवेक्षक मोड में चलता है


    फ़्लिकर पर schoschie के माध्यम से छवि

    हाइब्रिड कर्नेल
    हाइब्रिड कर्नेल में उपयोगकर्ता मोड में चलाने के लिए और वे जो पर्यवेक्षक मोड में चलाना चाहते हैं उसे चुनने और चुनने की क्षमता है। अक्सर डिवाइस ड्राइवर्स और फाइलसिस्टम I / O जैसी चीजों को यूजर मोड में चलाया जाएगा जबकि IPC और सर्वर कॉल को सुपरवाइजर मोड में रखा जाएगा। यह दोनों दुनिया को सबसे अच्छा देता है लेकिन अक्सर हार्डवेयर निर्माता के अधिक काम की आवश्यकता होती है क्योंकि सभी चालक की जिम्मेदारी उनके ऊपर होती है। इसमें विलंबता की कुछ समस्याएं भी हो सकती हैं, जो कि माइक्रोकर्नेल के साथ निहित हैं.

    पेशेवरों

    • डेवलपर चुन सकता है और उपयोगकर्ता मोड में क्या चलाता है और पर्यवेक्षक मोड में क्या चलाता है
    • मोनोलिथिक कर्नेल की तुलना में छोटे फुटप्रिंट स्थापित करते हैं
    • अन्य मॉडलों की तुलना में अधिक लचीला

    विपक्ष

    • माइक्रोकर्ल के रूप में एक ही प्रक्रिया अंतराल से पीड़ित हो सकते हैं
    • डिवाइस ड्राइवरों को उपयोगकर्ता द्वारा प्रबंधित किया जाना चाहिए (आमतौर पर)

    जहां लिनक्स कर्नेल फ़ाइलें हैं?

    उबंटू में कर्नेल फ़ाइल, आपके / बूट फ़ोल्डर में संग्रहित है और इसे vmlinuz कहा जाता है-संस्करण. नाम vmlinuz यूनिक्स दुनिया से आता है जहां वे 60 के दशक में अपनी गुठली को बस "यूनिक्स" कहा करते थे, इसलिए लिनक्स ने अपने कर्नेल को "लिनक्स" कहना शुरू कर दिया जब यह पहली बार 90 के दशक में विकसित हुआ था.

    जब वर्चुअल मेमोरी को आसान मल्टीटास्किंग क्षमताओं के लिए विकसित किया गया था, तो "vm" को फ़ाइल के सामने रखा गया था ताकि यह दिखाया जा सके कि कर्नेल वर्चुअल मेमोरी के लिए है। थोड़ी देर के लिए लिनक्स कर्नेल को vmlinux कहा जाता था, लेकिन उपलब्ध बूट मेमोरी में फिट होने के लिए कर्नेल बहुत बड़ा हो गया था, इसलिए कर्नेल छवि को संपीड़ित किया गया था और यह दिखाने के लिए एंडिंग x को z में बदल दिया गया था ताकि इसे zlib संपीड़न के साथ संपीड़ित किया जा सके। यह समान संपीड़न हमेशा उपयोग नहीं किया जाता है, अक्सर LZMA या BZIP2 के साथ बदल दिया जाता है, और कुछ गुठली को बस zImage कहा जाता है.

    संस्करण क्रमांकन A.B.C.D प्रारूप में होगा जहाँ A.B संभवतः 2.6 होगा, C आपका संस्करण होगा, और D आपके पैच या फ़िक्सेस इंगित करता है.

    / बूट फोल्डर में initrd.img-version, system.map-version, और config-version नामक अन्य बहुत महत्वपूर्ण फाइलें भी होंगी। Initrd फ़ाइल का उपयोग एक छोटी रैम डिस्क के रूप में किया जाता है जो वास्तविक कर्नेल फ़ाइल को निकालता है और निष्पादित करता है। System.map फ़ाइल का उपयोग मेमोरी प्रबंधन के लिए कर्नेल के पूरी तरह से लोड होने से पहले किया जाता है, और यह कॉनफ़िल फ़ाइल को यह बताता है कि जब यह संकलित किया जा रहा है तो कर्नेल छवि में लोड करने के लिए कौन से विकल्प और मॉड्यूल हैं।.

    लिनक्स कर्नेल आर्किटेक्चर

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

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

    कल्पना कीजिए कि अगर आप रिबूट की आवश्यकता के बिना एक विंडोज सर्विस पैक में अपग्रेड कर सकते हैं ...

    कर्नेल मॉड्यूल

    क्या होगा यदि विंडोज के पास हर ड्राइवर पहले से ही उपलब्ध था और आपको सिर्फ उन ड्राइवरों को चालू करना था जिनकी आपको जरूरत थी? यह जरूरी है कि लिनक्स के लिए कर्नेल मॉड्यूल क्या करते हैं। कर्नेल मॉड्यूल, जिसे एक लोडेबल कर्नेल मॉड्यूल (LKM) के रूप में भी जाना जाता है, आपके सभी उपलब्ध मेमोरी का उपभोग किए बिना कर्नेल को आपके सभी हार्डवेयर के साथ काम करने के लिए आवश्यक है।.

    एक मॉड्यूल आमतौर पर डिवाइस, फाइल सिस्टम और सिस्टम कॉल जैसी चीजों के लिए बेस कर्नेल में कार्यक्षमता जोड़ता है। LKM में फ़ाइल एक्सटेंशन .ko है और आमतौर पर / lib / मॉड्यूल निर्देशिका में संग्रहीत किया जाता है। उनके मॉड्यूलर स्वभाव की वजह से आप मेन्यूकोनफिग कमांड के साथ स्टार्टअप के दौरान या लोड करने के लिए मॉड्यूल्स को सेट करके या लोड करके नहीं, आसानी से अपने कर्नेल को कस्टमाइज़ कर सकते हैं या अपनी / बूट / कॉन्फिगर फाइल को एडिट करके, या आप मॉडप्रो के साथ फ्लाई पर मॉड्यूल को लोड और अनलोड कर सकते हैं आदेश.

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

    एक कर्नेल जादू नहीं है, लेकिन यह किसी भी कंप्यूटर को ठीक से चलाने के लिए पूरी तरह से आवश्यक है। लिनक्स कर्नेल ओएस एक्स और विंडोज से अलग है क्योंकि इसमें कर्नेल स्तर पर ड्राइवर शामिल हैं और कई चीजों को "बॉक्स से बाहर" समर्थित बनाता है। उम्मीद है कि आपको थोड़ा और पता चल जाएगा कि आपका सॉफ्टवेयर और हार्डवेयर एक साथ कैसे काम करते हैं और आपको अपने कंप्यूटर को बूट करने के लिए किन फाइलों की जरूरत है.

    Kernel.org
    द्वारा छवि ingridtaylar