Kernal Kya Hain aur Kyun hain Itna Jaruri | What is Kernal and What its Important

 कर्नेल क्या हैं और क्यों हैं इतना जरुरी 

कर्नल क्या हैं? (What is kernel)

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

कर्नेल सॉफ्टवेयर का निम्नतम स्तर है जो आपके कंप्यूटर में हार्डवेयर के साथ इंटरफेस करता है। लिनक्स कर्नेल लिनक्स का एक मूलभूत हिस्सा है और इसमें लाखों रेखाएँ होती हैं। यह GPL (GNU General Public License) के तहत जारी किया गया है, जो सोर्स कोड तक सार्वजनिक पहुंच की अनुमति देता है। यह 1991 में एक फिनिश कंप्यूटर विज्ञान के छात्र लिनुस टोरवाल्ड्स द्वारा विकसित किया गया था। आज, दुनिया भर के हजारों डेवलपर्स लिनक्स कर्नेल के विकास में योगदान करते हैं।

Kernel Linux Operating System की कोर प्रोग्राम होती है। Kernel एक ऐसा ऑपरेटिंग सिस्टम(Operating System) प्रोग्राम हेै जो कि कम्प्यूटर हार्डवेयर के संसाधनों को नियंत्रित करके उनका उचित उपयोग यूजर से करवाता है। जैसे ही कम्प्यूटर Start होता है कर्नल लांच हो जाता है। और कम्प्यूटर के ऑफ होने तक लोड रहता है। यह इस बात पर निर्भर नही करता कि आप कौन से साफ्टवेयर या शैल को रन कर रहे है।

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

जैसे की मैंने पहले भी बताया है की एक kernel Operating System का core component होता है. यह interprocess communication और system calls, का इस्तमाल कर एक bridge के तरह act करता है applications और data processing के बीच जिसे की performed किया जाता है hardware level में.

जब एक operating system को load किया जाता है memory में, तब kernel सबसे पहले load होता है और ये memory में तब तक रहता है जब तक की operating system फिर से shut down न हो जाये. ये kernel ही responsible होता है सभी low-level tasks जैसे की disk management, task management और memory management के लिए.

Overall देखा जाये तो एक computer kernel interface करता है तीन major computer hardware components, और साथ में services भी प्रदान करता है application/user interface को, CPU, memory और दुसरे hardware I/O devices.

ये kernel प्रदान करने के साथ साथ manage भी करता है computer resources को, जिससे ये allow कर सके दुसरे programs को run करने के लिए और इन resources का इस्तमाल कर सकें. इसके साथ kernel applications के लिए memory address space setup करता है, files load करता है application code से memory में, programs के लिए execution stack set up करता है और इसके साथ branches out करता है किसी particular locations को programs के भीतर execution के लिए.

Kernel के Features क्या हैं?

चलिए kernel के features के विषय में जानते हैं.

  • यह एक core component होता है Operating System का जिसके बिना OS काम नहीं कर सकता है.
  • हम Kernel को OS का nervous system भी कह सकते हैं.
  • यह central core होता है Operating System का.
  • यह OS के सभी चीज़ों को control करता है जिसमें I/O Management, Process Management इत्यदि शामिल हैं.
  • यह एक bridge का काम करता है applications और actual data processing के बीच जो की hardware level में हो रहा होता है.
  • यह एक interface होता है user applications और hardware के बीच.

Kernel की Responsibilities क्या हैं?



अब चलिए Kernel की responsibilities के विषय में जानते हैं.

1. Central Processing Unit : ये Kernel ही ये responsibility लेती है की किस समय में कितने running programs को allocate किया जाये processors को.

2. Random Access Memory: RAM का इस्तमाल दोनों program instructions और data को store करने के लिए किया जाता है. वहीँ अक्सर multiple programs चाहते हैं इस memory को access करने के लिए, वहीँ ये ज्यादा memory की चाह रखते हैं जो की computer में available memory से ज्यादा होती है.

ऐसे में Kernel का ये दयित्व होता है की वो allocate करे कौन सी memory कौन सी process इस्तमाल करेगी, इसके साथ ये भी तय करना की आखिर क्या करें जब ज्यादा memory available न हो तब.

3. Input/output Devices : ये Kernel ही allocate करती हैं requests को अलग अलग applications से जिससे की सही device में I/O perform किया जा सके, साथ में ये convenient methods भी प्रदान करता है device को इस्तमाल करने के लिए.

4. Memory Management : ये Kernel के पास full access होता है system के memory के ऊपर और ये उन्हें safely access करने के लिए allow भी करता है जब उनकी जरुरत पड़ती है तब.

