कर्नेल एक का मुख्य घटक है ऑपरेटिंग सिस्टम, सिस्टम के बीच पुल के रूप में कार्य करना हार्डवेयर और सॉफ्टवेयर. कर्नेल सिस्टम संसाधनों का प्रबंधन करता है और हार्डवेयर और सॉफ्टवेयर घटकों के बीच बातचीत को सुविधाजनक बनाता है।
कर्नेल महत्वपूर्ण कार्यों जैसे मेमोरी प्रबंधन, कार्य शेड्यूलिंग (यह तय करना कि कौन सी प्रक्रियाओं का उपयोग करना है) के लिए जिम्मेदार है सेन्ट्रल प्रॉसेसिंग यूनिट (सीपीयू) और कब तक), डिवाइस प्रबंधन, और कंप्यूटर पर चल रही प्रक्रियाओं से सिस्टम कॉल को संभालना। कर्नेल हार्डवेयर और एप्लिकेशन प्रोग्राम के बीच अमूर्तता की एक परत प्रदान करता है, जो सॉफ्टवेयर डेवलपर्स को अंतर्निहित हार्डवेयर की बारीकियों को समझने की आवश्यकता के बिना प्रोग्राम लिखने में सक्षम बनाता है।
कर्नेल का एक संक्षिप्त इतिहास
कर्नेल का विकास, जो किसी भी ऑपरेटिंग सिस्टम का मूल है, कंप्यूटिंग के शुरुआती दिनों से शुरू होता है। प्रारंभ में, कंप्यूटर में कोई ऑपरेटिंग सिस्टम नहीं था, और प्रोग्रामर मशीन भाषा के माध्यम से हार्डवेयर के साथ सीधे बातचीत करते थे। जैसे-जैसे कंप्यूटिंग विकसित हुई, हार्डवेयर संसाधनों के अधिक कुशल प्रबंधन की आवश्यकता हुई, जिससे पहले बुनियादी ऑपरेटिंग सिस्टम और उनके साथ कर्नेल अवधारणा का विकास हुआ।
1960 के दशक में, मल्टिक्स प्रोजेक्ट, एमआईटी, बेल लैब्स और जनरल इलेक्ट्रिक के बीच एक सहयोग, जिसका उद्देश्य एक टाइम-शेयरिंग ऑपरेटिंग सिस्टम बनाना था। जबकि मल्टिक्स ने आधुनिक ऑपरेटिंग सिस्टम की मूलभूत अवधारणाओं को पेश किया, उस समय इसे अत्यधिक जटिल और महत्वाकांक्षी माना जाता था। हालाँकि, इसने विकास के लिए आधार तैयार किया यूनिक्स 1960 के दशक के अंत और 1970 के दशक की शुरुआत में केन थॉम्पसन, डेनिस रिची और बेल लैब्स के अन्य लोगों द्वारा।
UNIX का सरल डिज़ाइन और इसका कर्नेल ऑपरेटिंग सिस्टम के क्षेत्र में प्रभावशाली बन गया। जीएनयू 1983 में रिचर्ड स्टॉलमैन द्वारा शुरू किए गए प्रोजेक्ट का लक्ष्य एक मुफ्त UNIX जैसा ऑपरेटिंग सिस्टम बनाना था, जिसके कारण अंततः 1991 में लाइनस टोरवाल्ड्स द्वारा लिनक्स कर्नेल का विकास हुआ। लिनक्स कर्नेल ने GNU टूल्स के साथ मिलकर लिनक्स ऑपरेटिंग सिस्टम का निर्माण किया। , आज व्यापक रूप से उपयोग किया जाता है servers, डेस्कटॉप और एम्बेडेड सिस्टम।
1980 के दशक के अंत और 1990 के दशक की शुरुआत में माइक्रोसॉफ्ट के विंडोज एनटी कर्नेल के विकास ने एक हाइब्रिड कर्नेल आर्किटेक्चर पेश किया, जो विंडोज के सभी बाद के संस्करणों का आधार रहा है।
पिछले कुछ वर्षों में, कर्नेल हार्डवेयर की एक विस्तृत श्रृंखला का समर्थन करने और अधिक मजबूत, सुरक्षित और कुशल ऑपरेटिंग वातावरण प्रदान करने के लिए विकसित हुए हैं। वर्चुअलाइजेशन, रीयल-टाइम प्रोसेसिंग और सुरक्षा में प्रगति ने आधुनिक कंप्यूटिंग वातावरण में कर्नेल की भूमिका और जटिलता का और विस्तार किया है, जिससे हार्डवेयर और सॉफ्टवेयर को जोड़ने में कर्नेल की महत्वपूर्ण भूमिका मजबूत हुई है।
कर्नेल का उपयोग किस लिए किया जाता है?
ऑपरेटिंग सिस्टम के मुख्य घटक के रूप में कर्नेल की कई मूलभूत भूमिकाएँ होती हैं जो इसे सिस्टम के संसाधनों को प्रबंधित करने और कंप्यूटर के सुचारू संचालन को सुनिश्चित करने में सक्षम बनाती हैं। इसके प्राथमिक उपयोगों में शामिल हैं:
- प्रक्रिया प्रबंधन। कर्नेल प्रक्रियाओं के निष्पादन को नियंत्रित करता है, उनके राज्यों को प्रबंधित करता है (चल रहा है, प्रतीक्षा कर रहा है, आदि), सीपीयू तक उनकी पहुंच को शेड्यूल करता है, और प्रक्रियाओं के बीच संदर्भ स्विचिंग को संभालता है। यह सुनिश्चित करता है कि सिस्टम की प्रतिक्रिया और दक्षता को अनुकूलित करते हुए एप्लिकेशन एक-दूसरे के साथ हस्तक्षेप किए बिना एक साथ चल सकते हैं।
- स्मृति प्रबंधन। यह प्रक्रियाओं और ऑपरेटिंग सिस्टम के लिए मेमोरी स्पेस के आवंटन और डीलोकेशन की देखरेख करता है। कर्नेल यह सुनिश्चित करता है कि प्रत्येक प्रक्रिया को उस मेमोरी तक पहुंच प्राप्त हो जिसकी उसे आवश्यकता है, यह डिस्क स्टोरेज के साथ भौतिक मेमोरी को बढ़ाने के लिए वर्चुअल मेमोरी का प्रबंधन करता है, और अनधिकृत पहुंच को रोकते हुए प्रक्रियाओं के मेमोरी स्पेस को एक दूसरे से बचाता है।
- डिवाइस प्रबंधन। कर्नेल सॉफ़्टवेयर और हार्डवेयर घटकों के बीच मध्यस्थ के रूप में कार्य करता है। इसमें ड्राइवर शामिल हैं जो कीबोर्ड, माउस, डिस्क ड्राइव और प्रिंटर जैसे हार्डवेयर उपकरणों के साथ संचार की सुविधा प्रदान करते हैं, सॉफ़्टवेयर अनुरोधों को हार्डवेयर क्रियाओं में अनुवाद करते हैं और इसके विपरीत।
- फ़ाइल सिस्टम प्रबंधन. यह फ़ाइल प्रबंधन के लिए ज़िम्मेदार है, भंडारण उपकरणों पर डेटा को संग्रहीत करने, पुनर्प्राप्त करने और प्रबंधित करने का एक संरचित तरीका प्रदान करता है। कर्नेल अनुमतियों को प्रबंधित करने और सुनिश्चित करने के साथ-साथ फ़ाइलों और निर्देशिकाओं के निर्माण, विलोपन, पढ़ने और लिखने जैसे फ़ाइल सिस्टम संचालन को कार्यान्वित करता है डेटा अखंडता.
- शुद्ध कार्यशील. कर्नेल नेटवर्क इंटरफेस पर डेटा के ट्रांसमिशन और रिसेप्शन को प्रबंधित करके नेटवर्किंग की जटिलताओं को संभालता है। यह स्थानीय नेटवर्क और इंटरनेट पर संचार के लिए प्रोटोकॉल लागू करता है, जिससे प्रक्रियाओं को एक-दूसरे और अन्य प्रणालियों के साथ संचार करने में सक्षम बनाया जाता है।
- सुरक्षा और अभिगम नियंत्रण. कर्नेल सिस्टम की अखंडता और गोपनीयता की रक्षा के लिए सुरक्षा नीतियों और पहुंच नियंत्रण तंत्र को लागू करता है। यह फ़ाइलों, उपकरणों और अन्य संसाधनों तक पहुंच को नियंत्रित करता है, यह सुनिश्चित करता है कि केवल अधिकृत उपयोगकर्ता और प्रक्रियाएं ही कुछ संचालन कर सकती हैं, जिससे दुर्भावनापूर्ण गतिविधियों का जोखिम कम हो जाता है।
कर्नेल कहाँ स्थित है?
ऑपरेटिंग सिस्टम के केंद्रीय घटक के रूप में, कर्नेल सीधे हार्डवेयर परत के ऊपर बैठता है, जो कंप्यूटर पर चलने वाले हार्डवेयर और सॉफ़्टवेयर के बीच एक महत्वपूर्ण अमूर्त परत प्रदान करता है। यह आमतौर पर के भीतर स्थित होता है संचिका तंत्र में पट्टिका या ऑपरेटिंग सिस्टम के लिए विशिष्ट फ़ाइलों का सेट। उदाहरण के लिए, लिनक्स में, कर्नेल छवि अक्सर पाई जाती है /boot/vmlinuz या सिस्टम की बूट प्रक्रिया के लिए आवश्यक अन्य फ़ाइलों के साथ एक समान पथ।
कंप्यूटर को बूट करने पर, कर्नेल को लगातार स्टोरेज डिवाइस से मेमोरी (रैम) में लोड किया जाता है (उदाहरण के लिए, हार्ड ड्राइव, एसएसडी). बूटलोडर कर्नेल को मेमोरी में लोड करता है, और एक बार लोड होने के बाद, कंप्यूटर चलने के दौरान कर्नेल वहीं रहता है, सिस्टम संसाधनों और हार्डवेयर और सॉफ्टवेयर के बीच इंटरैक्शन का प्रबंधन करता है।
स्टोरेज से मेमोरी में संक्रमण कर्नेल को सिस्टम को कुशलतापूर्वक प्रबंधित करने, सॉफ़्टवेयर अनुप्रयोगों से अनुरोधों को संभालने और प्रोसेसर समय, मेमोरी और परिधीय उपकरणों जैसे संसाधनों को प्रबंधित करने की अनुमति देता है। यह लोडिंग प्रक्रिया सुनिश्चित करती है कि कर्नेल हार्डवेयर की विशिष्टताओं को जाने बिना सिस्टम के साथ इंटरैक्ट करने के लिए उच्च-स्तरीय सॉफ़्टवेयर के लिए आवश्यक अमूर्तता प्रदान कर सकता है।
कर्नेल प्रकार
यहां विभिन्न कर्नेल प्रकारों, उनके लाभों और सीमाओं का अवलोकन दिया गया है।
अखंड कर्नेलer
इस प्रकार के सिस्टम आर्किटेक्चर के साथ, संपूर्ण ऑपरेटिंग सिस्टम, जिसमें मुख्य कार्यक्षमता, डिवाइस ड्राइवर, फ़ाइल सिस्टम प्रबंधन और नेटवर्क स्टैक शामिल हैं, एक ही मेमोरी स्पेस में चलता है, जो उच्च दक्षता और हार्डवेयर संसाधनों तक सीधी पहुंच प्रदान करता है।
फ़ायदे
- एकल पता स्थान में चलने के कारण उच्च प्रदर्शन।
- कुशल अंतर-प्रक्रिया संचार।
- हार्डवेयर संसाधनों तक सीधी और तेज़ पहुंच।
- परिपक्व विकास के कारण हार्डवेयर और उपकरणों के लिए व्यापक समर्थन।
- व्यापक फीचर सेट कर्नेल में एकीकृत है।
नुकसान
- कर्नेल कोड को बनाए रखने और अद्यतन करने में जटिलता।
- सिस्टम क्रैश और सुरक्षा कमजोरियों की उच्च संभावना।
- दोषपूर्ण घटकों को अलग करना कठिन है, जिससे सिस्टम स्थिरता प्रभावित होती है।
- बड़े कर्नेल आकार से अक्षमताएँ हो सकती हैं।
- मॉड्यूलर अपडेट या परिवर्तनों के लिए संपूर्ण सिस्टम रीबूट की आवश्यकता हो सकती है।
माइक्रोकर्नेल
इस प्रकार के कर्नेल में केवल सबसे मौलिक सिस्टम सेवाएँ शामिल होती हैं, जैसे प्रक्रियाओं और बुनियादी हार्डवेयर प्रबंधन के बीच संचार, मॉड्यूलरिटी और सिस्टम सुरक्षा को बढ़ाने के लिए उपयोगकर्ता स्थान में चलने वाली अन्य सेवाएँ।
फ़ायदे
- सिस्टम घटकों के अलगाव के कारण बढ़ी हुई सुरक्षा और स्थिरता।
- पूरे सिस्टम को प्रभावित किए बिना व्यक्तिगत घटकों को बनाए रखना और अद्यतन करना आसान है।
- ग्रेटर flexघटकों को बदलने या संशोधित करने की क्षमता।
- उच्च विश्वसनीयता और उपलब्धता की आवश्यकता वाले सिस्टम में उपयोग के लिए उपयुक्त।
- सरलीकृत डिज़ाइन से बग और कमजोरियाँ कम होती हैं।
नुकसान
- अंतर-प्रक्रिया संचार के ओवरहेड के कारण मोनोलिथिक कर्नेल की तुलना में कम प्रदर्शन।
- अधिक जटिल सिस्टम आर्किटेक्चर, जो विकास और डिबगिंग को जटिल बना सकता है।
- समय-संवेदनशील अनुप्रयोगों को प्रभावित करते हुए, सिस्टम कॉल विलंबता में वृद्धि की संभावना।
- विकास और अनुकूलन के लिए अधिक प्रयास और विशेषज्ञता की आवश्यकता हो सकती है।
- कुछ मोनोलिथिक कर्नेल की तुलना में पुराने हार्डवेयर और सॉफ़्टवेयर के लिए सीमित समर्थन।
हाइब्रिड कर्नेल
एक हाइब्रिड कर्नेल सिस्टम आर्किटेक्चर मोनोलिथिक और माइक्रोकर्नेल के तत्वों को जोड़ता है, प्रदर्शन के लिए कुछ सेवाओं को कर्नेल स्पेस में चलाता है जबकि दूसरों को बेहतर मॉड्यूलरिटी और सुरक्षा के लिए यूजर स्पेस में रखता है।
फ़ायदे
- कई परिदृश्यों में कुशल प्रदर्शन.
- Flexउपयोगकर्ता स्थान या कर्नेल स्थान में उपयोगकर्ता सेवाओं और ड्राइवरों को चलाने की क्षमता।
- बेहतर हार्डवेयर और एप्लिकेशन संगतता।
- मोनोलिथिक कर्नेल की तुलना में बेहतर सिस्टम स्थिरता और सुरक्षा।
- मॉड्यूलर डिज़ाइन कुछ घटकों के लिए अद्यतन और रखरखाव को आसान बनाता है।
नुकसान
- मोनोलिथिक या माइक्रोकर्नेल की तुलना में डिजाइन और कार्यान्वयन अधिक जटिल है।
- उपयोगकर्ता स्थान और कर्नेल स्थान के बीच संचार में सिस्टम ओवरहेड और विलंबता में वृद्धि की संभावना।
- यदि उपयोगकर्ता स्पेस सेवाएँ कर्नेल सेवाओं के साथ निकटता से बातचीत करती हैं तो सुरक्षा जोखिम।
- कार्यान्वयन के आधार पर, मोनोलिथिक और माइक्रोकर्नेल दोनों आर्किटेक्चर के नुकसान विरासत में मिल सकते हैं।
- प्रदर्शन और मॉड्यूलैरिटी के बीच समझौता अक्षमताओं को जन्म दे सकता है।
एक्सोकर्नेल
यह कर्नेल प्रकार अनुप्रयोगों को संसाधन प्रबंधन में कर्नेल की भूमिका को कम करके हार्डवेयर संसाधनों तक अधिक सीधी पहुंच की अनुमति देता है। यह दृष्टिकोण ओवरहेड अमूर्त परत को कम करता है और अधिक प्रदान करता है flexएप्लिकेशन सिस्टम के हार्डवेयर के साथ कैसे इंटरैक्ट करते हैं, इसकी क्षमता और दक्षता।
फ़ायदे
- कम अमूर्तता और ओवरहेड के कारण बेहतर प्रदर्शन।
- ग्रेटर flexअनुप्रयोगों के लिए संसाधन उपयोग को अनुकूलित करने की क्षमता।
- एप्लिकेशन-विशिष्ट अनुकूलन और अनुकूलन की अनुमति देता है।
- नई ऑपरेटिंग सिस्टम संरचनाओं को सक्षम करके नवाचार को प्रोत्साहित करता है।
- अनेक परिवेशों के बीच हार्डवेयर संसाधनों का कुशल बहुसंकेतन।
नुकसान
- अनुप्रयोग विकास में जटिलता बढ़ी।
- हार्डवेयर तक करीबी पहुंच वाले अनुप्रयोगों के कारण संभावित रूप से उच्च सुरक्षा जोखिम।
- विभिन्न एक्सोकर्नेल-आधारित प्रणालियों के लिए डिज़ाइन किए गए अनुप्रयोगों के बीच संगतता समस्याएं।
- अनुप्रयोगों के बीच कम अलगाव, संभावित रूप से स्थिरता के मुद्दों को जन्म देता है।
नैनोकर्नेल
माइक्रोकर्नेल और एक्सोकर्नेल की तुलना में नैनोकर्नेल ऑपरेटिंग सिस्टम डिज़ाइन के लिए और भी अधिक न्यूनतम दृष्टिकोण है। यह केवल हार्डवेयर संसाधनों के प्रबंधन और न्यूनतम सिस्टम सेवाओं की सुविधा के लिए आवश्यक कार्यक्षमता प्रदान करने पर केंद्रित है।
फ़ायदे
- न्यूनतम डिज़ाइन, जिससे संभावित रूप से सिस्टम ओवरहेड कम हो जाता है।
- कम होने के कारण सुरक्षा बढ़ा दी गई है हमले की सतह.
- बेहतर स्थिरता और विश्वसनीयता, क्योंकि कर्नेल मोड में कम फ़ंक्शन चलते हैं।
- सरलता के कारण रखरखाव और अद्यतन करना आसान है।
- सिस्टम और एप्लिकेशन सेवाओं के बीच स्पष्ट अंतर के साथ, चिंताओं का बेहतर पृथक्करण बनाता है।
- कम कर्नेल कोड पथ लंबाई के कारण वास्तविक समय अनुप्रयोगों के लिए संभावित रूप से बेहतर अनुकूल।
नुकसान
- सिस्टम कॉल ओवरहेड में वृद्धि, क्योंकि अधिक संचालन के लिए अंतर-प्रक्रिया संचार की आवश्यकता होती है।
- कर्नेल स्पेस संचार के लिए उपयोगकर्ता स्थान के ओवरहेड के कारण कम प्रदर्शन की संभावना।
- अनुप्रयोग विकास में जटिलता, क्योंकि डेवलपर्स को अधिक सिस्टम-स्तरीय कार्यों को संभालने की आवश्यकता होती है।
- कर्नेल के भीतर सीमित कार्यक्षमता के लिए सिस्टम क्षमताओं के विस्तार के लिए अतिरिक्त तंत्र की आवश्यकता होती है।
- इष्टतम डिवाइस ड्राइवर प्रदर्शन प्राप्त करना अधिक कठिन है, क्योंकि ड्राइवर उपयोगकर्ता स्थान में चल सकते हैं।
- मौजूदा सॉफ्टवेयर और सिस्टम के साथ अनुकूलता और अंतरसंचालनीयता सुनिश्चित करना चुनौतीपूर्ण है।
कर्नेल मोड बनाम उपयोगकर्ता मोड
कर्नेल मोड और उपयोगकर्ता मोड एक कंप्यूटर सिस्टम के भीतर दो अलग-अलग ऑपरेटिंग स्थितियों का प्रतिनिधित्व करते हैं, जिनमें से प्रत्येक का हार्डवेयर संसाधनों तक पहुंच और नियंत्रण का अपना स्तर होता है।
कर्नेल मोड, जिसे पर्यवेक्षक मोड के रूप में भी जाना जाता है, कर्नेल को सिस्टम के सभी हार्डवेयर और मेमोरी तक पूर्ण पहुंच प्रदान करता है। यह मोड कर्नेल को महत्वपूर्ण निम्न-स्तरीय कार्य करने की अनुमति देता है, जैसे कि मेमोरी को प्रबंधित करना, हार्डवेयर निर्देशों को निष्पादित करना और व्यवधानों को संभालना। क्योंकि कर्नेल मोड कोड सीधे हार्डवेयर के साथ इंटरैक्ट कर सकता है और उसे नियंत्रित कर सकता है, यह सिस्टम के भीतर उच्चतम स्तर के विश्वास और अधिकार के साथ काम करता है। सिस्टम को कुशलतापूर्वक प्रबंधित करने के लिए कर्नेल के लिए यह अप्रतिबंधित पहुंच आवश्यक है, लेकिन यह जोखिम भी पैदा करता है क्योंकि कर्नेल मोड में कोई भी बग या सुरक्षा कमजोरियां सिस्टम अस्थिरता या समझौता का कारण बन सकती हैं।
इसके विपरीत, उपयोगकर्ता मोड एक प्रतिबंधित मोड है जिसमें अधिकांश एप्लिकेशन और सॉफ़्टवेयर चलते हैं। इस मोड में, सिस्टम कॉल के माध्यम से कर्नेल द्वारा हार्डवेयर और महत्वपूर्ण सिस्टम संसाधनों तक पहुंच की मध्यस्थता की जाती है। उपयोगकर्ता मोड एक संरक्षित वातावरण प्रदान करता है जो किसी एप्लिकेशन की हार्डवेयर तक सीधी पहुंच को सीमित करता है, जिससे सिस्टम को दुर्भावनापूर्ण या त्रुटिपूर्ण सॉफ़्टवेयर से सुरक्षा मिलती है। यदि उपयोगकर्ता मोड में कोई एप्लिकेशन क्रैश हो जाता है या किसी त्रुटि का सामना करता है, तो इससे व्यापक सिस्टम विफलता होने की संभावना कम होती है, क्योंकि कर्नेल अक्सर समस्या को प्रबंधित या अलग कर सकता है।
उपयोगकर्ता और कर्नेल मोड के बीच अलगाव आधुनिक ऑपरेटिंग सिस्टम के लिए मौलिक है, जो सुरक्षा सीमा प्रदान करता है और स्थिरता सुनिश्चित करता है। ऑपरेटिंग सिस्टम उपयोगकर्ता मोड से कर्नेल मोड और बैक में संक्रमण को सावधानीपूर्वक नियंत्रित करता है, जिससे सिस्टम प्रदर्शन और सुरक्षा के बीच संतुलन बना रहता है।