
लिनक्स कर्नेल प्रबंधक और गतिविधि मॉनिटर 🐧💻
कर्नेल ऑपरेटिंग सिस्टम का वह हिस्सा है जो हार्डवेयर और सॉफ्टवेयर घटकों के बीच परस्पर क्रिया को सुविधाजनक बनाता है। अधिकांश सिस्टमों पर, यह बूटलोडर के बाद स्टार्टअप पर लोड होता है और I/O अनुरोधों के साथ-साथ कीबोर्ड, मॉनिटर, नेटवर्क एडेप्टर और स्पीकर जैसे परिधीय उपकरणों को संभालता है। आमतौर पर, कर्नेल मेमोरी प्रबंधन, प्रक्रिया प्रबंधन, डिवाइस प्रबंधन, सिस्टम कॉल और सुरक्षा के लिए जिम्मेदार होता है।
एप्लिकेशन ऑपरेटिंग सिस्टम से सेवा का अनुरोध करने के लिए सिस्टम कॉल तंत्र का उपयोग करते हैं और अधिकांश समय, यह अनुरोध संबंधित कर्नेल फ़ंक्शन को लागू करने के लिए ऑपरेटिंग सिस्टम द्वारा प्रदान की गई लाइब्रेरी का उपयोग करके कर्नेल को भेजा जाता है। जबकि कर्नेल ये निम्न-स्तरीय कार्य करता है, यह मेमोरी के एक अलग हिस्से में रहता है जिसे संरक्षित कर्नेल स्पेस कहा जाता है, जो एप्लिकेशन और सिस्टम के अन्य भागों के लिए सुलभ नहीं होता है। इसके विपरीत, ब्राउज़र, टेक्स्ट एडिटर, विंडो मैनेजर या ऑडियो/वीडियो प्लेयर जैसे एप्लिकेशन मेमोरी के एक अलग क्षेत्र, यूज़र स्पेस का उपयोग करते हैं। यह पृथक्करण उपयोगकर्ता डेटा और कर्नेल डेटा को एक-दूसरे के साथ हस्तक्षेप करने और अस्थिरता और धीमी गति पैदा करने से रोकता है, साथ ही खराबी वाले एप्लिकेशन प्रोग्राम को पूरे ऑपरेटिंग सिस्टम को क्रैश करने से भी रोकता है।
सिस्टम कॉल और संसाधनों के प्रबंधन के विभिन्न तरीकों के कारण कर्नेल डिज़ाइन अलग-अलग होते हैं। उदाहरण के लिए, जहाँ मोनोलिथिक कर्नेल गति के लिए सभी ऑपरेटिंग सिस्टम निर्देशों को एक ही एड्रेस स्पेस में चलाते हैं, वहीं माइक्रोकर्नेल मॉड्यूलरिटी के लिए उपयोगकर्ता और कर्नेल सेवाओं के लिए अलग-अलग स्पेस का उपयोग करते हैं। इनके अलावा, हाइब्रिड कर्नेल, नैनोकर्नेल और एक्सोकर्नेल भी हैं। हाइब्रिड कर्नेल आर्किटेक्चर माइक्रोकर्नेल और मोनोलिथिक कर्नेल के पहलुओं के संयोजन पर आधारित है।
लिनक्स कर्नेल एक ओपन-सोर्स, मोनोलिथिक और यूनिक्स-जैसा ऑपरेटिंग सिस्टम कर्नेल है जो लिनक्स वितरणों, राउटर जैसी विभिन्न एम्बेडेड प्रणालियों और सभी एंड्रॉइड-आधारित सिस्टम में उपयोग किया जाता है। लिनस टॉर्वाल्ड्स ने 1991 में लिनक्स कर्नेल की कल्पना की और इसे बनाया, और आज भी हजारों डेवलपर्स द्वारा इसका विकास जारी है। यह मुक्त और ओपन सोर्स सॉफ्टवेयर का एक प्रमुख उदाहरण है और इसका उपयोग अन्य मुक्त सॉफ्टवेयर परियोजनाओं, विशेष रूप से GNU ऑपरेटिंग सिस्टम में किया जाता है। हालाँकि लिनक्स-आधारित ऑपरेटिंग सिस्टम अधिकांश कंप्यूटिंग पर हावी हैं, फिर भी उनमें कुछ डिज़ाइन दोष हैं जो लिनक्स के शुरुआती दिनों में काफी बहस का विषय थे। उदाहरण के लिए, इसमें अन्य प्रकार के कर्नेल की तुलना में सबसे बड़ा पदचिह्न और सबसे अधिक जटिलता है। लेकिन यह एक डिज़ाइन विशेषता है जो मोनोलिथिक कर्नेल में निहित होती है। इस प्रकार के डिज़ाइन मुद्दों ने डेवलपर्स को लिनक्स कर्नेल में नई सुविधाएँ और तंत्र जोड़ने के लिए प्रेरित किया, जो अन्य कर्नेल में नहीं होते हैं।
मानक मोनोलिथिक कर्नेल के विपरीत, लिनक्स कर्नेल मॉड्यूलर भी है, जो लोडेबल कर्नेल मॉड्यूल (LKM) को स्वीकार करता है जो आमतौर पर नए हार्डवेयर (डिवाइस ड्राइवर के रूप में) और/या फ़ाइल सिस्टम के लिए समर्थन जोड़ने, या सिस्टम कॉल जोड़ने के लिए उपयोग किए जाते हैं। चूंकि LKM को रनटाइम पर सिस्टम में लोड और अनलोड किया जा सकता है, उनके पास रीबूट और पुन: संकलन के बिना कर्नेल का विस्तार करने का लाभ है। इस प्रकार, मॉड्यूल द्वारा प्रदान की गई कर्नेल कार्यक्षमताएं उपयोग के बिना मेमोरी में नहीं रहेंगी, और संबंधित मॉड्यूल को मेमोरी और अन्य संसाधनों को मुक्त करने के लिए अनलोड किया जा सकता है।
लोडेबल कर्नेल मॉड्यूल लिनक्स में .ko (kernel object) एक्सटेंशन के साथ /lib/modules में स्थित होते हैं। जहाँ lsmod कमांड का उपयोग लोड किए गए कर्नेल मॉड्यूल को सूचीबद्ध करने के लिए किया जा सकता है, वहीं modprobe या insmod/rmmod का उपयोग कर्नेल मॉड्यूल को लोड या अनलोड करने के लिए किया जाता है। insmod/rmmod का उपयोग modprobe से स्वतंत्र मॉड्यूल के लिए किया जाता है और /lib/modules/$(uname -r) में स्थापना की आवश्यकता नहीं होती है।
यहाँ लिनक्स कर्नेल मॉड्यूल का एक सरल उदाहरण है जो लोड और अनलोड होने पर एक संदेश प्रिंट करता है। मॉड्यूल के निर्माण और स्थापना चरणों को Makefile का उपयोग करके नीचे दिखाया गया है।``` make # build sudo make install # install sudo modprobe lkm_example # load sudo modprobe -r lkm_example # unload
[dmesg](https://linux.die.net/man/8/dmesg) कमांड का उपयोग नीचे कर्नेल के संदेश बफर को प्राप्त करने के लिए किया जाता है।```
[16994.295552] [+] Example kernel module loaded.
[16996.325674] [-] Example kernel module unloaded.
kmon लिनक्स कर्नेल मॉड्यूल्स के प्रबंधन और कर्नेल गतिविधियों की निगरानी के लिए एक टेक्स्ट-आधारित उपयोगकर्ता इंटरफ़ेस प्रदान करता है। प्रबंधन से तात्पर्य किसी मॉड्यूल को लोड करने, अनलोड करने, ब्लैकलिस्ट करने और उसकी जानकारी दिखाने से है। कर्नेल मॉड्यूल्स में ये अपडेट, हार्डवेयर के बारे में लॉग और अन्य कर्नेल संदेशों को kmon में रीयल-टाइम गतिविधि मॉनिटर के साथ ट्रैक किया जा सकता है। चूँकि लिनक्स में इन कार्यों के लिए dmesg और kmod जैसे विभिन्न उपकरणों के उपयोग की आवश्यकता होती है, kmon का उद्देश्य उन्हें एक ही टर्मिनल विंडो में एकत्रित करना और कार्यक्षमता बनाए रखते हुए उपयोग को यथासंभव सुविधाजनक बनाना है।
kmon Rust में लिखा गया है और अपने टेक्स्ट-आधारित उपयोगकर्ता इंटरफ़ेस के लिए Ratatui और termion लाइब्रेरीज़ का उपयोग करता है।