5. Device Management : Kernel सभी available devices की एक list maintain करनी चाहिए. यह list पहले से ही configured होती है user के द्वारा या इसे detect कर लिया गया होता है operating system के द्वारा run time में (normally इसे ही plug and play कहते हैं).


कर्नल का महत्त्व

आपको पता होगा कि सेना में भी एक कर्नल होता है, जो कि काफी पॉवरफुल होता है। लेकिन ऑपरेटिंग सिस्टम वाला Kernel सेना वाले कर्नल से कहीं ज्यादा पॉवरफुल होता है। क्योंकि यह Operating System का Central Part होता है। इसलिए इसके पास काफी ज्यादा अधिकार होते हैं। एक Device को सही ढंग से चलाने में Kernel का ही हाथ होता है। अगर कर्नल नहीं होगा, तो Device का मुख्य सॉफ्टवेयर यानि कि Operating System Crash हो जाएगा। यानि कि फोन/कम्प्यूटर का सॉफ्टवेयर उड़ जाएगा।

अब आप सोच रहे होंगे कि ऐसा क्यों? तो चलिए मैं आपको एक उदाहरण के माध्यम से समझाता हूँ। मान लीजिए कि आपके फोन में 6 GB रैम है। और 50 ऐप्स है, जिन्हें एक साथ Run करने के लिए 15 GB रैम चाहिए। अब अगर Kernel होगा, तो वह सिर्फ उतनी ही ऐप्स को Run करने देगा, जितनी रैम है। रैम Full होने के बाद अगर आप कोई नई ऐप Open करेंगे, तो कर्नल पहले से एक्टिव किसी ऐप को बंद कर देगा और जो इससे जो रैम खाली होगी, वह नई ऐप को दे देगा। इस तरह आपका डिवाइस आराम से काम करता रहेगा।

Kernel नहीं होगा तो?

अगर कर्नल नहीं होगा, तो जाहिर-सी बात है Apps के उपर किसी का कंट्रोल नहीं रहेगा। ऐसे में सभी Apps अपनी मनमानी करेंगी। यानि कि सब की सब एक साथ एक्टिव हो जाऐंगी। और 15 GB RAM की मांग करेंगी, जो कि मुमकिन नहीं है। क्योंकि फोन में टोटल रैम ही सिर्फ 6 GB है। ऐसे में फोन के सॉफ्टवेयर पर इतना ज्यादा दबाव पड़ेगा कि वह क्रैश हो जाएगा। यानि कि फोन का सॉफ्टवेयर उड़ जाएगा।

कर्नल कैसे काम करता है?

यहाँ मैंने सिर्फ RAM का उदाहरण दिया है। लेकिन रैम के अलावा भी Phone में बहुत सारी चीजें होती हैं। जैसे कि स्टोरेज, कैमरा, स्पीकर, माइक, फ्लैश, Sensors, प्रोसेसर आदि। सोचिए, अगर इन चीजों को लेकर सारी ऐप्स के बीच मारकाट मचेगी, तो क्या होगा? अगर 10 ऐप्स ने एक साथ Camera पर धावा बोल दिया, तो क्या होगा? अगर 8 ऐप्स एक साथ स्पीकर पर टूट पड़ी तो क्या होगा? मेरे कहने का मतलब यह है कि सारी चीजें Out of control हो जाऐंगी। और उन्हें संभालना ऑपरेटिंग सिस्टम के वश के बाहर हो जाएगा। ऐसे में Software का उड़ना तय है। इसीलिए Kernel जरूरी है।

दरअसल Kernel ही वह Authority है, जो Software और Hardware के बीच तालमेल बिठाकर Device को सही ढंग से काम करने में मदद करती है। किस App/Software को कितनी रैम चाहिए? कितना स्टोरेज चाहिए? यह कर्नल ही देखता है। साथ ही किस App/Software को कैमरे का एक्सेस चाहिए? किसको Location का एक्सेस चाहिए और किसको स्टोरेज का एक्सेस? यह सब भी कर्नल ही देखता है। कुल मिलाकर Softwares को उनकी जरूरत के मुताबिक Hardware Resources उपलब्ध करवाना ही Kernel का मुख्य काम है।

Functions Of The Kernel

Central Processing Unit

Kernel किसी भी समय यह निर्णय लेने की ज़िम्मेदारी लेता है कि कौन से रन हो रहे प्रोग्राम को प्रोसेसर या प्रोसेसर्स में आवंटित किया जाना चाहिए।

Random-access memory:

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

Input/output (I/O) devices:

Input Devices और Output Devices में कीबोर्ड, माऊस, डिस्क ड्राइव, प्रिंटर, नेटवर्क एडेप्टर, और डिस्प्ले डिवाइस जैसे पेरिफेरल्स शामिल हैं। कर्नेल एक उपयुक्त डिवाइस पर I/O करने के लिए ऐप्‍लीकेशन से रिक्वेस्ट आवंटित करता है और डिवाइस का उपयोग करने के लिए सुविधाजनक तरीके प्रदान करता है।

