Kernel : ऑपरेटींग सिस्टीम ची रहस्यमय व अद्भुत दुनिया…

Operating system structure[8]“मी OS च्या कर्नल वर काम केले आहे” अथवा “मी लिनक्स वर काम करतो”… किंवा “माझी आता लिनक्स वर मास्टरी झाली आहे” असे विनम्रपणे न सांगता अशा काही बढाया जर कोण मारत असेल तर लिनक्स च्या कर्नल चा सोर्स कोड जवळ पास ६० लाख लाइन्स चा आहे असे त्याला सांगा.

 

1-012शे-पाचशे लाइन्स चा C/C++ चा अथवा जावा चा प्रोग्रॅम लिहीणाऱ्या नवशिक्या प्रोग्रॅमरला आपण ज्या OS वर काम करतो त्याचे महाभारता मधील कृष्णाप्रमाणे हे लिनक्स कर्नलचे महाविशाल व अवाढव्य पण अदृश्य रुप माहीत असणे जरूरी आहे. म्हणूनच हि पोस्ट च्या कर्नल ची थोडीफार  ओळख करून देण्यासाठी….! खास लिनक्स लव्हर्स साठी…!

युनिक्स व युनिक्स सारख्याच म्हणजे लिनक्स ऑपरेटींग सिस्टीम चा जणू काही आत्मा म्हणजेच Kernel. Kernel हा शब्द शक्यतो Unix/Linux सारख्या ऑपरेटींग सिस्टीम बाबत वापरला जातो असा गैरसमज आहे. प्रत्येक ऑपरेटींग सिस्टीम साठी वेगळा kernel असतो. म्हणजेच अर्थातच Microsoft Windows सारख्या ऑपरेटींग सिस्टीमला सुद्धा kernel असतोच. अर्थात लिनक्स/युनिक्स च्या kernel प्रमाणे Microsoft Windows च्या kernel ला सुविधा नसल्यामुळे तसा गैरसमज आहे. कारण गमतीचा भाग म्हणजे फक्त kernel update/modify करण्याची सुविधा युनिक्स/लिनक्स kernel च्या बाबतीत आहे. तशी Microsoft Windows च्या kernel ला नाही.

kernel-shell1खरं तर kernel म्हणजे ऑपरेटींग सिस्टीमचा गाभा  पण अनेकवेळा  कर्नल म्हणजेच ऑपरेटींग सिस्टीम असे सुद्धा म्हणायला हरकत नाही. त्याच मुळे kernel चा संबंध मेमरी, डिस्क ड्राइव्ह, प्रोसेसर व इतर हार्डवेअर डिव्हाइसेसशी येतो या उलट युझरशी kernel चा संबंध कधीच येणार नाही अशी काळजी घेतली जाते. हे काम शेल (shell) पार पाडतो. शेल हा ऑपरेटींग सिस्टीमचा outer part असतो व त्याच माध्यमातून युझर काम करू शकतो.
Booting च्या वेळी kernel प्रथम मेमरी मध्ये लोड होतो व कंप्युटर shut down करे पर्यंत तेथेच मुक्काम करतो. सर्वात महत्वाचा पार्ट असल्यामुळे त्याची रवानगी प्रोटेक्टेड मेमरी मध्ये केली जाते ज्याला kernel space असे म्हणतात. त्यामुळे Operating system च्या इतर सर्व भागांना बेसीक सेवा आणी सुविधा (basic services) देण्याचे काम kernel चोखपणे पार पाडतो. या मध्ये मेमरी मॅनेजमेंट, प्रोसेस मॅनेजमेंट, फाइल मॅनेजमेंट आणी input/output मॅनेजमेंट हि सर्व  अति-महत्वाची कामे येतात.

03-kernel.pio१.     Kernel चे महत्वाचे पार्ट म्हणजे

२.     Scheduler ज्या प्रोसेस रन करायच्या आहेत त्याचे शेड्युल करणे व क्रमवारी ठरवणे, क्रमवारी मध्ये बदल करणे इत्यादी

३.     Supervisor प्रोसेस शेड्युल प्रमाणे रन करण्यासाट्ठी CPU ला जातात की नाही हे मॉनीटर करणे

४.     Interrupt handler हार्ड-डिस्क किंवा माउस/किबोर्ड सारख्या हार्डवेअर components कडून आलेले व्यत्यय interrupts कडे लक्ष देणे व त्यांची योग्य ती दखल घेणे

५.     Memory Manager प्रोसेसेस साठी मेमरी उपलब्ध करून देण्याची व्यवस्था बघणे

common-kernel1

कर्नल चे चार प्रकारामध्ये वर्गीकरण करता येते म्हणजेच ४ प्रकारचे कर्नल उपलब्ध आहेत हे वाचून तुम्हाला आश्चर्य सुद्धा वाटेल. पण त्याचे monolithic kernel, micro kernel, hybrid kernel आणी exokernels असे चार प्रकार आहे.

Monolithic kernel म्हणजे परीपुर्ण असे कर्नल. ऑपरेटींग सिस्टीमची सर्व फंक्शन्स पार पाडणारे, व सर्व डिव्हाइस ड्रायव्हर्स असणारे कर्नल म्हणजे मोनोलिथीक कर्नल. त्यामुळे डिस्क ड्राइव्ह, प्रिंटर, व्हिडीओ कार्ड या सर्वांशी संधान बांधून काम करण्याची ऐपत मोनोलिथीक कर्नल मध्ये असते. लिनक्स याच प्रकारात येते.

Micro kernel : कमीत कमी फंक्शन्स असणारी व फक्त गरजेच्या सेवा सुविधा उपलब्ध करून देणारे कर्नल म्हणजे micro kernel. Mach, Mac OS X, MINIX या सर्व ऑपरेटींग सिस्टीमची कर्नल्स या प्रकाराची समजली जातात.

वरील दोन्ही कर्नल मधील कर्नल म्हणजे Hybrid Kernel. Karnel space जास्त प्रमाणात उपलब्ध असल्यामुळे microkernel पेक्षा जास्त सुविधा मिळतात. Windows NT, Windows 2000, Windows XP या सर्वांचे कर्नल हे या प्रकारात मोडतात.

Exokernel मात्र सध्या प्रायोगिक तत्वावर आहेत. कमीत कमी जागेमध्ये जास्तीत जास्त फंक्शनॅलिटीज देण्याच्या दृष्टीने प्रयत्न या मध्ये चालू आहेत. खरं तर हा प्रयत्न डेव्हलपर मंडळीच्या सोयीसाठी चालला आहे…!

2 thoughts on “Kernel : ऑपरेटींग सिस्टीम ची रहस्यमय व अद्भुत दुनिया…

Leave a Reply