कर्नेल आमतौर पर interprocess communication (IPC) नाम की प्रोसेस के बीच सिंक्रनाइज़ेशन और कम्‍यूनिकेशन के लिए तरीके प्रदान करते हैं।

Types Of Kernel in Hindi:

Kernel के पाँच प्रकार हैं:

i) Monolithic Kernel:

इस कर्नेल प्रकार में कर्नेल के अंदर, शेड्यूलर, डिवाइस ड्राइवर, मेमोरी मैनेजमेंट आदि सभी कर्नेल के स्वामित्व वाले मेमोरी स्पेस में सभी आवश्यक कार्यक्षमता है।

Monolithic kernels में आमतौर पर सभी kernels के उच्चतम डेटा थ्रूपुट होते हैं और बड़े सर्वर या जॉब डेडिकेटेड सर्वर में इसका सबसे अच्छा उपयोग किया जाता है।

ii) MicroKernel:

यह कर्नेल टाइप, शेड्यूलिंग, मेमोरी मैनेजमेंट और इंटर-प्रोसेस कम्युनिकेशन के लिए आवश्यक न्यूनतम सेट-अप का उपयोग करता है। यह कर्नेल उपयोग के लिए आवश्यक मेमोरी की मात्रा को काफी कम कर देता है। कर्नेल के न्यूनतम साइज का मतलब है कि Device Drivers द्वारा आवश्यक अतिरिक्त कम्युनिकेशन की मात्रा कर्नेल के माध्यम से अधिकतम डेटा फ्लो को कम करती है, लेकिन साथ ही साथ इंटरप्ट करने के लिए कर्नेल रिस्‍पॉंस टाइम भी घट जाता है। Microkernels आमतौर पर रियल टाइम सिस्‍टम में पाए जाते हैं।

iii) Hybrid Kernel:

यह ऊपर के 2 के बीच का मिश्रण है। कर्नेल hybrid से बड़ा है लेकिन monolithic से छोटा है। जो आपको सामान्य रूप से मिलता है, वह एक छोटा किया हुआ monolithic kernel है, जिसमें बहुत सारे डिवाइस ड्राइवर्स को हटा दिया गया है, लेकिन अभी भी कर्नेल स्‍पेस के भीतर सिस्टम सर्विसेस हैं। डिवाइस ड्राइवर को स्टार्ट या रन करते समय आवश्यकतानुसार कर्नेल के साथ जोड़ा जाएगा। ये kernel आमतौर पर आपके डेस्कटॉप, विंडोज, मैक और लिनक्स ओएस फ्लेवर पर पाई जाती हैं।

iv) Nanokernel

यह कर्नेल टाइप केवल हार्डवेयर अमूर्तता प्रदान करता है, कोई सर्विस नहीं है और कर्नेल स्‍पेस न्यूनतम है। एक Nanokernel एक hypervisor का आधार बनाता है जिस पर आप वर्चुअलाइजेशन के माध्यम से कई सिस्टम का अनुकरण कर सकते हैं। Nanokernels एम्बेडेड प्रोजेक्ट्स के लिए भी बहुत अच्छे हैं।

v) Exo-Kernel

यह कर्नेल सबसे छोटा कर्नेल है। यह प्रोसेस प्रोटेक्‍शन और रिसोर्स हैंडलिंग के अलावा कुछ नहीं प्रदान करता है। इस कर्नेल का उपयोग करने वाला प्रोग्रामर उस डिवाइस को सही ढंग से एक्सेस करने के लिए जिम्मेदार है जिसे वे उपयोग करना चाहते हैं।

कर्नेल का एकमात्र उद्देश्य सॉफ्टवेयर और हार्डवेयर जैसे सीपीयू, डिस्क मेमोरी आदि के बीच कम्युनिकेशन का प्रबंधन करना है। कर्नेल निम्न स्तर के कार्यों के लिए जिम्मेदार है जैसे –

  1. डिवाइस मैनेजमेंट
  2. प्रोसेस मैनेजमेंट
  3. मेमोरी मैनेजमेंट
  4. बाधा से निपटने
  5. इनपूट /आऊटपूट कम्युनिकेशन

जब कोई ऑपरेटिंग सिस्टम मेमोरी में लोड होती है, तो कर्नेल पहले लोड होता है और तब तक मेमोरी में रहता है जब तक ऑपरेटिंग सिस्टम फिर से बंद नहीं हो जाती।

क्योंकि यह मेमोरी में रहता है, कर्नेल के लिए आवश्यक है कि ऑपरेटिंग सिस्टम और ऐप्‍लीकेशन के अन्य भागों द्वारा आवश्यक सभी आवश्यक सर्विसेस प्रदान करते हुए भी यथासंभव छोटा हो।

तो, ऊपर दिए गए डाइग्राम से आप समझ गए होंगे कि यूजर ऐप्‍लीकेशन स्वयं हार्डवेयर के साथ कम्‍यूनिकेट नहीं करते, बीच में कर्नेल होता है जो हार्डवेयर से निपटने में बेहतर है, इसमें मूल रूप से बेहतर परफॉरमेंस प्रदान करने के लिए एड्रेस स्‍पेस आदि का मैनेजमेंट शामिल है। अब, कर्नेल के साथ ऐप्‍लीकेशन के तथाकथित इंटरैक्शन को सिस्टम कॉल का उपयोग करके किया जाता है, जो कि यह रिक्वेस्ट करता है। तो, कर्नेल का मुख्य कार्य सिस्टम रिसोर्सेस का बुद्धिमानी से उपयोग करके, ऐप्‍लीकेशन लेयर द्वारा ऐप्‍लीकेशन रिक्‍सेस्‍ट को कुशलतापूर्वक पूरा करना है।

कर्नेल कोड को आमतौर पर मेमोरी के एक संरक्षित क्षेत्र में लोड किया जाता है ताकि इसे प्रोग्राम या ऑपरेटिंग सिस्टम के अन्य हिस्सों से overwritten होने से रोका जा सके। यह separation यूजर डेटा और कर्नेल डेटा को एक दूसरे के साथ हस्तक्षेप करने और अस्थिरता और स्‍लो होने से रोकता है।

Kernel in Android:

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

यही कारण है कि स्वतंत्र एंड्रॉइड डेवलपर्स और हैकर्स को पुराने डिवाइसेस में नए वर्शन को पोर्ट करने और सब कुछ काम करने में कुछ समय लगता है।

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

जब सॉफ़्टवेयर को कुछ भी करने के लिए हार्डवेयर की आवश्यकता होती है, तो यह कर्नेल को एक रिक्वेस्ट भेजता है। और जब हम कुछ भी कहते हैं या करते हैं, जैसे की स्क्रीन की brightness से, volume level तक, यहां तक ​​कि डिस्प्ले पर जो भी टैप किया जाता है, उसे अंततः कर्नेल द्वारा नियंत्रित किया जाता है।

उदाहरण के लिए – जब आप अपने फ़ोन IT Khoj ऐप पर टैप करते हैं, तो आप सॉफ़्टवेयर को IT Khoj ऐप ओपन करने के लिए कहते हैं। क्या होता है कि जब आपने डिजिटाइज़र पर एक निश्चित पॉइंट को टच करते है, जो उस सॉफ़्टवेयर को बताता है जिसे आपने उन coordinates में स्क्रीन को छुआ है। सॉफ्टवेयर जानता है कि जब उस विशेष स्थान को छुआ जाता है, तो IT Khoj ऐप ओपन करना है।

Operating System में Kernel का उपयोग जाने ?

मान लीजिये कोई सॉफ्टवेयर है जिसको ऑडियो वाले सॉफ्टवेयर की जरुरत है जैसे की VLC मीडिया प्लेयर इसको ऑडियो वाले सॉफ्टवेयर की जरुरत है क्योकि ये ऑडियो प्ले करता है यही काम करता है Kernel, किस हार्डवेयर को किस सॉफ्टवेयर से जोड़ना है और किसको क्या सर्विस देना ये सब काम Kernel करता है यहाँ तक की किस प्रोग्राम को कितनी मेमोरी या कितनी रिसोर्सेज देने है यह भी Kernel ही decide करता है.

आपके कंप्यूटर सिस्टम में दो स्पेस होते है एक जहाँ आप काम करते है और एक जहाँ Kernel रहता है, जहाँ Kernel रहता है उस स्पेस में जो नार्मल यूजर है वो नहीं जा सकता वो वहां काम नहीं कर सकता क्योंकि अगर यूजर उस जगह पर काम करता है जहाँ Kernel है तो इससे दोनों के बिच interference होगी और अगर ऐसा होगा तो आपका सिस्टम अच्छे से काम नहीं करेगा ऐसा भी ही सकता है की आपका सिस्टम क्रेश हो जाये इसीलिए Kernel को एक अलग जगह दी जाती है सिस्टम में ताकि वो अकेले अपना काम कर सके और किसी भी प्रकार का इन्तेर्फेरंस ना हो.क्योंकि ये सिस्टम का सबसे अहम् हिस्सा है और बहुत ही महत्वपूर्ण काम इसे ही करना होता है.

Post a Comment

0 Comments