कर्नेल (ऑपरेटिंग सिस्टम): Difference between revisions
(Text) |
No edit summary |
||
(40 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{Short description|Core of a computer operating system}} | {{Short description|Core of a computer operating system}} | ||
{{Redirect|कर्नेल(कंप्यूटर विज्ञान)||कर्नेल( विसंदिग्धीकरण)# संगणना}} | {{Redirect|कर्नेल(कंप्यूटर विज्ञान)||कर्नेल( विसंदिग्धीकरण)# संगणना}} | ||
< | [[File:Kernel Layout.svg|thumb|एक सरलीकरण जिसमें एक कर्नेल [[ अनुप्रयोग प्रक्रिया सामग्री |अनुप्रयोग प्रक्रिया सामग्री]] को कंप्यूटर के हार्डवेयर से जोड़ता है,]]कर्नेल कंप्यूटर के [[ ऑपरेटिंग सिस्टम |ऑपरेटिंग सिस्टम]] के अंतर्भाग में एक[[ कंप्यूटर प्रोग्राम | कंप्यूटर प्रोग्राम]] है और प्रायः सिस्टम में हर चीज पर इसका पूरा नियंत्रण होता है।<ref name=Linfo />यह ऑपरेटिंग सिस्टम कोड का वह भाग है जो हमेशा स्मृति(मेमोरी) में रहता है<ref>{{cite book |author1=Randal E. Bryant |author2=David R. O’Hallaron |title=कंप्यूटर सिस्टम: एक प्रोग्रामर का परिप्रेक्ष्य|date=2016 |publisher=Pearson |isbn=978-0134092669 |page=17 |edition=Third}}</ref> और हार्डवेयर और सॉफ्टवेयर घटकों के बीच बातचीत की सुविधा प्रदान करता है। एक पूर्ण कर्नेल [[ डिवाइस ड्राइवर |उपकरण ड्राइवरों]] के माध्यम से सभी हार्डवेयर संसाधनों (जैसे इनपुट/आउटपुट , स्मृति, क्रिप्टोग्राफी) को नियंत्रित करता है, ऐसे संसाधनों से संबंधित प्रक्रियाओं के बीच विरोध की मध्यस्थता करता है, और सामान्य संसाधनों के उपयोग को अनुकूलित करता है उदहारण: सीपीयू और कैशे उपयोग, दस्तावेज़ सिस्टम और नेटवर्क सॉकेट। अधिकांश प्रणालियों पर, कर्नेल ([[ बूटलोडर |बूटलोडर]] के बाद) के प्रारंभ होने पर चलाये किए गए पहले प्रोग्रामों में से एक है। यह बाकी प्रारंभन के साथ-साथ स्मृति, बाह्य उपकरणों, और सॉफ्टवेयर से इनपुट/आउटपुट अनुरोधों को संभालता है, और उन्हें [[ सेंट्रल प्रोसेसिंग यूनिट |सेंट्रल प्रोसेसिंग यूनिट]] के लिए [[ डाटा प्रासेसिंग |डाटा प्रोसेसिंग निर्देशों]] में अनुवाद करता है। | ||
< | |||
कर्नेल का समीक्षात्मक कोड को प्रायः स्मृति के एक अलग क्षेत्र में संगृहीत किया जाता है, जो एप्लिकेशन [[ सॉफ़्टवेयर |सॉफ़्टवेयर]] या ऑपरेटिंग सिस्टम के अन्य कम महत्वपूर्ण भागों द्वारा अभिगम से सुरक्षित होता है। कर्नेल इस संरक्षित [[ कर्नेल स्थान |कर्नेल स्थान]] में अपने कार्य करता है, जैसे कि प्रक्रियाएँ चलाना, [[ हार्ड डिस्क |हार्ड डिस्क]] जैसे हार्डवेयर उपकरणों का प्रबंधन करना और व्यवधानों को संभालना। इसके विपरीत, एप्लिकेशन प्रोग्राम जैसे कि ब्राउज़र, वर्ड प्रोसेसर, या ऑडियो या वीडियो प्लेयर स्मृति, [[ उपयोक्ता स्थान |उपभोक्ता स्थान]] के एक अलग क्षेत्र का उपयोग करते हैं। यह अलगाव उपयोगकर्ता डेटा और कर्नेल डेटा को एक दूसरे के साथ हस्तक्षेप करने और अस्थिरता और धीमापन पैदा करने से रोकता है,<ref name="Linfo">{{cite web |url=http://www.linfo.org/kernel.html |title=गुठली|website=Linfo |publisher=Bellevue Linux Users Group |access-date=15 September 2016 |archive-date=8 December 2006 |archive-url=https://web.archive.org/web/20061208185439/http://www.linfo.org/kernel.html |url-status=live }}</ref> साथ ही खराब कार्य करने वाले अनुप्रयोगों को अन्य अनुप्रयोगों को प्रभावित करने या संपूर्ण ऑपरेटिंग सिस्टम को ख़राब करने से रोकता है। उन प्रणालियों में भी जहां कर्नेल को एप्लिकेशन [[ पता स्थान |संबोधित स्थल]] में सम्मिलित किया गया है, अनधिकृत एप्लिकेशन को कर्नेल को संशोधित करने से रोकने के लिए स्मृति सुरक्षा का उपयोग किया जाता है। | |||
कर्नेल का समीक्षात्मक कोड प्रायः | |||
कर्नेल का [[ अप्लिकेशन प्रोग्रामिंग अंतरफलक |अप्लिकेशन प्रोग्रामिंग अंतरफलक]] एक निम्न-स्तरीय [[ अमूर्त परत |अमूर्त परत]] है। जब कोई [[ प्रक्रिया (कंप्यूटिंग) |प्रक्रिया]] कर्नेल से एक कार्य का अनुरोध करती है, तो इसे प्रायः एक[[ आवरण समारोह | आवरण फलन]](रैपर फ़ंक्शन) के माध्यम से [[ सिस्टम कॉल |सिस्टम कॉल]] का आह्वान करना चाहिए। | कर्नेल का [[ अप्लिकेशन प्रोग्रामिंग अंतरफलक |अप्लिकेशन प्रोग्रामिंग अंतरफलक]] एक निम्न-स्तरीय [[ अमूर्त परत |अमूर्त परत]] है। जब कोई [[ प्रक्रिया (कंप्यूटिंग) |प्रक्रिया]] कर्नेल से एक कार्य का अनुरोध करती है, तो इसे प्रायः एक[[ आवरण समारोह | आवरण फलन]](रैपर फ़ंक्शन) के माध्यम से [[ सिस्टम कॉल |सिस्टम कॉल]] का आह्वान करना चाहिए। | ||
यहाँ विभिन्न कर्नेल | यहाँ विभिन्न कर्नेल स्थापत्य संरचनाएं हैं। मुख्य रूप से गति के लिए पर्यवेक्षक प्रणाली(मोड) में सीपीयू के निष्पादन के साथ मोनोलिथिक कर्नेल पूरी तरह से एक ही संबोधित स्थल में चलते हैं। [[ माइक्रोकर्नेल |माइक्रोकर्नेल]] अपने अधिकांश कार्य लेकिन उनकी सभी सेवाएं नहीं, उपयोगकर्ता स्थान में चलाते हैं ,<ref>cf. [[Daemon (computing)]]</ref> जैसे उपयोगकर्ता प्रक्रियाएं करती हैं, मुख्य रूप से लचीलापन और [[ मॉड्यूलर प्रोग्रामिंग |प्रमापीय प्रोग्रामिंग]] के लिए उपयोगकर्ता प्रक्रियाओं की तरह चलाते हैं।<ref name="mono-micro">Roch 2004</ref> मिनी एक्स ([[ MINIX 3 |मिनीएक्स 3]]) माइक्रोकर्नेल प्रारुप का एक उल्लेखनीय उदाहरण है। इसके बजाय, [[ लिनक्स कर्नेल |लिनक्स कर्नेल]] मोनोलिथिक है, हालांकि यह प्रतिरूपक भी है, क्योंकि यह कार्यावधि पर [[ लोड करने योग्य कर्नेल मॉड्यूल |चलाने योग्य कर्नेल इकाई]] को सम्मिलित और हटा सकता है। | ||
कंप्यूटर सिस्टम का यह केंद्रीय घटक प्रोग्राम को क्रियान्वित करने के लिए जिम्मेदार है। कर्नेल किसी भी समय निर्णय लेने की जिम्मेदारी लेता है कि चल रहे कई प्रोग्रामों में से कौन सा प्रोसेसर या प्रोसेसर को आवंटित किया जाना चाहिए। | कंप्यूटर सिस्टम का यह केंद्रीय घटक प्रोग्राम को क्रियान्वित करने के लिए जिम्मेदार है। कर्नेल किसी भी समय निर्णय लेने की जिम्मेदारी लेता है कि चल रहे कई प्रोग्रामों में से कौन सा प्रोसेसर या प्रोसेसर को आवंटित किया जाना चाहिए। | ||
== यादृच्छिक अभिगम स्मृति (रैंडम-एक्सेस मेमोरी ) == | == यादृच्छिक अभिगम स्मृति (रैंडम-एक्सेस मेमोरी) == | ||
रैंडम-एक्सेस | रैंडम-एक्सेस स्मृति (RAM) का उपयोग प्रोग्राम निर्देश और डेटा दोनों को संचित करने के लिए किया जाता है।{{efn|It may depend on the [[Computer architecture]]}} प्रायः, किसी प्रोग्राम को निष्पादित करने के लिए दोनों को स्मृति में उपस्थित होने की आवश्यकता होती है। सामान्यतः कई प्रोग्राम स्मृति तक पहुंचना चाहते हैं, सामान्यतः कंप्यूटर की तुलना में अधिक स्मृति की मांग करते हैं। कर्नेल यह तय करने के लिए जिम्मेदार है कि प्रत्येक प्रक्रिया किस स्मृति का उपयोग कर सकती है, और यह निर्धारित करने के लिए कि पर्याप्त स्मृति उपलब्ध नहीं होने पर क्या करना है। | ||
== इनपुट/आउटपुट उपकरण == | == इनपुट/आउटपुट उपकरण == | ||
इनपुट/आउटपुट उपकरण में कीबोर्ड, माइस, डिस्क ड्राइव, प्रिंटर, [[ USB |यू एस बी | इनपुट/आउटपुट उपकरण में कीबोर्ड, माइस, डिस्क ड्राइव, प्रिंटर, [[ USB |यू एस बी]] उपकरण, नेटवर्क एडेप्टर और [[ प्रदर्शन उपकरण |प्रदर्शन उपकरण]] जैसे सह उपकरण सम्मिलित हैं। कर्नेल एक उपयुक्त उपकरण को इनपुट/आउटपुट निष्पादित करने के लिए एप्लिकेशन से अनुरोध आवंटित करता है और उपकरण का उपयोग करने के लिए सुविधाजनक तरीके प्रदान करता है (प्रायः उस बिंदु पर सारणित किया जाता है जहां एप्लिकेशन को उपकरण के कार्यान्वयन विवरण जानने की आवश्यकता नहीं होती है)। | ||
== संसाधन प्रबंधन == | == संसाधन प्रबंधन == | ||
[[ संसाधन प्रबंधन (कंप्यूटिंग) | संसाधन प्रबंधन(कंप्यूटिंग)]] में आवश्यक प्रमुख पहलू निष्पादन कार्यक्षेत्र या डोमेन[[ वर्चुअल एड्रेस स्पेस |( | [[ संसाधन प्रबंधन (कंप्यूटिंग) |संसाधन प्रबंधन(कंप्यूटिंग)]] में आवश्यक प्रमुख पहलू निष्पादन कार्यक्षेत्र या डोमेन[[ वर्चुअल एड्रेस स्पेस |(संबोधित स्थल]]) को परिभाषित कर रहे हैं '''और एक''' कार्यक्षेत्र के भीतर संसाधनों तक मध्यस्थता करने के लिए सुरक्षा तंत्र का उपयोग किया जाता है।<ref name="Wulf74">Wulf 1974 pp.337–345</ref> कर्नेल तुल्यकालन और अंतर-प्रक्रिया संचार(आई पी सी) के लिए विधियाँ भी प्रदान करते हैं। ये कार्यान्वयन कर्नेल के भीतर ही स्थित हो सकते हैं या कर्नेल अन्य प्रक्रियाओं जो चल रही हैं, पर भी भरोसा कर सकता है। हालांकि कर्नेल को एक दूसरे द्वारा प्रदान की जाने वाली सुविधाओं तक प्रवेश कराने के लिए आई पी सी प्रदान करना चाहिए, कर्नेल को इन सुविधाओं तक पहुंच के लिए अनुरोध करने के तरीके के साथ चल रहे प्रोग्राम भी प्रदान करने चाहिए। कर्नेल प्रक्रियाओं या थ्रेड्स के बीच संदर्भ स्विचन के लिए भी जिम्मेदार है। | ||
== | == स्मृति प्रबन्धन == | ||
{{More|मेमोरी प्रबंधन (ऑपरेटिंग सिस्टम) }} | {{More|मेमोरी प्रबंधन (ऑपरेटिंग सिस्टम) }} | ||
कर्नेल के पास सिस्टम की | कर्नेल के पास सिस्टम की स्मृति तक पूर्ण पहुंच होती है और प्रक्रियाओं को इस स्मृति को सुरक्षित रूप से चलाने की अनुमति देनी चाहिए क्योंकि उन्हें इसकी आवश्यकता होती है। ऐसा करने में सामान्यतः पहला कदम [[ वर्चुअल एड्रेसिंग |कल्पित एड्रेसिंग(वर्चुअल एड्रेसिंग)]] होता है, जिसे प्रायः[[ पेजिंग | पेजिंग]] और/या [[ विभाजन (मेमोरी) |विभाजन (स्मृति)]] द्वारा हासिल किया जाता है। कल्पित एड्रेसिंग कर्नेल को एक दिए गए भौतिक पते को एक और पता, आभासी पता बनाने की अनुमति देता है। विभिन्न प्रक्रियाओं के लिए कल्पित संबोधित स्थल भिन्न हो सकते हैं; स्मृति जो एक प्रक्रिया किसी विशेष(आभासी) पते पर पहुंचती है, वह अलग-अलग स्मृति हो सकती है जो एक ही पते पर दूसरी प्रक्रिया तक पहुंचती है। यह प्रत्येक प्रोग्राम को व्यवहार करने की अनुमति देता है जैसे कि यह केवल एक ही अकेला(कर्नेल के अलावा) चल रहा है और इस प्रकार अनुप्रयोगों(ऍप्लिकेशन्स) को एक दूसरे को ख़राब होने से रोकता है।<ref name="OS-Concepts">Silberschatz 1991</ref> | ||
कई प्रणालियों पर, प्रोग्राम का कल्पित पता उस डेटा को संदर्भित कर सकता है जो वर्तमान में स्मृति में नहीं है। कल्पित एड्रेसिंग द्वारा प्रदान की गई अप्रत्यक्ष [[ विलक्षणता (ऑपरेटिंग सिस्टम) |विलक्षणता (ऑपरेटिंग सिस्टम)]] को [[ हार्ड ड्राइव |हार्ड ड्राइव]] की तरह अन्य डेटा संचय(स्टोर्स) का उपयोग करने की अनुमति देती है, जो अन्यथा मुख्य | कई प्रणालियों पर, प्रोग्राम का कल्पित पता उस डेटा को संदर्भित कर सकता है जो वर्तमान में स्मृति में नहीं है। कल्पित एड्रेसिंग द्वारा प्रदान की गई अप्रत्यक्ष [[ विलक्षणता (ऑपरेटिंग सिस्टम) |विलक्षणता (ऑपरेटिंग सिस्टम)]] को [[ हार्ड ड्राइव |हार्ड ड्राइव]] की तरह अन्य डेटा संचय(स्टोर्स) का उपयोग करने की अनुमति देती है, जो अन्यथा मुख्य स्मृति (रैंडम-एक्सेस स्मृति) में बनी रहती है। परिणामतः, ऑपरेटिंग सिस्टम प्रोग्राम को भौतिक रूप से उपलब्ध सिस्टम की तुलना में अधिक स्मृति का उपयोग करने की अनुमति दे सकता है। जब किसी प्रोग्राम को ऐसे डेटा की आवश्यकता होती है जो वर्तमान में रैम में नहीं है, तो सीपीयू कर्नेल को संकेत देता है कि ऐसा हो गया है, और कर्नेल एक निष्क्रिय स्मृति ब्लॉक की सामग्री को डिस्क (यदि आवश्यक हो) में लिखकर प्रतिक्रिया देता है और इसके द्वारा अनुरोधित डेटा के साथ बदल देता है। प्रोग्राम को फिर से उस बिंदु से फिर से शुरू किया जा सकता है जहां इसे रोका गया था। इस योजना को प्रायः [[ मांग पेजिंग |डिमांड पेजिंग]] के रूप में जाना जाता है। | ||
कल्पित एड्रेसिंग दो अलग-अलग क्षेत्रों में | कल्पित एड्रेसिंग दो अलग-अलग क्षेत्रों में स्मृति के कल्पित विभाजन के निर्माण की अनुमति देता है, एक कर्नेल (कर्नेल स्थल) के लिए आरक्षित होता है और दूसरा एप्लिकेशन (यूजर स्थल) के लिए आरक्षित होता है। प्रोसेसर द्वारा एप्लिकेशन को कर्नेल स्मृति को संबोधित करने की अनुमति नहीं है, इस प्रकार यह एप्लिकेशन को चल रहे कर्नेल को नुकसान पहुंचाने से रोकता है। स्मृति स्थल के इस मौलिक विभाजन ने वास्तविक सामान्य-उद्देश्य कर्नेल के वर्तमान प्रारुप में बहुत योगदान दिया है और ऐसी प्रणालियों में लगभग सार्वभौमिक है, हालांकि कुछ शोध कर्नेल (जैसे, विलक्षणता) अन्य दृष्टिकोण अपनाते हैं। | ||
== उपकरण प्रबंधन == | == उपकरण प्रबंधन == | ||
उपयोगी कार्यों को करने के लिए, प्रक्रियाओं को कंप्यूटर से जुड़े बाह्य उपकरणों तक पहुंच की आवश्यकता होती है, जो उपकरण(डिवाइस) ड्राइवरों के माध्यम से कर्नेल द्वारा नियंत्रित होते हैं। एक | उपयोगी कार्यों को करने के लिए, प्रक्रियाओं को कंप्यूटर से जुड़े बाह्य उपकरणों तक पहुंच की आवश्यकता होती है, जो उपकरण(डिवाइस) ड्राइवरों के माध्यम से कर्नेल द्वारा नियंत्रित होते हैं। एक उपकरण ड्राइवर एक कंप्यूटर प्रोग्राम है जो एक हार्डवेयर उपकरण को संपुटित, निगरानी और नियंत्रित (ओएस के माध्यम से [https://पाठ्यक्रम.cs.washington.edu/courses/cse351/11wi/lectures/Hardware/Software अंतरापृष्ठ(एच एस आई)]) करता है । यह ऑपरेटिंग सिस्टम को एक ए पी आई, कार्यविधि और जानकारी प्रदान करता है कि हार्डवेयर के एक निश्चित टुकड़े के साथ कैसे नियंत्रण और संचार किया जाए। उपकरण ड्राइवर सभी ओ एस और उनके ऍप्लिकेशन्स के लिए एक महत्वपूर्ण और अहम निर्भरता प्रदान करते हैं। ड्राइवर का प्रारुप लक्ष्य अमूर्तता है; ड्राइवर का कार्य ओएस-अनिवार्य सार फ़ंक्शन कॉल (प्रोग्रामिंग कॉल) को उपकरण-विशिष्ट कॉल में अनुवाद करना है। सैद्धांतिक रूप में, एक उपकरण को उपयुक्त ड्राइवर के साथ सही ढंग से काम करना चाहिए। उपकरण ड्राइवरों का उपयोग उदहारण पूर्वक वीडियो कार्ड, साउंड कार्ड, प्रिंटर, स्कैनर, मोडेम और नेटवर्क कार्ड में होता है। | ||
हार्डवेयर स्तर पर, | हार्डवेयर स्तर पर, उपकरण ड्राइवरों के सामान्य सार में सम्मिलित हैं: | ||
* सीधे | * सीधे सहसंबंधन | ||
* एक उच्च-स्तरीय अंतरापृष्ठ(इंटरफ़ेस) (वीडियो बी आई ओ एस [[ BIOS |( BIOS)]] ) का उपयोग करना | * एक उच्च-स्तरीय अंतरापृष्ठ(इंटरफ़ेस) (वीडियो बी आई ओ एस [[ BIOS |(BIOS)]]) का उपयोग करना | ||
* निचले स्तर के | * निचले स्तर के उपकरण ड्राइवर का उपयोग करना (डिस्क ड्राइवरों का उपयोग करने वाले दस्तावेज़ ड्राइवर) | ||
* पूरी तरह से कुछ अलग करते हुए, हार्डवेयर के साथ काम को अनुकरण करना | * पूरी तरह से कुछ अलग करते हुए, हार्डवेयर के साथ काम को अनुकरण करना | ||
और सॉफ्टवेयर स्तर पर, | और सॉफ्टवेयर स्तर पर, उपकरण ड्राइवर सार में सम्मिलित हैं: | ||
* ऑपरेटिंग सिस्टम को हार्डवेयर संसाधनों तक सीधी पहुंच की अनुमति देना | * ऑपरेटिंग सिस्टम को हार्डवेयर संसाधनों तक सीधी पहुंच की अनुमति देना | ||
* केवल आदिम(प्रिमिटिव) लागू करना | * केवल आदिम(प्रिमिटिव) लागू करना | ||
* [[ TWAIN | त्वैन(TWAIN)]] जैसे गैर-चालक सॉफ़्टवेयर के लिए एक इंटरफ़ेस कार्यान्वित करना | * [[ TWAIN | त्वैन(TWAIN)]] जैसे गैर-चालक सॉफ़्टवेयर के लिए एक इंटरफ़ेस कार्यान्वित करना | ||
* एक भाषा को लागू करना (सामान्यतः एक उच्च स्तरीय भाषा जैसे [[ परिशिष्ट भाग |परिशिष्ट भाग]] ) | * एक भाषा को लागू करना (सामान्यतः एक उच्च स्तरीय भाषा जैसे [[ परिशिष्ट भाग |परिशिष्ट भाग]]) | ||
उदाहरण के लिए, उपयोगकर्ता को चित्रपट(स्क्रीन) पर कुछ दिखाने के लिए, एक एप्लिकेशन कर्नेल से अनुरोध करेगा, जो अनुरोध को उसके प्रदर्शित ड्राइवर को अग्रेषित करेगा, जो वास्तव में शैली/पिक्सेल(चित्र अवयव) के आलेखन के लिए जिम्मेदार है।<ref name="OS-Concepts"/> | |||
उदाहरण के लिए, उपयोगकर्ता | एक कर्नेल को उपलब्ध उपकरणों की एक सूची बनाए रखनी चाहिए। यह सूची पहले से ज्ञात हो सकती है (उदाहरण के लिए, एक[[ अंतः स्थापित प्रणाली ]]पर जहां उपलब्ध हार्डवेयर परिवर्तन होने पर कर्नेल को फिर से लिखा जाएगा), उपयोगकर्ता द्वारा निर्माण किया गया (पुराने पीसी पर और व्यक्तिगत उपयोग के लिए प्रारुप नहीं किए गए सिस्टम पर) या द्वारा पता लगाया गया रन टाइम पर ऑपरेटिंग सिस्टम (प्रायः [[ प्लग करें और खेलें |प्लग करें और खेलें]] कहा जाता है)। प्लग-एंड-प्ले सिस्टम में, एक उपकरण मैनेजर पहले स्थापित उपकरणों का पता लगाने के लिए [[ पेरिफ़ेरल कंपोनेंट इंटरकनेक्ट |पेरिफ़ेरल कंपोनेंट इंटरकनेक्ट]] (पीसीआई) या [[ यूनिवर्सल सीरियल बस |यूनिवर्सल सीरियल बस]](यूएसबी) जैसे विभिन्न [[ परिधीय बस |परिधीय]] [[बसों]] पर बारीकी से जाँच करता है, फिर उपयुक्त ड्राइवरों की खोज करता है। | ||
एक | चूंकि उपकरण प्रबंधन एक बहुत ही ऑपरेटिंग ओ एस-विशिष्ट विषय है, इन ड्राइवरों को प्रत्येक प्रकार के कर्नेल प्रारुप द्वारा अलग तरीके से नियंत्रित किया जाता है, लेकिन हर स्थिति में, कर्नेल को इनपुट/आउटपुट प्रदान करना होता है। इनपुट/आउटपुट ड्राइवरों को भौतिक रूप से अपने उपकरणों तक पहुंचने की अनुमति देता है। कुछ [[ पोर्ट (कंप्यूटर नेटवर्किंग) |द्वारक(कंप्यूटर नेटवर्किंग)]] या स्मृति स्थिति के माध्यम से उपकरणों तक पहुंचने की अनुमति देता है। उपकरण प्रबंधन प्रणाली को परिकलन करते समय महत्वपूर्ण निर्णय लेने होते हैं, क्योंकि कुछ प्रारूपों में प्रवेश मार्ग में [[ संदर्भ स्विच |संदर्भ कुंजी]] सम्मिलित हो सकते हैं, जिससे संचालन बहुत सीपीयू-गहन हो जाता है और आसानी से एक महत्वपूर्ण प्रदर्शन शिरोपरि हो जाता है। | ||
== सिस्टम कॉल == | == सिस्टम कॉल == | ||
{{Main| | {{Main|सिस्टम कॉल}} | ||
कंप्यूटिंग में, एक सिस्टम कॉल यह है कि कैसे एक प्रक्रिया एक ऑपरेटिंग सिस्टम के कर्नेल से एक सेवा का अनुरोध करती है जिसे चलाने की अनुमति सामान्य रूप से नहीं होती है। सिस्टम कॉल एक प्रक्रिया और ऑपरेटिंग सिस्टम के बीच अंतरापृष्ठ प्रदान करते हैं। सिस्टम के साथ पारस्परिक क्रिया करने वाले अधिकांश संक्रियायों के लिए अनुमति की आवश्यकता होती है जो उपयोगकर्ता-स्तरीय प्रक्रिया के लिए उपलब्ध नहीं होती है, उदाहरण के लिए,इनपुट/आउटपुट सिस्टम पर मौजूद | कंप्यूटिंग में, एक सिस्टम कॉल यह है कि कैसे एक प्रक्रिया एक ऑपरेटिंग सिस्टम के कर्नेल से एक सेवा का अनुरोध करती है जिसे चलाने की अनुमति सामान्य रूप से नहीं होती है। सिस्टम कॉल एक प्रक्रिया और ऑपरेटिंग सिस्टम के बीच अंतरापृष्ठ प्रदान करते हैं। सिस्टम के साथ पारस्परिक क्रिया करने वाले अधिकांश संक्रियायों के लिए अनुमति की आवश्यकता होती है जो उपयोगकर्ता-स्तरीय प्रक्रिया के लिए उपलब्ध नहीं होती है, उदाहरण के लिए, इनपुट/आउटपुट सिस्टम पर मौजूद उपकरण के साथ किया जाता है, या अन्य प्रक्रियाओं के साथ संचार के किसी भी रूप में सिस्टम कॉल के उपयोग की आवश्यकता होती है। | ||
एक सिस्टम कॉल एक तंत्र है जिसका उपयोग एप्लिकेशन प्रोग्राम द्वारा ऑपरेटिंग सिस्टम से सेवा का अनुरोध करने के लिए किया जाता है। वे एक [[ मशीन कोड |मशीन कोड]] | एक सिस्टम कॉल एक तंत्र है जिसका उपयोग एप्लिकेशन प्रोग्राम द्वारा ऑपरेटिंग सिस्टम से सेवा का अनुरोध करने के लिए किया जाता है। वे एक [[ मशीन कोड |मशीन कोड]] निर्देश का उपयोग करते हैं जो प्रोसेसर के तरीका(मोड) बदलने का कारण बनता है। एक उदाहरण, पर्यवेक्षक विधा(मोड) से संरक्षित विधा में होगा। यह वह जगह है जहां ऑपरेटिंग सिस्टम हार्डवेयर उपकरण या [[ स्मृति प्रबंधन इकाई |स्मृति प्रबंधन इकाई]] तक पहुंचने जैसी क्रियाएं करता है। प्रायः ऑपरेटिंग सिस्टम एक प्रोग्राम संग्रह प्रदान करता है जो ऑपरेटिंग सिस्टम और सामान्य उपयोगकर्ता प्रोग्राम के बीच होता है। प्रायः यह एक सी(प्रोग्रामिंग लैंग्वेज) है जैसे ग्लिबक या विंडोज एपीआई(विंडोज API) की तरह होता है। प्रोग्राम संग्रह कर्नेल को जानकारी पास करने और पर्यवेक्षक विधा में कुंजी करने के निम्न-स्तरीय विवरण को संभालता है। सिस्टम कॉल में बंद होना, खुलना, पढ़ना, इंतज़ार करना और लिखना(क्लोज, ओपन, रीड, वेट और राइट) सम्मिलित हैं। | ||
वास्तव में उपयोगी कार्य करने के लिए, एक प्रक्रिया को कर्नेल द्वारा प्रदान की जाने वाली सेवाओं तक पहुँचने में सक्षम होना चाहिए। यह प्रत्येक कर्नेल द्वारा अलग तरीके से लागू किया जाता है, लेकिन अधिकांश [[ सी पुस्तकालय |सी प्रोग्राम संग्रह]] या एक एप्लिकेशन प्रोग्रामिंग अंतरापृष्ठ प्रदान करते हैं, जो बदले में संबंधित कर्नेल कार्यों को आमंत्रित करता है।<ref>{{cite book |last= Tanenbaum|first=Andrew S.|author-link=Andrew S. Tanenbaum |title=आधुनिक ऑपरेटिंग सिस्टम|edition=3rd |year=2008 |publisher=Prentice Hall |isbn=978-0-13-600663-3 |pages=50–51 |quote=. . . लगभग सभी सिस्टम कॉल [हैं] एक पुस्तकालय प्रक्रिया को कॉल करके C प्रोग्राम से मंगाई जाती हैं। . . पुस्तकालय प्रक्रिया। . . उपयोगकर्ता मोड से कर्नेल मोड में स्विच करने और निष्पादन शुरू करने के लिए TRAP निर्देश निष्पादित करता है। . . }}</ref> | वास्तव में उपयोगी कार्य करने के लिए, एक प्रक्रिया को कर्नेल द्वारा प्रदान की जाने वाली सेवाओं तक पहुँचने में सक्षम होना चाहिए। यह प्रत्येक कर्नेल द्वारा अलग तरीके से लागू किया जाता है, लेकिन अधिकांश [[ सी पुस्तकालय |सी प्रोग्राम संग्रह]] या एक एप्लिकेशन प्रोग्रामिंग अंतरापृष्ठ प्रदान करते हैं, जो बदले में संबंधित कर्नेल कार्यों को आमंत्रित करता है।<ref>{{cite book |last= Tanenbaum|first=Andrew S.|author-link=Andrew S. Tanenbaum |title=आधुनिक ऑपरेटिंग सिस्टम|edition=3rd |year=2008 |publisher=Prentice Hall |isbn=978-0-13-600663-3 |pages=50–51 |quote=. . . लगभग सभी सिस्टम कॉल [हैं] एक पुस्तकालय प्रक्रिया को कॉल करके C प्रोग्राम से मंगाई जाती हैं। . . पुस्तकालय प्रक्रिया। . . उपयोगकर्ता मोड से कर्नेल मोड में स्विच करने और निष्पादन शुरू करने के लिए TRAP निर्देश निष्पादित करता है। . . }}</ref> | ||
कर्नेल फ़ंक्शन को लागू करने की विधि कर्नेल से कर्नेल में भिन्न होती है। यदि स्मृति अलगाव उपयोग में है, तो उपयोगकर्ता प्रक्रिया के लिए कर्नेल को सीधे आवाहन करना असंभव है, क्योंकि यह प्रोसेसर के अभिगम नियंत्रण नियमों का उल्लंघन होगा। कुछ संभावनाएं हैं: | कर्नेल फ़ंक्शन को लागू करने की विधि कर्नेल से कर्नेल में भिन्न होती है। यदि स्मृति अलगाव उपयोग में है, तो उपयोगकर्ता प्रक्रिया के लिए कर्नेल को सीधे आवाहन करना असंभव है, क्योंकि यह प्रोसेसर के अभिगम नियंत्रण नियमों का उल्लंघन होगा। कुछ संभावनाएं हैं: | ||
* सॉफ़्टवेयर-सिम्युलेटेड [[ रुकावट डालना |रुकावट(इंटरप्ट)]] का उपयोग करना। यह विधि अधिकांश हार्डवेयर पर उपलब्ध है, और इसलिए बहुत सामान्य है। | * सॉफ़्टवेयर-कृत्रिम (सिम्युलेटेड) [[ रुकावट डालना |रुकावट (इंटरप्ट)]] का उपयोग करना। यह विधि अधिकांश हार्डवेयर पर उपलब्ध है, और इसलिए बहुत सामान्य है। | ||
* [[ कॉल गेट | कॉल गेट]] का उपयोग करना। कॉल गेट एक विशेष पता है जो कर्नेल द्वारा प्रोसेसर को ज्ञात स्थान पर कर्नेल | * [[ कॉल गेट | कॉल गेट]] का उपयोग करना। कॉल गेट एक विशेष पता है जो कर्नेल द्वारा प्रोसेसर को ज्ञात स्थान पर कर्नेल स्मृति में एक सूची में संग्रहीत किया जाता है। जब प्रोसेसर उस पते पर एक कॉल का पता लगाता है, तो यह बिना पहुंच उल्लंघन के लक्षित स्थान पर अनुप्रेषित करता है। इसके लिए हार्डवेयर आधार की जरूरत होती है, लेकिन इसके लिए हार्डवेयर काफी सामान्य है। | ||
* एक विशेष सिस्टम कॉल निर्देश का उपयोग करना। इस तकनीक के लिए विशेष हार्डवेयर समर्थन की आवश्यकता होती है, जिसमें सामान्य संरचना (विशेष रूप से, x[[ 86 |86]] ) की कमी हो सकती है। हालाँकि, x86 प्रोसेसर के हाल के | * एक विशेष सिस्टम कॉल निर्देश का उपयोग करना। इस तकनीक के लिए विशेष हार्डवेयर समर्थन की आवश्यकता होती है, जिसमें सामान्य संरचना (विशेष रूप से, x[[ 86 |86]]) की कमी हो सकती है। हालाँकि, x86 प्रोसेसर के हाल के प्रतिरूप में सिस्टम कॉल निर्देश जोड़े गए हैं, और पीसी के लिए कुछ ऑपरेटिंग सिस्टम उपलब्ध होने पर उनका उपयोग करते हैं। | ||
* | * स्मृति-आधारित कतार का उपयोग करना। एक एप्लिकेशन जो बड़ी संख्या में अनुरोध करता है, लेकिन प्रत्येक के परिणाम के लिए प्रतीक्षा करने की आवश्यकता नहीं होती है, स्मृति के एक क्षेत्र में अनुरोधों का विवरण जोड़ सकता है जिसे कर्नेल समय-समय पर अनुरोधों को खोजने के लिए पर्यवेक्षण(स्कैन) करता है। | ||
== कर्नेल | == कर्नेल प्रारुप निर्णय == | ||
=== संरक्षण === | === संरक्षण === | ||
कर्नेल के | कर्नेल के प्रारुप में एक महत्वपूर्ण विचार वह समर्थन है जो यह दोषों([[ दोष सहिष्णुता |दोष सहिष्णुता]]) और दुर्भावनापूर्ण व्यवहारों([[ कंप्यूटर सुरक्षा |कंप्यूटर सुरक्षा]]) से सुरक्षा के लिए प्रदान करता है। इन दो पहलुओं को प्रायः स्पष्ट रूप से अलग नहीं किया जाता है, और कर्नेल प्रारुप में इस भेद को अपनाने से सुरक्षा के लिए पदानुक्रमित संरचना को अस्वीकार कर दिया जाता है।।<ref name="Wulf74" /> | ||
कर्नेल द्वारा प्रदान किए गए तंत्र या नीतियों को कई मानदंडों के अनुसार वर्गीकृत किया जा सकता है, जिनमें सम्मिलित हैं: स्थिर([[ संकलन समय |संकलन समय]] पर लागू) या गतिशील ([[ रन टाइम (कार्यक्रम जीवनचक्र चरण) ]]पर लागू); पूर्व-खाली या बाद का पता लगाने; वे सुरक्षा सिद्धांतों के अनुसार संतुष्ट होते हैं (उदाहरण के लिए, पीटर जे. डेनिंग<ref name="Denning76">Denning 1976</ref><ref name="Swift05Denning76">Swift 2005, p.29 quote: "isolation, resource control, decision verification (checking), and error recovery."</ref>); चाहे वे हार्डवेयर समर्थित हों या भाषा आधारित; चाहे वे अधिक खुले तंत्र हों या बाध्यकारी नीति; और भी कई होते हैं। | कर्नेल द्वारा प्रदान किए गए तंत्र या नीतियों को कई मानदंडों के अनुसार वर्गीकृत किया जा सकता है, जिनमें सम्मिलित हैं: स्थिर([[ संकलन समय |संकलन समय]] पर लागू) या गतिशील ([[ रन टाइम (कार्यक्रम जीवनचक्र चरण) |रन टाइम (कार्यक्रम जीवनचक्र चरण)]] पर लागू); पूर्व-खाली या बाद का पता लगाने; वे सुरक्षा सिद्धांतों के अनुसार संतुष्ट होते हैं (उदाहरण के लिए, पीटर जे. डेनिंग<ref name="Denning76">Denning 1976</ref><ref name="Swift05Denning76">Swift 2005, p.29 quote: "isolation, resource control, decision verification (checking), and error recovery."</ref>); चाहे वे हार्डवेयर समर्थित हों या भाषा आधारित; चाहे वे अधिक खुले तंत्र हों या बाध्यकारी नीति; और भी कई होते हैं। | ||
पदानुक्रमित सुरक्षा डोमेन के लिए समर्थन<ref name="Schroeder72">Schroeder 72</ref> प्रायः [[ सीपीयू मोड |सीपीयू | पदानुक्रमित सुरक्षा डोमेन के लिए समर्थन<ref name="Schroeder72">Schroeder 72</ref> प्रायः [[ सीपीयू मोड |सीपीयू विधा]] का उपयोग करके कार्यान्वित किया जाता है। | ||
कई कर्नेल क्षमताओं का कार्यान्वयन प्रदान करते हैं, अर्थात, ऐसी प्रयोजन जो उपयोगकर्ता कोड को प्रदान की जाती हैं जो कर्नेल द्वारा प्रबंधित अंतर्निहित वस्तु तक सीमित पहुँच की अनुमति देती हैं। एक सामान्य उदाहरण | कई कर्नेल "क्षमताओं" का कार्यान्वयन प्रदान करते हैं, अर्थात, ऐसी प्रयोजन जो उपयोगकर्ता कोड को प्रदान की जाती हैं जो कर्नेल द्वारा प्रबंधित अंतर्निहित वस्तु तक सीमित पहुँच की अनुमति देती हैं। इसका एक सामान्य उदाहरण दस्तावेज़ हैंडलिंग है: एक दस्तावेज़ स्थायी संचयन(स्टोरेज) उपकरण पर संग्रहीत जानकारी का प्रतिनिधित्व करता है। कर्नेल पढ़ने, लिखने, हटाने या निष्पादित करने सहित कई अलग-अलग संचालन करने में सक्षम हो सकता है, लेकिन एक उपयोगकर्ता-स्तरीय एप्लिकेशन को केवल इनमें से कुछ कार्यों को करने की अनुमति दी जा सकती है (उदाहरण के लिए, इसे केवल दस्तावेज़ पढ़ने की अनुमति दी जा सकती है)। इसका एक सामान्य कार्यान्वयन कर्नेल के लिए एप्लिकेशन को एक प्रयोजन प्रदान करना है (प्रायः एक दस्तावेज़ हैंडल कहा जाता है) जिस पर एप्लिकेशन तब संचालन शुरू कर सकता है, जिसकी वैधता संचालन के अनुरोध के समय कर्नेल जांचता है। ऐसी प्रणाली को उन सभी वस्तुओं को आच्छादित करने के लिए विस्तारित किया जा सकता है जो कर्नेल प्रबंधित करता है, और वास्तव में अन्य उपयोगकर्ता ऍप्लिकेशन्स द्वारा प्रदान की गई वस्तुओं के लिए किया जाता है। | ||
क्षमताओं का हार्डवेयर समर्थन प्रदान करने का एक कुशल और सरल तरीका है | क्षमताओं का हार्डवेयर समर्थन प्रदान करने का एक कुशल और सरल तरीका है कि स्मृति मैनेजमेंट यूनिट(MMU) को हर स्मृति अभिगमन के लिए अभिगमन-अधिकारों की जाँच करने की ज़िम्मेदारी सौंपना, यह एक तंत्र है जिसे क्षमता-आधारित पताभिगमन कहा जाता है।<ref name="LindenCapabilityAddressing">Linden 76</ref> अधिकांश वाणिज्यिक कंप्यूटर संरचना में क्षमताओं के लिए ऐसे एम एम यू(MMU) समर्थन की कमी होती है। | ||
एक वैकल्पिक दृष्टिकोण प्रायः समर्थित पदानुक्रमित डोमेन का उपयोग करके क्षमताओं का अनुकरण करता है। इस दृष्टिकोण में, प्रत्येक संरक्षित वस्तु को एक | एक वैकल्पिक दृष्टिकोण प्रायः समर्थित पदानुक्रमित डोमेन का उपयोग करके क्षमताओं का अनुकरण करता है। इस दृष्टिकोण में, प्रत्येक संरक्षित वस्तु को एक संबोधित स्थल में रहना चाहिए, जिस पर एप्लिकेशन की पहुंच नहीं है; कर्नेल ऐसी स्मृति में क्षमताओं की एक सूची भी रखता है। जब किसी एप्लिकेशन को किसी क्षमता द्वारा संरक्षित वस्तु तक पहुंचने की आवश्यकता होती है, तो यह एक सिस्टम कॉल करता है और कर्नेल तब जांचता है कि क्या एप्लिकेशन की क्षमता इसे अनुरोधित क्रिया करने की अनुमति देती है, और यदि इसकी अनुमति है तो इसके लिए अभिगमन करता है (या तो सीधे, या किसी अन्य उपयोगकर्ता-स्तरीय प्रक्रिया को अनुरोध सौंप कर)। संबोधित स्थल स्विचिंग की प्रदर्शन लागत वस्तुओं के बीच जटिल परस्परक्रिया वाले सिस्टम में इस दृष्टिकोण की व्यावहारिकता को सीमित करती है, लेकिन इसका उपयोग वर्तमान ऑपरेटिंग सिस्टम में उन प्रयोजन के लिए किया जाता है जिन्हें बार-बार अभिगम नहीं किया जाता है या जो जल्दी से प्रदर्शन करने की उम्मीद नहीं करते हैं।<ref name="EranianMosberger">{{cite book |first1=Stephane |last1=Eranian |first2=David |last2=Mosberger |chapter-url=http://www.informit.com/articles/article.aspx?p=29961 |chapter=Virtual Memory in the IA-64 Linux Kernel |title=IA-64 Linux कर्नेल: डिज़ाइन और कार्यान्वयन|publisher=Prentice Hall PTR |date=2002 |isbn=978-0-13-061014-0}}</ref><ref>Silberschatz & Galvin, Operating System Concepts, 4th ed, pp. 445 & 446</ref> | ||
यदि फर्मवेयर सुरक्षा तंत्र का समर्थन नहीं करता है, तो उच्च स्तर पर सुरक्षा का अनुकरण करना संभव है, उदाहरण के लिए पृष्ठ तालिकाओं में हेरफेर करके क्षमताओं का अनुकरण करके, लेकिन प्रदर्शन निहितार्थ हैं।<ref name="HochBrowne">{{cite journal | last = Hoch | first = Charles |author2=J. C. Browne |date=July 1980 | यदि फर्मवेयर सुरक्षा तंत्र का समर्थन नहीं करता है, तो उच्च स्तर पर सुरक्षा का अनुकरण करना संभव है, उदाहरण के लिए पृष्ठ तालिकाओं में हेरफेर करके क्षमताओं का अनुकरण करके, लेकिन प्रदर्शन निहितार्थ हैं।<ref name="HochBrowne">{{cite journal | last = Hoch | first = Charles |author2=J. C. Browne |date=July 1980 | ||
Line 93: | Line 90: | ||
}}</ref> हार्डवेयर समर्थन की कमी एक समस्या नहीं हो सकती है, हालाँकि, उन सिस्टम के लिए जो भाषा-आधारित सुरक्षा का उपयोग करना चुनते हैं।<ref name="Schneider">{{cite web |url=https://www.cs.cmu.edu/~rwh/papers/langsec/dagstuhl.pdf |title=सुरक्षा के लिए एक भाषा-आधारित दृष्टिकोण|authors=Schneider F., Morrissett G. (Cornell University) and Harper R. (Carnegie Mellon University) |archive-url=https://web.archive.org/web/20181222193622/http://www.cs.cmu.edu/~rwh/papers/langsec/dagstuhl.pdf |archive-date=2018-12-22 |url-status=live}}</ref> | }}</ref> हार्डवेयर समर्थन की कमी एक समस्या नहीं हो सकती है, हालाँकि, उन सिस्टम के लिए जो भाषा-आधारित सुरक्षा का उपयोग करना चुनते हैं।<ref name="Schneider">{{cite web |url=https://www.cs.cmu.edu/~rwh/papers/langsec/dagstuhl.pdf |title=सुरक्षा के लिए एक भाषा-आधारित दृष्टिकोण|authors=Schneider F., Morrissett G. (Cornell University) and Harper R. (Carnegie Mellon University) |archive-url=https://web.archive.org/web/20181222193622/http://www.cs.cmu.edu/~rwh/papers/langsec/dagstuhl.pdf |archive-date=2018-12-22 |url-status=live}}</ref> | ||
एक महत्वपूर्ण कर्नेल | एक महत्वपूर्ण कर्नेल प्रारुपनिर्णय अमूर्त स्तरों का चुनाव है जहां सुरक्षा तंत्र और नीतियों को लागू किया जाना चाहिए। उच्च स्तर पर सुरक्षा का समर्थन करने में कर्नेल सुरक्षा तंत्र महत्वपूर्ण भूमिका निभाते हैं।<ref name="LindenCapabilityAddressing" /><ref name="Loscocco98" /><ref>{{Cite book |doi = 10.1145/504450.504477|chapter = The persistent relevance of the local operating system to global applications|title = विश्वव्यापी अनुप्रयोगों के लिए ACM SIGOPS यूरोपियन वर्कशॉप सिस्टम्स सपोर्ट पर 7वीं कार्यशाला की कार्यवाही - EW 7|pages = 133|year = 1996|last1 = Lepreau|first1 = Jay|last2 = Ford|first2 = Bryan|last3 = Hibler|first3 = Mike|s2cid = 10027108}}</ref><ref>{{cite report |first=J. |last=Anderson |url=http://csrc.nist.gov/publications/history/ande72.pdf |title=कंप्यूटर सुरक्षा प्रौद्योगिकी योजना अध्ययन|volume=II |publisher=Air Force Electronic Systems Division |id=ESD-TR-73-51, Vol. II |date=October 1972 |archive-url=https://web.archive.org/web/20110721060319/http://csrc.nist.gov/publications/history/ande72.pdf |archive-date=2011-07-21 |url-status=live}}</ref><ref>{{cite journal| author1 = Jerry H. Saltzer| author2 = Mike D. Schroeder| title = कंप्यूटर सिस्टम में सूचना का संरक्षण| journal = Proceedings of the IEEE| volume = 63| issue = 9| pages = 1278–1308| date = September 1975| url = http://web.mit.edu/Saltzer/www/publications/protection/| doi = 10.1109/PROC.1975.9939| citeseerx = 10.1.1.126.9257| s2cid = 269166| access-date = 2007-07-15| archive-date = 2021-03-08| archive-url = https://web.archive.org/web/20210308030942/http://web.mit.edu/Saltzer/www/publications/protection/| url-status = live}}</ref> | ||
एक दृष्टिकोण दोष सहिष्णुता के लिए प्रक्रिया यंत्र सामग्री और कर्नेल समर्थन का उपयोग करना है (ऊपर देखें), और उसके शीर्ष पर दुर्भावनापूर्ण व्यवहार के लिए सुरक्षा नीति का निर्माण करना (जहां आवश्यक हो, [[ क्रिप्टोग्राफी | क्रिप्टोग्राफी]] तंत्र जैसी सुविधाओं को जोड़ना), [[ संकलक | संकलक]] को कुछ जिम्मेदारी सौंपना है। वे दृष्टिकोण जो संकलक और/या एप्लीकेशन स्तर पर सुरक्षा नीति के प्रवर्तन को प्रत्यायोजित करते हैं, उन्हें सामान्यतः भाषा-आधारित सुरक्षा कहा जाता है। | एक दृष्टिकोण दोष सहिष्णुता के लिए प्रक्रिया यंत्र सामग्री और कर्नेल समर्थन का उपयोग करना है (ऊपर देखें), और उसके शीर्ष पर दुर्भावनापूर्ण व्यवहार के लिए सुरक्षा नीति का निर्माण करना (जहां आवश्यक हो, [[ क्रिप्टोग्राफी |क्रिप्टोग्राफी]] तंत्र जैसी सुविधाओं को जोड़ना), [[ संकलक |संकलक]] को कुछ जिम्मेदारी सौंपना है। वे दृष्टिकोण जो संकलक और/या एप्लीकेशन स्तर पर सुरक्षा नीति के प्रवर्तन को प्रत्यायोजित करते हैं, उन्हें सामान्यतः भाषा-आधारित सुरक्षा कहा जाता है। | ||
वर्तमान मुख्यधारा के ऑपरेटिंग सिस्टम में कई महत्वपूर्ण सुरक्षा तंत्रों की कमी अनुप्रयोग [[ अमूर्त स्तर |अमूर्त स्तर]] पर पर्याप्त सुरक्षा नीतियों के कार्यान्वयन में बाधा डालती है।<ref name="Loscocco98">{{cite conference |first1=P. A. |last1=Loscocco |first2=S. D. |last2=Smalley |first3=P. A. |last3=Muckelbauer |first4=R. C. |last4=Taylor |first5=S. J. |last5=Turner |first6=J. F. |last6=Farrell |url=http://www.jya.com/paperF1.htm |title=विफलता की अनिवार्यता: आधुनिक कंप्यूटिंग वातावरण में सुरक्षा की त्रुटिपूर्ण धारणा|book-title=Proceedings of the 21st National Information Systems Security Conference |pages=303–314 |date=October 1998 |archive-url=https://web.archive.org/web/20070621155813/http://jya.com/paperF1.htm |archive-date=2007-06-21 |url-status=dead}}</ref> वास्तव में, कंप्यूटर सुरक्षा में एक आम ग़लतफ़हमी यह है कि कर्नेल समर्थन की परवाह किए बिना किसी भी सुरक्षा नीति को एक अनुप्रयोग में लागू किया जा सकता है।<ref name="Loscocco98"/> | वर्तमान मुख्यधारा के ऑपरेटिंग सिस्टम में कई महत्वपूर्ण सुरक्षा तंत्रों की कमी अनुप्रयोग [[ अमूर्त स्तर |अमूर्त स्तर]] पर पर्याप्त सुरक्षा नीतियों के कार्यान्वयन में बाधा डालती है।<ref name="Loscocco98">{{cite conference |first1=P. A. |last1=Loscocco |first2=S. D. |last2=Smalley |first3=P. A. |last3=Muckelbauer |first4=R. C. |last4=Taylor |first5=S. J. |last5=Turner |first6=J. F. |last6=Farrell |url=http://www.jya.com/paperF1.htm |title=विफलता की अनिवार्यता: आधुनिक कंप्यूटिंग वातावरण में सुरक्षा की त्रुटिपूर्ण धारणा|book-title=Proceedings of the 21st National Information Systems Security Conference |pages=303–314 |date=October 1998 |archive-url=https://web.archive.org/web/20070621155813/http://jya.com/paperF1.htm |archive-date=2007-06-21 |url-status=dead}}</ref> वास्तव में, कंप्यूटर सुरक्षा में एक आम ग़लतफ़हमी यह है कि कर्नेल समर्थन की परवाह किए बिना किसी भी सुरक्षा नीति को एक अनुप्रयोग में लागू किया जा सकता है।<ref name="Loscocco98"/> | ||
मंगल अनुसन्धान समूह विकासक(मार्स रिसर्च ग्रुप | मंगल अनुसन्धान समूह विकासक(मार्स रिसर्च ग्रुप विकासक) के अनुसार, अलगाव की कमी कर्नेल सुरक्षा को कमजोर करने वाले मुख्य कारकों में से एक है।<ref>{{cite web |title=महीन दाने वाली गिरी का अलगाव|url=https://mars-research.github.io/projects/kernel-isolation/ |website=mars-research.github.io |access-date=15 September 2022 |language=en}}</ref> वे मुख्य रूप से लिनक्स कर्नेल में सुरक्षा के लिए अपने ड्राइवर [[ सैंडबॉक्स (कंप्यूटर सुरक्षा) |सैंडबॉक्स (कंप्यूटर सुरक्षा)]] ढांचे का प्रस्ताव करते हैं।<ref>{{cite news |last1=Fetzer |first1=Mary |title=ऑटोमैटिक डिवाइस ड्राइवर आइसोलेशन ऑपरेटिंग सिस्टम में बग्स से बचाता है|url=https://techxplore.com/news/2022-08-automatic-device-driver-isolation-bugs.html |access-date=15 September 2022 |work=[[Pennsylvania State University]] via techxplore.com |language=en}}</ref><ref>{{cite web |last1=Huang |first1=Yongzhe |last2=Narayanan |first2=Vikram |last3=Detweiler |first3=David |last4=Huang |first4=Kaiming |last5=Tan |first5=Gang |last6=Jaeger |first6=Trent |last7=Burtsev |first7=Anton |title=KSplit: स्वचालित डिवाइस ड्राइवर अलगाव|url=https://mars-research.github.io/doc/ksplit-osdi22.pdf |access-date=15 September 2022 |date=2022}}</ref> | ||
====हार्डवेयर- या भाषा-आधारित सुरक्षा==== | ====हार्डवेयर- या भाषा-आधारित सुरक्षा==== | ||
विशिष्ट कंप्यूटर सिस्टम आज हार्डवेयर-लागू नियमों का उपयोग करते हैं कि किस प्रोग्राम को किस डेटा तक पहुंचने की अनुमति है। प्रोसेसर निष्पादन की निगरानी करता है और एक प्रोग्राम को रोकता है जो नियम का उल्लंघन करता है, जैसे उपयोगकर्ता प्रक्रिया जो कर्नेल | विशिष्ट कंप्यूटर सिस्टम आज हार्डवेयर-लागू नियमों का उपयोग करते हैं कि किस प्रोग्राम को किस डेटा तक पहुंचने की अनुमति है। प्रोसेसर निष्पादन की निगरानी करता है और एक प्रोग्राम को रोकता है जो नियम का उल्लंघन करता है, जैसे उपयोगकर्ता प्रक्रिया जो कर्नेल स्मृति में लिखने का प्रयास करती है। उन प्रणालियों में जिनमें क्षमताओं के लिए समर्थन की कमी है, अलग-अलग संबोधित स्थल का उपयोग करके प्रक्रियाओं को एक-दूसरे से अलग किया जाता है।<ref>{{cite journal| | ||
doi=10.1145/319344.319163| | doi=10.1145/319344.319163| | ||
title=EROS: a fast capability system|author1=Jonathan S. Shapiro |author2=Jonathan M. Smith |author3=David J. Farber | | title=EROS: a fast capability system|author1=Jonathan S. Shapiro |author2=Jonathan M. Smith |author3=David J. Farber | | ||
Line 110: | Line 107: | ||
issue=5| | issue=5| | ||
pages=170–185| | pages=170–185| | ||
year=1999}}</ref> उपयोक्ता प्रक्रियाओं से कर्नेल में कॉल को ऊपर वर्णित सिस्टम कॉल विधियों में से एक का उपयोग करने की आवश्यकता के द्वारा नियंत्रित | year=1999}}</ref> उपयोक्ता प्रक्रियाओं से कर्नेल में कॉल को ऊपर वर्णित सिस्टम कॉल विधियों में से एक का उपयोग करने की आवश्यकता के द्वारा नियंत्रित करता है। | ||
एक वैकल्पिक दृष्टिकोण भाषा-आधारित सुरक्षा का उपयोग करना है। एक भाषा-आधारित प्रणाली में | एक वैकल्पिक दृष्टिकोण भाषा-आधारित सुरक्षा का उपयोग करना है। एक भाषा-आधारित प्रणाली में, भाषा-आधारित सुरक्षा प्रणाली, कर्नेल केवल उस कोड को निष्पादित करने की अनुमति देगा जो एक विश्वसनीय भाषा संकलक द्वारा निर्मित किया गया हो। भाषा को तब इस तरह से बनाया किया जा सकता है कि प्रोग्रामर के लिए यह असंभव है कि वह ऐसा कुछ करने का निर्देश दे जो सुरक्षा आवश्यकता का उल्लंघन करे।<ref name="Schneider"/> | ||
इस दृष्टिकोण के लाभों में | इस दृष्टिकोण के लाभों में सम्मिलित हैं: | ||
* अलग | * अलग संबोधित स्थल की आवश्यकता नहीं है। संबोधित स्थल के बीच बदलना एक धीमा संचालन है जो बहुत अधिक उपरिप्रभार(ओवरहेड) का कारण बनता है, और मौजूदा ऑपरेटिंग सिस्टम में अनावश्यक कुंजी को रोकने के लिए वर्तमान में बहुत सारे अनुकूल कार्य किए जाते हैं। भाषा-आधारित सुरक्षा प्रणाली में कुंजी पूरी तरह से अनावश्यक है, क्योंकि सभी कोड एक ही संबोधित स्थल में सुरक्षित रूप में काम कर सकते हैं। | ||
* लचीलापन। कोई भी सुरक्षा योजना जिसे प्रोग्रामिंग भाषा के माध्यम से अभिव्यक्त करने के लिए | * लचीलापन। कोई भी सुरक्षा योजना जिसे प्रोग्रामिंग भाषा के माध्यम से अभिव्यक्त करने के लिए योजनाबद्ध(प्रारुप) किया जा सकता है, इस पद्धति का उपयोग करके इसे कार्यान्वित किया जा सकता है। सुरक्षा योजना में परिवर्तन (उदाहरण के लिए एक पदानुक्रमित प्रणाली से क्षमता-आधारित एक) के लिए नए हार्डवेयर की आवश्यकता नहीं होती है। | ||
कमियों में सम्मिलित हैं: | |||
* | * एप्लिकेशन शुरुआत का समय लंबा है। एप्लिकेशन(अनुप्रयोगों) को सत्यापित किया जाना चाहिए जब वे यह सुनिश्चित करने के लिए शुरू किए जाते हैं कि वे सही संकलक द्वारा संकलित किए गए हैं, या स्रोत कोड या [[ बाईटकोड |बाईटकोड]] से पुन: संकलित करने की आवश्यकता हो सकती है। | ||
* अनम्य [[ प्रकार प्रणाली ]]। पारंपरिक प्रणालियों पर, एप्लिकेशन सामान्यतः ऐसे | * अनम्य [[ प्रकार प्रणाली |प्रकार की प्रणालियाँ]]। पारंपरिक प्रणालियों पर, एप्लिकेशन सामान्यतः ऐसे संचालन करते हैं जो सुरक्षित नहीं होते हैं। भाषा-आधारित सुरक्षा प्रणाली में इस तरह के संचालन की अनुमति नहीं दी जा सकती है, जिसका अर्थ है कि अनुप्रयोगों को फिर से लिखने की आवश्यकता हो सकती है और कुछ स्थितियों में विश्लेषण लुप्त हो सकता है। | ||
भाषा-आधारित सुरक्षा वाली प्रणालियों के उदाहरणों में JX (ऑपरेटिंग सिस्टम) और [[ Microsoft ]] की | भाषा-आधारित सुरक्षा वाली प्रणालियों के उदाहरणों में जे एक्स(JX) (ऑपरेटिंग सिस्टम) और [[ Microsoft |माइक्रोसॉफ्ट(Microsoft)]] की विलक्षणता सम्मिलित हैं। | ||
=== प्रक्रिया सहयोग === | === प्रक्रिया सहयोग === | ||
[[ एडवर्ड डिजस्ट्रा ]] ने साबित किया कि तार्किक दृष्टिकोण से, परमाणु (प्रोग्रामिंग) लॉक (कंप्यूटर विज्ञान) और | [[ एडवर्ड डिजस्ट्रा | एडवर्ड डिजस्ट्रा]] ने साबित किया कि तार्किक दृष्टिकोण से, परमाणु (प्रोग्रामिंग) लॉक (कंप्यूटर विज्ञान) और युग्मक[[ सेमाफोर (प्रोग्रामिंग) | संकेत पद्धति]] पर काम करने वाले वितालकन संचालन प्रक्रिया सहयोग की किसी भी कार्यक्षमता को व्यक्त करने के लिए पर्याप्त मूल हैं।<ref name="Dijkstra65">Dijkstra, E. W. ''Cooperating Sequential Processes''. Math. Dep., Technological U., Eindhoven, Sept. 1965.</ref> हालाँकि इस दृष्टिकोण को प्रायः सुरक्षा और दक्षता के मामले में कमी माना जाता है, जबकि एक संदेश देने वाला दृष्टिकोण अधिक लचीला होता है।<ref name="Hansen70">Brinch Hansen 70 pp.238–241</ref> कई अन्य दृष्टिकोण (या तो निम्न- या उच्च-स्तर) भी उपलब्ध हैं, साथ ही कई आधुनिक कर्नेल सिस्टम के लिए साझा स्मृति (इंटरप्रोसेस संचार) और दूरस्थ प्रक्रिया कॉल जैसे सिस्टम के लिए समर्थन प्रदान करते हैं। | ||
=== | === इनपुट/आउटपुट उपकरण(उपकरण) प्रबंधन === | ||
एक कर्नेल का विचार जहां | एक कर्नेल का विचार जहां इनपुट/आउटपुट उपकरणों को समानांतर सह-संचालन प्रक्रियाओं के रूप में अन्य प्रक्रियाओं के साथ समान रूप से नियंत्रित किया जाता है, पहले ब्रिन्च हेन्सन द्वारा प्रस्तावित और कार्यान्वित किया गया था (हालांकि इसी तरह के विचारों को 1967 में सुझाया गया था।<ref>{{cite journal | title=शेयरर, सीडीसी 6600 के लिए एक टाइम शेयरिंग सिस्टम|year = 1967|doi = 10.1145/363717.363778| url=http://portal.acm.org/citation.cfm?id=363778&dl=ACM&coll=GUIDE&CFID=11111111&CFTOKEN=2222222 | access-date=2007-01-07|last1 = Harrison|first1 = M. C.|last2 = Schwartz|first2 = J. T.|journal = Communications of the ACM|volume = 10|issue = 10|pages = 659–665|s2cid = 14550794}}</ref><ref>{{cite book|title = गतिशील पर्यवेक्षक - उनका डिजाइन और निर्माण|year = 1967|doi = 10.1145/800001.811675|url = http://portal.acm.org/citation.cfm?id=811675&dl=ACM&coll=GUIDE&CFID=11111111&CFTOKEN=2222222|access-date = 2007-01-07|last1 = Huxtable|first1 = D. H. R.|last2 = Warwick|first2 = M. T.|pages = 11.1–11.17|isbn = 9781450373708|s2cid = 17709902|archive-date = 2020-02-24|archive-url = https://web.archive.org/web/20200224173321/https://dl.acm.org/doi/10.1145/800001.811675|url-status = live}}</ref> हैनसेन के इस विवरण में, सामान्य प्रक्रियाओं को आंतरिक प्रक्रियाएँ कहा जाता है, जबकि इनपुट/आउटपुट उपकरणों को बाहरी प्रक्रियाएँ कहा जाता है।<ref name="Hansen70" /> | ||
भौतिक स्मृति के समान, अनुप्रयोगों को नियंत्रक | भौतिक स्मृति के समान, अनुप्रयोगों को नियंत्रक संद्वार और पंजिका तक सीधे पहुंच की इजाजत देने से नियंत्रक खराब हो सकता है, या सिस्टम ध्वस्त हो सकता है। इसके साथ, उपकरण की जटिलता के आधार पर, कुछ उपकरण प्रोग्राम करने के लिए आश्चर्यजनक रूप से जटिल हो सकते हैं, और कई अलग-अलग नियंत्रकों का उपयोग कर सकते हैं। इस वजह से, उपकरण को प्रबंधित करने के लिए एक अधिक सार अंतरफलक प्रदान करना महत्वपूर्ण है। यह अंतरापृष्ठ प्रायः उपकरण ड्राइवर या हार्डवेयर अमूर्त परत(एब्स्ट्रक्शन लेयर) द्वारा किया जाता है। बार-बार, एप्लिकेशन को इन उपकरणों तक पहुंच की आवश्यकता होगी। कर्नेल को इन उपकरणों की सूची को किसी तरह सिस्टम से पूछताछ करके रख – रखाव करना चाहिए। यह बी आई ओ एस (BIOS) के माध्यम से, या विभिन्न सिस्टम बसों (जैसे पी सी आई/ पी सी आई ई, या यू एस बी) में से एक के माध्यम से किया जा सकता है। एक वीडियो ड्राइवर के उदाहरण का उपयोग करते हुए, जब कोई एप्लिकेशन उपकरण पर संचालन का अनुरोध करता है, जैसे कि एक वर्ण प्रदर्शित करना, कर्नेल को वर्तमान सक्रिय वीडियो ड्राइवर को यह अनुरोध भेजने की आवश्यकता होती है। बदले में, वीडियो ड्राइवर को इस अनुरोध को पूरा करने की जरूरत है। यह अंतर-प्रक्रिया संचार(आईपीसी) का एक उदाहरण है। | ||
== कर्नेल- | == कर्नेल- व्यापक प्रारुप दृष्टिकोण == | ||
स्वाभाविक रूप से, ऊपर सूचीबद्ध कार्यों और सुविधाओं को कई तरीकों से प्रदान किया जा सकता है जो | स्वाभाविक रूप से, ऊपर सूचीबद्ध कार्यों और सुविधाओं को कई तरीकों से प्रदान किया जा सकता है जो बनावट और कार्यान्वयन में एक दूसरे से भिन्न होते हैं। | ||
तंत्र और नीति के पृथक्करण का सिद्धांत सूक्ष्म और | तंत्र और नीति के पृथक्करण का सिद्धांत सूक्ष्म और मोनोलिथिक कर्नेल के सिद्धांत के बीच पर्याप्त अंतर है।<ref>Baiardi 1988</ref><ref name="Levin75">Levin 75</ref> यहां एक तंत्र वह समर्थन है जो कई अलग-अलग नीतियों के कार्यान्वयन की अनुमति देता है, जबकि एक नीति संचालन का एक विशेष तरीका है। उदाहरण: | ||
* 'तंत्र:' उपयोगकर्ता लॉगिन प्रयास प्राधिकरण सर्वर पर | * ''''तंत्र''':' उपयोगकर्ता लॉगिन प्रयास प्राधिकरण परिवेषक(सर्वर) पर भेज दिए जाते हैं | ||
* 'नीति:' प्राधिकरण | * ''''नीति''':' प्राधिकरण परिवेषक को एक गुप्त कोड(पासवर्ड) की आवश्यकता होती है जिसे डेटाबेस में संग्रहीत गुप्त कोड के विरुद्ध सत्यापित किया जाता है | ||
क्योंकि तंत्र और नीति अलग-अलग हैं, नीति को आसानी से बदला जा सकता है, | क्योंकि तंत्र और नीति अलग-अलग हैं, नीति को आसानी से बदला जा सकता है, उदाहरण। एक[[ सुरक्षा टोकन | सुरक्षा प्रतीक]] के उपयोग की आवश्यकता है। | ||
न्यूनतम माइक्रोकर्नेल में बस कुछ बहुत ही बुनियादी नीतियां | न्यूनतम माइक्रोकर्नेल में बस कुछ बहुत ही बुनियादी नीतियां सम्मिलित हैं,<ref name="Levin75" />और इसका तंत्र अनुमति देता है कि कर्नेल के शीर्ष पर क्या चल रहा है (ऑपरेटिंग सिस्टम का शेष भाग और अन्य अनुप्रयोग) यह तय करने के लिए कि कौन सी नीतियों को अपनाना है (जैसे स्मृति प्रबंधन, उच्च स्तरीय प्रक्रिया नियोजन, दस्तावेज़ सिस्टम प्रबंधन, आदि)।<ref name="Wulf74" /><ref name="Hansen70" />इसके बजाय एक मोनोलिथिक कर्नेल कई नीतियों को सम्मिलित करता है, इसलिए बाकी सिस्टम को उन पर भरोसा करने के लिए प्रतिबंधित करता है। | ||
पर ब्रिन्च हेन्सन ने तंत्र और नीति के पृथक्करण के पक्ष में तर्क प्रस्तुत किए।<ref name="Wulf74" /><ref name="Hansen70 | पर ब्रिन्च हेन्सन ने तंत्र और नीति के पृथक्करण के पक्ष में तर्क प्रस्तुत किए।<ref name="Wulf74" /><ref name="Hansen70" />कंप्यूटर स्थापत्य कला में एक आम समस्या<ref name="Denning80">Denning 1980</ref><ref name="Nehmer91">{{cite conference |first=Jürgen |last=Nehmer |url=https://link.springer.com/chapter/10.1007%2FBFb0024528#page-1 |title=ऑपरेटिंग सिस्टम की अमरता, या: क्या ऑपरेटिंग सिस्टम में अनुसंधान अभी भी उचित है?|book-title=Lecture Notes In Computer Science; Vol. 563. Proceedings of the International Workshop on Operating Systems of the 90s and Beyond |pages=77–83 |date=1991 |isbn=3-540-54987-0 |doi=10.1007/BFb0024528 |quote=पिछले 25 वर्षों ने दिखाया है कि ऑपरेटिंग सिस्टम आर्किटेक्चर पर शोध का मौजूदा मुख्य धारा {{sic}} सिस्टम पर मामूली प्रभाव पड़ा है।}}</ref><ref>Levy 84, p.1 quote: "Although the complexity of computer applications increases yearly, the underlying hardware architecture for applications has remained unchanged for decades."</ref> , इस अलगाव को ठीक से पूरा करने में विफलता मौजूदा ऑपरेटिंग सिस्टमों में पर्याप्त नवाचार की कमी के प्रमुख कारणों में से एक है।<ref name="Wulf74" /> मोनोलिथिक प्रारुप सुरक्षा के लिए कर्नेल विधा / उपयोगकर्ता विधा वास्तुशिल्प दृष्टिकोण (तकनीकी रूप से पदानुक्रमित सुरक्षा डोमेन कहा जाता है) से प्रेरित है, जो पारंपरिक वाणिज्यिक प्रणालियों में आम है;<ref name="Levy84privilegedmode">Levy 84, p.1 quote: "Conventional architectures support a single privileged mode of | ||
operation. This structure leads to monolithic design; any module needing protection must be part of the single operating system kernel. If, instead, any module could execute within a protected domain, systems could be built as a collection of independent modules extensible by any user."</ref> वास्तव में, प्रत्येक | operation. This structure leads to monolithic design; any module needing protection must be part of the single operating system kernel. If, instead, any module could execute within a protected domain, systems could be built as a collection of independent modules extensible by any user."</ref> वास्तव में, प्रत्येक इकाई को सुरक्षा की आवश्यकता होती है इसलिए उसे कर्नेल में सम्मिलित किया जाता है।<ref name="Levy84privilegedmode"/>मोनोलिथिक प्रारुप और विशेषाधिकार प्राप्त विधा के बीच की इस कड़ी को तंत्र-नीति पृथक्करण के प्रमुख मुद्दे पर फिर से जोड़ा जा सकता है;<ref name="Wulf74"/>वास्तव में विशेषाधिकार प्राप्त विधा स्थापत्य कला दृष्टिकोण सुरक्षा नीतियों के साथ सुरक्षा तंत्र को एक साथ मिलाता है, जबकि प्रमुख वैकल्पिक स्थापत्य कला दृष्टिकोण, क्षमता-आधारित पताभिगमन(एड्रेसिंग), दोनों के बीच स्पष्ट रूप से अंतर करता है, जो स्वाभाविक रूप से एक माइक्रोकर्नेल प्रारुप के लिए अग्रणी होता है।<ref name="Wulf74"/>(सुरक्षा और सुरक्षा का पृथक्करण देखें)। | ||
जबकि मोनोलिथिक कर्नेल अपने सभी कोड को एक ही | जबकि मोनोलिथिक कर्नेल अपने सभी कोड को एक ही संबोधित स्थल (कर्नेल स्थल) में निष्पादित करते हैं, माइक्रोकर्नेल अपनी अधिकांश सेवाओं को उपभोगता स्थल में चलाने की कोशिश करते हैं, जिसका उद्देश्य कोडबेस की स्थिरता और प्रतिरुपकता में सुधार करना है।<ref name="mono-micro"/>अधिकांश कर्नेल इनमें से किसी एक श्रेणी में ठीक से अनुरूप नहीं होती हैं, बल्कि इन दो प्रारूपों के बीच में पाई जाती हैं। इन्हें संकरित कर्नेल कहते हैं। [[ nanokernel |नैनोकर्नेल]] और [[ exokernel |एक्सोकर्नेल]] जैसे अधिक विदेशी प्रारुप उपलब्ध हैं, लेकिन उत्पादन प्रणालियों के लिए शायद ही कभी उपयोग किए जाते हैं। उदाहरण के लिए, [[ एक्सईएन |एक्सईएन]] हाइपरविजर एक एक्सोकर्नेल है। | ||
=== | === मोनोलिथिक कर्नेल === | ||
{{Main| | {{Main|अखंड कर्नेल}} | ||
[[File:kernel-simple.svg|thumb|upright|एक | [[File:kernel-simple.svg|thumb|upright|एक मोनोलिथिक कर्नेल का आरेख]]एक मोनोलिथिक कर्नेल में, सभी ओ एस(OS) सेवाएँ मुख्य कर्नेल धारा के साथ चलती हैं, इस प्रकार एक ही स्मृति क्षेत्र में भी रहती हैं। यह दृष्टिकोण समृद्ध और शक्तिशाली हार्डवेयर अभिगमन प्रदान करता है। कुछ विकासक, जैसे कि [[ यूनिक्स |यूनिक्स]] डेवलपर [[ केन थॉम्पसन |केन थॉम्पसन]], का कहना है कि एक मोनोलिथिक कर्नेल को माइक्रोकर्नेल की तुलना में लागू करना आसान है।<ref name="Linuxisobsoletedebate">{{cite web|url=https://www.oreilly.com/openbook/opensources/book/appa.html|title=ओपन सोर्स: वॉयस फ्रॉम द ओपन सोर्स रेवोल्यूशन|date=29 March 1999|website=1-56592-582-3|access-date=24 March 2019|archive-date=1 February 2020|archive-url=https://web.archive.org/web/20200201103745/https://www.oreilly.com/openbook/opensources/book/appa.html|url-status=live}}</ref> मोनोलिथिक कर्नेल का मुख्य नुकसान सिस्टम घटकों के बीच निर्भरता है{{snd}} उपकरण ड्राइवर में एक दोष(बग) पूरे सिस्टम को ध्वस्त कर सकता है{{snd}} और तथ्य यह है कि बड़े कर्नेल को बनाए रखना बहुत मुश्किल हो सकता है। | ||
मोनोलिथिक कर्नेल, जो पारंपरिक रूप से यूनिक्स जैसे ऑपरेटिंग सिस्टम द्वारा उपयोग की जाती है, इनमें सभी ऑपरेटिंग सिस्टम के अंतर्भाग फलन और उपकरण ड्राइवर होते हैं। यह यूनिक्स(UNIX) सिस्टम का पारंपरिक प्रारुप है। एक मोनोलिथिक कर्नेल एक एकल प्रोग्राम है जिसमें प्रत्येक कर्नेल से संबंधित कार्य करने के लिए आवश्यक सभी कोड होते हैं। प्रत्येक भाग जिसे अधिकांश प्रोग्रामों द्वारा अभिगम किया जाना है, जिसे प्रोग्राम संग्रह में नहीं रखा जा सकता है, वह कर्नेल स्थल में है: जैसे उपकरण ड्राइवर, शेड्यूलर, स्मृति हैंडलिंग, फाइल सिस्टम और नेटवर्क स्टैक। एप्लिकेशन को कई सिस्टम कॉल प्रदान किए जाते हैं, ताकि वे उन सभी क्रमव्यवस्थाओं तक पहुंच सकें। एक मोनोलिथिक कर्नेल, जबकि शुरू में उप-प्रणालियों के साथ निहित किया जा सकता है, जिसकी आवश्यकता नहीं हो सकती है, इसे उस बिंदु पर समायोजित किया जा सकता है जहां यह हार्डवेयर के लिए विशेष रूप से तैयार किए गए प्रारुप से बहुत तेज़ है, हालांकि सामान्य अर्थों में अधिक प्रासंगिक है। आधुनिक मोनोलिथिक कर्नेल, जैसे कि लिनक्स कर्नेल(जी एन यू(GNU) ऑपरेटिंग सिस्टम के कर्नेल में से एक) और[[ FreeBSD | फ्री बी एस डी(FreeBSD)]] कर्नेल, जो दोनों यूनिक्स-जैसे ऑपरेटिंग सिस्टम की श्रेणी में आते हैं, कार्यावधि(रनटाइम) पर इकाई संगृहीत करने की क्षमता रखते हैं, जिससे आसान अनुमति मिलती है कर्नेल स्थान में चल रहे कोड की मात्रा को कम करने में मदद करते हुए कर्नेल की क्षमताओं का आवश्यकतानुसार विस्तार होता है। मोनोलिथिक कर्नेल में, कुछ लाभ इन बिंदुओं पर टिके होते हैं: | |||
* चूंकि इसमें कम सॉफ्टवेयर | * चूंकि इसमें कम सॉफ्टवेयर सम्मिलित है इसलिए यह तेज है। | ||
* जैसा कि यह सॉफ्टवेयर का एक ही टुकड़ा है, यह स्रोत और संकलित दोनों रूपों में छोटा होना चाहिए। | * जैसा कि यह सॉफ्टवेयर का एक ही टुकड़ा है, यह स्रोत और संकलित दोनों रूपों में छोटा होना चाहिए। | ||
* कम कोड का मतलब प्रायः | * कम कोड का मतलब प्रायः कम दोष(बग) होता है जो कम सुरक्षा समस्याओं का अनुवाद कर सकता है। | ||
मोनोलिथिक कर्नेल में ज्यादातर काम सिस्टम कॉल के जरिए किया जाता है। ये अंतरापृष्ठ हैं, प्रायः एक सारणीबद्ध संरचना में रखे जाते हैं, जो डिस्क संचालन जैसे कर्नेल के भीतर कुछ उपतंत्र(सबसिस्टम) तक पहुंचते हैं। अनिवार्य रूप से कॉल प्रोग्राम के भीतर किए जाते हैं और सिस्टम कॉल के माध्यम से अनुरोध की एक जाँच की गई प्रतिलिपि पास की जाती है। इसलिए, यात्रा करने के लिए बिल्कुल भी दूर नहीं है। मोनोलिथिक लिनक्स कर्नेल को न केवल इकाई को गतिशील रूप से संगृहीत(लोड) करने की क्षमता के कारण बल्कि इसके अनुकूलन में आसानी के कारण भी बहुत छोटा बनाया जा सकता है। वास्तव में, कुछ ऐसे संस्करण हैं जो एक पर बड़ी संख्या में उपयोगिताओं और अन्य कार्यक्रमों के साथ अनुरूप होने के लिए काफी छोटे हैं एकल फ्लॉपी डिस्क और अभी भी एक पूरी तरह कार्यात्मक ऑपरेटिंग सिस्टम प्रदान करते हैं (जिनमें से सबसे लोकप्रिय [[एम यू लिनक्स muLinux|एम यू लिनक्स (muLinux)]] है)। इसके कर्नेल को छोटा करने की इस क्षमता ने सन्निहित सिस्टम में[[ लिनक्स ]]के उपयोग में तेजी से वृद्धि की है। | |||
इस प्रकार के कर्नेल में ऑपरेटिंग सिस्टम के मुख्य कार्य और कार्यावधि पर इकाई संगृहीत करने की क्षमता वाले उपकरण ड्राइवर सम्मिलित होते हैं। वे अंतर्निहित हार्डवेयर के समृद्ध और शक्तिशाली सार प्रदान करते हैं। वे सरल हार्डवेयर सार का एक छोटा सा समूह प्रदान करते हैं और अधिक कार्यक्षमता प्रदान करने के लिए परिवेषक नामक एप्लिकेशन का उपयोग करते हैं। यह विशेष दृष्टिकोण पर्यवेक्षक विधा में चलने वाले कई इकाइयों में ऑपरेटिंग सिस्टम सेवाओं जैसे प्रक्रिया प्रबंधन, समवर्ती और स्मृति प्रबंधन को लागू करने के लिए सिस्टम कॉल के एक समूह के साथ हार्डवेयर पर एक उच्च-स्तरीय कल्पित अंतरापृष्ठ को परिभाषित करता है। इस प्रारुप में कई दोष और सीमाएँ हैं: | |||
* कर्नेल में कोडिंग चुनौतीपूर्ण हो सकती है, आंशिक रूप से क्योंकि कोई सामान्य प्रोग्राम संग्रह (जैसे पूर्ण विशेषताओं वाली सी मानक प्रोग्राम संग्रह) का उपयोग नहीं कर सकता है, और क्योंकि किसी को [[ [[ जीएनयू |जीएनयू]] डीबगर]] जैसे स्रोत-स्तर डीबगर का उपयोग करने की आवश्यकता होती है। कंप्यूटर को पुनःप्रारंभ करना सामान्यतः आवश्यक होता है। यह सिर्फ विकासक(डेवलपर्स) के लिए सुविधा की समस्या नहीं है। जब दोषमार्जन(डिबगिंग) कठिन होती है, और जैसे-जैसे कठिनाइयाँ मजबूत होती जाती हैं, यह अधिक संभावना हो जाती है कि कोड बगियर(गलतियों से भरपूर) होगा। | |||
* कर्नेल के एक हिस्से में त्रुटियों(बग)के मजबूत दुष्प्रभाव होते हैं; चूंकि कर्नेल में प्रत्येक फ़ंक्शन में सभी विशेषाधिकार हैं, एक फ़ंक्शन में एक त्रुटि दूसरे की डेटा संरचना, कर्नेल के पूरी तरह से असंबंधित भाग, या किसी भी चल रहे प्रोग्राम को दूषित कर सकता है। | |||
* कर्नेल सामान्यतः बहुत बड़ी हो जाती है और उसका रखरखाव करना मुश्किल हो जाता है। | |||
* भले ही इन ऑपरेशन की मरम्मत करने वाले इकाईयां पूरे से अलग हैं, कोड एकीकरण तंग है और सही ढंग से करना मुश्किल है। | |||
* चूंकि इकाईयां एक ही संबोधित स्थल में चलते हैं, एक त्रुटि पूरे सिस्टम को नीचे ला सकती है। | |||
* मोनोलिथिक कर्नेल सुवाह्य नहीं हैं; इसलिए, प्रत्येक नई संरचना के लिए उन्हें फिर से लिखा जाना चाहिए, जिस पर ऑपरेटिंग सिस्टम का उपयोग किया जाना है। | |||
[[File:Kernel-microkernel.svg|thumb|260px|माइक्रोकर्नेल दृष्टिकोण में, कर्नेल ही केवल बुनियादी कार्यक्षमता प्रदान करता है जो [[ सर्वर (कंप्यूटिंग) |परिवेषक (कंप्यूटिंग)]] के निष्पादन की अनुमति देता है, अलग-अलग प्रोग्राम जो पूर्व कर्नेल कार्यों को मानते हैं, जैसे उपकरण ड्राइवर, जीयूआई परिवेषक, आदि।]]मोनोलिथिक कर्नेल के उदाहरण [[ IBM AIX |आई बी एम बी आई एक्स(IBM AIX)]] कर्नेल, एच पी - यू एक्स(HP-UX) कर्नेल और सोलारिस कर्नेल हैं। | |||
=== माइक्रो कर्नेल === | |||
{{Main|माइक्रोकर्नेल}} | |||
माइक्रोकर्नेल (संक्षिप्त μK या यूके भी) ऑपरेटिंग सिस्टम प्रारुप के लिए एक दृष्टिकोण का वर्णन करने वाला शब्द है, जिसके द्वारा सिस्टम की कार्यक्षमता को पारंपरिक कर्नेल से परिवेषक के एक समूह में ले जाया जाता है, जो न्यूनतम कर्नेल के माध्यम से संचार करता है। सिस्टम स्थल में और जितना संभव हो उपभोक्ता स्थल में छोड़ देता है। एक माइक्रोकर्नेल जिसे एक विशिष्ट पटल या उपकरण के लिए प्रारुप किया गया है, उसमें केवल वही होगा जो इसे संचालित करने के लिए आवश्यक है। माइक्रोकर्नेल दृष्टिकोण में हार्डवेयर पर एक सरल अमूर्तता को परिभाषित करना सम्मिलित है, जिसमें[[ स्मृति प्रबंधन | स्मृति प्रबंधन]], [[ कंप्यूटर मल्टीटास्किंग |कंप्यूटर मल्टीटास्किंग]] और इंटर-प्रोसेस संचार जैसी न्यूनतम ओएस सेवाओं को लागू करने के लिए मूल या सिस्टम कॉल का एक समूह होता है। सामान्य रूप से कर्नेल द्वारा प्रदान की जाने वाली सेवाओं सहित अन्य सेवाएं, जैसे कि [[ कम्प्यूटर नेट्वर्किंग |कम्प्यूटर नेट्वर्किंग]] , उपयोगकर्ता-अंतरिक्ष कार्यक्रमों में कार्यान्वित की जाती हैं, जिन्हें परिवेषक कहा जाता है। मोनोलिथिक कर्नेल की तुलना में माइक्रोकर्नेल को बनाए रखना आसान है, लेकिन बड़ी संख्या में सिस्टम कॉल और संदर्भ कुंजी सिस्टम को धीमा कर सकते हैं क्योंकि वे प्रायः सादे फ़ंक्शन कॉल की तुलना में अधिक उपरिव्यय उत्पन्न करते हैं। | |||
माइक्रोकर्नेल (संक्षिप्त μK या यूके भी) ऑपरेटिंग सिस्टम | |||
कर्नेल स्थान में केवल वे हिस्से हैं जिन्हें वास्तव में विशेषाधिकार प्राप्त मोड में होने की आवश्यकता है: | कर्नेल स्थान में केवल वे हिस्से हैं जिन्हें वास्तव में विशेषाधिकार प्राप्त मोड में होने की आवश्यकता है: आई पी सी(इंटर-प्रोसेस कम्युनिकेशन), बेसिक शेड्यूलर, या शेड्यूलिंग प्रिमिटिव, बेसिक स्मृति हैंडलिंग, बेसिक इनपुट/आउटपुट प्रिमिटिव। कई महत्वपूर्ण भाग अब उपयोगकर्ता स्थान में चल रहे हैं जैसे : पूर्ण शेड्यूलर, स्मृति हैंडलिंग, दस्तावेज़ सिस्टम और नेटवर्क स्टैक। माइक्रो कर्नेल का आविष्कार पारंपरिक मोनोलिथिक कर्नेल प्रारुप की प्रतिक्रिया के रूप में किया गया था, जिससे सभी सिस्टम कार्यक्षमता को प्रोसेसर के एक विशेष सिस्टम विधा में चल रहे एक स्थिर प्रोग्राम में रखा गया था। माइक्रोकर्नेल में, केवल सबसे मौलिक कार्यों को निष्पादित किया जाता है जैसे कि हार्डवेयर के कुछ (जरूरी नहीं कि सभी) तक पहुंचने में सक्षम होना, स्मृति का प्रबंधन करना और प्रक्रियाओं के बीच संदेश पारित करना समन्वयित करना। कुछ प्रणालियाँ जो माइक्रो कर्नेल का उपयोग करती हैं, वे क्यू एन एक्स(QNX) और एच् यू आर डी (HURD) हैं। [[ क्यूएनएक्स |क्यूएनएक्स]] और [[ जीएनयू हर्ड |जीएनयू हर्ड]] उपयोगकर्ता सत्र के मामले में सिस्टम के पूरे आशुचित्र हो सकते हैं या देखे जा सकते हैं जैसा कि इसे संदर्भित किया गया है। माइक्रोकर्नेल संरचना का सार इसके कुछ फायदों को दिखाता है: | ||
* बनाए रखना | * आसान बनाए रखना | ||
* | * खण्ड का एक अलग उदाहरण में परीक्षण किया जा सकता है, और फिर एक उत्पादन उदाहरण लेने के लिए अदल बदल किया जा सकता है। | ||
* तीव्र विकास समय और नए सॉफ्टवेयर का परीक्षण कर्नेल को | * तीव्र विकास समय और नए सॉफ्टवेयर का परीक्षण कर्नेल को बदले बिना किया जा सकता है। | ||
* सामान्य रूप से अधिक दृढ़ता, यदि एक उदाहरण खराब हो जाता है, तो सामान्यतः इसे एक परिचालन दर्पण से प्रतिस्थापित करना संभव होता है। | * सामान्य रूप से अधिक दृढ़ता, यदि एक उदाहरण खराब हो जाता है, तो सामान्यतः इसे एक परिचालन दर्पण से प्रतिस्थापित करना संभव होता है। | ||
अधिकांश माइक्रोकर्नेल एक | अधिकांश माइक्रोकर्नेल एक परिवेषक से दूसरे परिवेषक पर अनुरोधों को संभालने के लिए एक संदेश पासिंग सिस्टम का उपयोग करते हैं। संदेश पासिंग सिस्टम प्रायः माइक्रोकर्नेल के साथ द्वारक(कंप्यूटर नेटवर्किंग) के आधार पर संचालित होता है। एक उदाहरण के रूप में, यदि अधिक स्मृति के लिए अनुरोध भेजा जाता है, तो माइक्रोकर्नेल के साथ एक द्वारक खोला जाता है और अनुरोध भेजा जाता है। एक बार माइक्रोकर्नेल के भीतर, चरण सिस्टम कॉल के समान होते हैं। तर्क यह था कि यह सिस्टम संरचना में प्रतिरुपकता लाएगा, जो एक क्लीनर सिस्टम, दोषमार्जन करने में आसान या गतिशील रूप से संशोधित करने, उपयोगकर्ताओं की जरूरतों के अनुकूल बनाने और अधिक प्रदर्शन करने के लिए आवश्यक होगा। वे जीएनयू हर्ड, [[ मिनिक्स |मिनिक्स]] , [[ एमकेलिनक्स |एमकेलिनक्स]], क्यूएनएक्स और[[ रिडॉक्स ओएस ]]जैसे ऑपरेटिंग सिस्टम का हिस्सा हैं। हालांकि माइक्रोकर्नेल अपने आप में बहुत छोटे होते हैं, अपने सभी आवश्यक सहायक कोड के संयोजन में, वास्तव में, वे सामान्यतः मोनोलिथिक कर्नेल से बड़े होते हैं। मोनोलिथिक कर्नेल के हिमायती यह भी बताते हैं कि माइक्रोकर्नेल सिस्टम की दो-स्तरीय संरचना, जिसमें अधिकांश ऑपरेटिंग सिस्टम सीधे हार्डवेयर के साथ पारस्परिक क्रिया नहीं करते हैं, सिस्टम दक्षता के मामले में एक गैर-महत्वहीन लागत पैदा करते हैं। इस प्रकार के कर्नेल प्रायः केवल न्यूनतम सेवाएं प्रदान करते हैं जैसे स्मृति संबोधित स्थल, इंटर-प्रोसेस कम्युनिकेशन(IPC) और प्रोसेस मैनेजमेंट को परिभाषित करना। अन्य कार्य जैसे हार्डवेयर प्रक्रियाओं को चलाना सीधे माइक्रोकर्नेल द्वारा नियंत्रित नहीं किया जाता है। सूक्ष्म कर्नेल के समर्थकों का कहना है कि उन मोनोलिथिक कर्नेल का नुकसान यह है कि कर्नेल में एक त्रुटि एक पूरे सिस्टम को ख़राब कर सकती है। हालाँकि, एक माइक्रोकर्नेल के साथ, यदि एक कर्नेल प्रक्रिया दुर्घटनाग्रस्त हो जाती है, तब भी त्रुटि के कारण सेवा को फिर से शुरू करके पूरे सिस्टम को ख़राब होने से को रोकना संभव है। | ||
कर्नेल द्वारा प्रदान की जाने वाली अन्य सेवाएं जैसे नेटवर्किंग को | कर्नेल द्वारा प्रदान की जाने वाली अन्य सेवाएं जैसे नेटवर्किंग को परिवेषक के रूप में संदर्भित उपभोक्ता-स्थल प्रोग्राम में कार्यान्वित किया जाता है। परिवेषक प्रोग्राम को शुरू और बंद करके ऑपरेटिंग सिस्टम को संशोधित करने की अनुमति देते हैं। नेटवर्किंग समर्थन के बिना मशीन के लिए, उदाहरण के लिए, नेटवर्किंग परिवेषक प्रारंभ नहीं होता है। विभिन्न अनुप्रयोगों और परिवेषकों के बीच डेटा को स्थानांतरित करने के लिए कर्नेल के अंदर और बाहर जाने का कार्य उपरिव्यय बनाता है जो मोनोलिथिक कर्नेल की तुलना में सूक्ष्म कर्नेल की दक्षता के लिए हानिकारक है। | ||
हालाँकि, माइक्रोकर्नेल में नुकसान मौजूद हैं। कुछ हैं: | हालाँकि, माइक्रोकर्नेल में नुकसान मौजूद हैं। कुछ हैं: | ||
* बड़ा | * बड़ा क्रियाशील [[ स्मृति पदचिह्न |स्मृति पदचिह्न ,]] | ||
* | *अंतरापृष्ठ के लिए अधिक सॉफ्टवेयर की आवश्यकता है, प्रदर्शन हानि की संभावना है। | ||
* मैसेजिंग | * संदेश प्रेषण त्रुटियों(मैसेजिंग त्रुटि्स) को ठीक करना कठिन हो सकता है क्योंकि उन्हें एक मोनोलिथिक कर्नेल में एक प्रतिलिपि की तुलना में लंबी यात्रा करनी पड़ती है। | ||
* सामान्य तौर पर प्रक्रिया प्रबंधन बहुत जटिल हो सकता है। | * सामान्य तौर पर प्रक्रिया प्रबंधन बहुत जटिल हो सकता है। | ||
माइक्रोकर्नेल के नुकसान अत्यंत संदर्भ-आधारित हैं। एक उदाहरण के रूप में, वे छोटे एकल-उद्देश्य (और महत्वपूर्ण) प्रणालियों के लिए अच्छी तरह से काम करते हैं क्योंकि यदि कई प्रक्रियाओं को चलाने की आवश्यकता नहीं होती है, तो प्रक्रिया प्रबंधन की जटिलताओं को प्रभावी ढंग से कम किया जाता है। | माइक्रोकर्नेल के नुकसान अत्यंत संदर्भ-आधारित हैं। एक उदाहरण के रूप में, वे छोटे एकल-उद्देश्य(और महत्वपूर्ण) प्रणालियों के लिए अच्छी तरह से काम करते हैं क्योंकि यदि कई प्रक्रियाओं को चलाने की आवश्यकता नहीं होती है, तो प्रक्रिया प्रबंधन की जटिलताओं को प्रभावी ढंग से कम किया जाता है। | ||
एक माइक्रोकर्नेल ऑपरेटिंग सिस्टम के शेष भाग को एक उच्च-स्तरीय भाषा में लिखे गए सामान्य एप्लिकेशन प्रोग्राम के रूप में कार्यान्वित करने की अनुमति देता है, और एक ही अपरिवर्तित कर्नेल के शीर्ष पर विभिन्न ऑपरेटिंग सिस्टम का उपयोग करता है। ऑपरेटिंग सिस्टम के बीच गतिशील रूप से | एक माइक्रोकर्नेल ऑपरेटिंग सिस्टम के शेष भाग को एक उच्च-स्तरीय भाषा में लिखे गए सामान्य एप्लिकेशन प्रोग्राम के रूप में कार्यान्वित करने की अनुमति देता है, और एक ही अपरिवर्तित कर्नेल के शीर्ष पर विभिन्न ऑपरेटिंग सिस्टम का उपयोग करता है। ऑपरेटिंग सिस्टम के बीच गतिशील रूप से बदलना और एक साथ एक से अधिक सक्रिय होना भी संभव है।<ref name="Hansen70" /> | ||
=== मोनोलिथिक कर्नेल बनाम माइक्रो कर्नेल === | === मोनोलिथिक कर्नेल बनाम माइक्रो कर्नेल === | ||
जैसे-जैसे कंप्यूटर कर्नेल बढ़ता है, वैसे-वैसे इसके [[ विश्वसनीय कंप्यूटिंग बेस ]] का आकार और भेद्यता भी बढ़ती है; और, सुरक्षा को कम करने के अलावा, | जैसे-जैसे कंप्यूटर कर्नेल बढ़ता है, वैसे-वैसे इसके[[ विश्वसनीय कंप्यूटिंग बेस | विश्वसनीय कंप्यूटिंग बेस]] का आकार और भेद्यता भी बढ़ती है; और, सुरक्षा को कम करने के अलावा, स्मृति पदचिन्ह को बढ़ाने की समस्या है।[[ अप्रत्यक्ष स्मृति ]]सिस्टम को बेहतर बनाकर इसे कुछ हद तक कम किया जा सकता है, लेकिन सभी[[ कंप्यूटर आर्किटेक्चर | कंप्यूटर स्थापत्य कला]] में कल्पित स्मृति आधार नहीं होता है।{{efn|Virtual addressing is most commonly achieved through a built-in [[memory management unit]].}} कर्नेल के पदचिह्न को कम करने के लिए, अनावश्यक कोड को ध्यान से हटाने के लिए व्यापक संपादन किया जाना चाहिए, जो कोड की लाखों पंक्तियों वाले कर्नेल के भागों के बीच गैर-स्पष्ट अन्योन्याश्रितताओं के साथ बहुत मुश्किल हो सकता है। | ||
1990 के दशक के प्रारंभ तक, | 1990 के दशक के प्रारंभ तक, मोनोलिथिक कर्नेल बनाम माइक्रोकर्नेल की विभिन्न कमियों के कारण, मोनोलिथिक कर्नेल को लगभग सभी ऑपरेटिंग सिस्टम शोधकर्ताओं द्वारा अप्रचलित माना गया था।{{citation needed|date = June 2015}} परिणामतः, एक माइक्रोकर्नेल के बजाय एक मोनोलिथिक कर्नेल के रूप में [[ लिनक्स (कर्नेल) |लिनक्स (कर्नेल)]] का प्रारुप [[ लिनस टोरवाल्ड्स |लिनस टोरवाल्ड्स]] और एंड्रयू एस तनेनबाउम के बीच एक प्रसिद्ध बहस का विषय था।<ref name="TorvaldsTanenbaum">Recordings of the debate between Torvalds and Tanenbaum can be found at [http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html dina.dk] {{webarchive|url=https://web.archive.org/web/20121003060514/http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html |date=2012-10-03 }}, [http://groups.google.com/group/comp.os.minix/browse_thread/thread/c25870d7a41696d2/f447530d082cd95d?tvc=2#f447530d082cd95d groups.google.com] {{Webarchive|url=https://web.archive.org/web/20130526014635/http://groups.google.com/group/comp.os.minix/browse_thread/thread/c25870d7a41696d2/f447530d082cd95d?tvc=2#f447530d082cd95d |date=2013-05-26 }}, [http://www.oreilly.com/catalog/opensources/book/appa.html oreilly.com] {{Webarchive|url=https://web.archive.org/web/20140921050425/http://oreilly.com/catalog/opensources/book/appa.html |date=2014-09-21 }} and [http://www.cs.vu.nl/~ast/reliable-os/ Andrew Tanenbaum's website] {{Webarchive|url=https://web.archive.org/web/20150805132304/http://www.cs.vu.nl/~ast/reliable-os/ |date=2015-08-05 }}</ref> तनेनबौम-टोरवाल्ड्स बहस में प्रस्तुत तर्क के दोनों पक्षों में योग्यता है। | ||
==== प्रदर्शन ==== | ==== प्रदर्शन ==== | ||
मोनोलिथिक कर्नेल को उनके सभी कोड को एक ही | मोनोलिथिक कर्नेल को उनके सभी कोड को एक ही संबोधित स्थल(कर्नेल स्थल) में रखने के लिए परिकलन किया गया है, जो कुछ विकासक का तर्क है कि सिस्टम के प्रदर्शन को बढ़ाने के लिए आवश्यक है।<ref name="MatthewRussell"/>कुछ विकासक यह भी मानते हैं कि अच्छी तरह से लिखे जाने पर मोनोलिथिक सिस्टम बेहद कुशल होते हैं।<ref name="MatthewRussell">{{cite web| | ||
url=http://oreilly.com/pub/a/mac/2005/09/27/what-is-darwin.html?page=2| | url=http://oreilly.com/pub/a/mac/2005/09/27/what-is-darwin.html?page=2| | ||
title=What Is Darwin (and How It Powers Mac OS X)| | title=What Is Darwin (and How It Powers Mac OS X)| | ||
Line 215: | Line 211: | ||
archive-date=2007-12-08| | archive-date=2007-12-08| | ||
archive-url=https://web.archive.org/web/20071208130117/http://www.oreilly.com/pub/a/mac/2005/09/27/what-is-darwin.html?page=2| | archive-url=https://web.archive.org/web/20071208130117/http://www.oreilly.com/pub/a/mac/2005/09/27/what-is-darwin.html?page=2| | ||
url-status=dead}}</ref> | url-status=dead}}</ref> मोनोलिथिक प्रतिरूप अधिक कुशल होता है<ref>{{cite web|url=https://en.wikiversity.org/wiki/Operating_Systems/Kernel_Models|title=ऑपरेटिंग सिस्टम/कर्नेल मॉडल - विकिविश्वविद्यालय|website=en.wikiversity.org|access-date=2014-12-18|archive-date=2014-12-18|archive-url=https://web.archive.org/web/20141218090736/https://en.wikiversity.org/wiki/Operating_Systems/Kernel_Models|url-status=live}}</ref> माइक्रोकर्नेल प्रारुप की धीमी आई पी सी प्रणाली के बजाय साझा कर्नेल स्मृति के उपयोग के माध्यम से, जो प्रायः संदेश समाप्ति पर आधारित होता है।{{Citation needed|date=July 2007}} | ||
1980 के दशक और 1990 के दशक की शुरुआत में माइक्रोकर्नेल का प्रदर्शन खराब था।<ref name="Liedtke95">Liedtke 95</ref><ref name="Hartig97">Härtig 97</ref> हालांकि, इन माइक्रोकर्नेल के प्रदर्शन को आनुभविक रूप से मापने वाले अध्ययनों ने ऐसी अक्षमता के कारणों का विश्लेषण नहीं | |||
वास्तव में, जैसा कि 1995 में अनुमान लगाया गया था, माइक्रोकर्नेल के खराब प्रदर्शन के कारण भी हो सकते हैं: (1) संपूर्ण माइक्रोकर्नेल दृष्टिकोण की वास्तविक अक्षमता, (2) उन माइक्रोकर्नेल में लागू की गई विशेष अवधारणाएं, और (3) उन अवधारणाओं का विशेष कार्यान्वयन। इसलिए यह अध्ययन किया जाना बाकी था कि क्या एक कुशल माइक्रोकर्नेल बनाने का समाधान, पिछले प्रयासों के विपरीत, सही निर्माण तकनीकों को लागू करना था।<ref name="Liedtke95"/> | 1980 के दशक और 1990 के दशक की शुरुआत में माइक्रोकर्नेल का प्रदर्शन खराब था।<ref name="Liedtke95">Liedtke 95</ref><ref name="Hartig97">Härtig 97</ref> हालांकि, इन माइक्रोकर्नेल के प्रदर्शन को आनुभविक रूप से मापने वाले अध्ययनों ने ऐसी अक्षमता के कारणों का विश्लेषण नहीं किया गया।<ref name="Liedtke95" />इस डेटा की व्याख्या लोककथाओं पर छोड़ दी गई थी, इस धारणा के साथ कि वे कर्नेल- विधा से उपयोगकर्ता- विधा में कुंजी की बढ़ी हुई आवृत्ति, अंतर-प्रक्रिया संचार की बढ़ी हुई आवृत्ति और संदर्भ कुंजी की बढ़ी हुई आवृत्ति के कारण थे।<ref name="Liedtke95" /> | ||
वास्तव में, जैसा कि 1995 में अनुमान लगाया गया था, माइक्रोकर्नेल के खराब प्रदर्शन के कारण भी हो सकते हैं: (1) संपूर्ण माइक्रोकर्नेल दृष्टिकोण की वास्तविक अक्षमता, (2) उन माइक्रोकर्नेल में लागू की गई विशेष अवधारणाएं, और (3) उन अवधारणाओं का विशेष कार्यान्वयन। इसलिए यह अध्ययन किया जाना बाकी था कि क्या एक कुशल माइक्रोकर्नेल बनाने का समाधान, पिछले प्रयासों के विपरीत, सही निर्माण तकनीकों को लागू करना था।<ref name="Liedtke95" /> | |||
दूसरे छोर पर, पदानुक्रमित सुरक्षा डोमेन वास्तुकला जो एक | दूसरे छोर पर, पदानुक्रमित सुरक्षा डोमेन वास्तुकला जो एक मोनोलिथिक कर्नेल के प्रारुप की ओर ले जाती है<ref name="Levy84privilegedmode" />हर बार सुरक्षा के विभिन्न स्तरों के बीच एक परस्पर क्रिया होने पर एक महत्वपूर्ण प्रदर्शन दोष होता है (यानी, जब किसी प्रक्रिया को उपयोगकर्ता विधा और पर्यवेक्षक विधा दोनों में डेटा संरचना में हेरफेर करना पड़ता है), क्योंकि इसके लिए [[ कॉल-टू-मूल्य से |कॉल-टू-मूल्य से]] संदेश प्रतिलिपि करने की आवश्यकता होती है।<ref name="Hansen73SupervisorMode">Hansen 73, section 7.3 p.233 "''interactions between different levels of protection require transmission of messages by value''"</ref> | ||
[[File:Kernel-hybrid.svg|thumb|260px| | [[File:Kernel-hybrid.svg|thumb|260px|संकरित कर्नेल दृष्टिकोण एक मोनोलिथिक कर्नेल की गति और सरल प्रारुप को एक माइक्रोकर्नेल की प्रतिरूपकता और निष्पादन सुरक्षा के साथ जोड़ता है]] | ||
=== हाइब्रिड (या मॉड्यूलर) | === हाइब्रिड(या मॉड्यूलर) कर्नेल === | ||
{{Main| | {{Main|हाइब्रिड कर्नेल}} | ||
[[ Microsoft Windows ]] NT 3.1, NT 3.5, NT 3.51, NT 4.0, 2000, XP, Vista, 7, 8, 8.1 और 10 जैसे अधिकांश व्यावसायिक ऑपरेटिंग सिस्टम में हाइब्रिड कर्नेल का उपयोग किया जाता है। [[ Apple Inc ]] का अपना [[ macOS ]] [[ XNU ]] नामक एक | [[ Microsoft Windows | माइक्रोसॉफ्ट विंडोज]] NT 3.1, NT 3.5, NT 3.51, NT 4.0, 2000, एक्स पी (XP), विस्ता(Vista), 7, 8, 8.1 और 10 जैसे अधिकांश व्यावसायिक ऑपरेटिंग सिस्टम में संकरित(हाइब्रिड) कर्नेल का उपयोग किया जाता है। [[ Apple Inc |एप्पल आई एन सी(Apple Inc)]] का अपना [[ macOS |मैक ओएस (macOS)]] एक्स एन यू([[ XNU |XNU)]] नामक एक संकरित कर्नेल का उपयोग करता है। ओ एस एफ/1(OSF/1) के [[ मच कर्नेल |मच कर्नेल]] (OSFMK 7.3) के कोड पर आधारित है<ref>{{cite AV media|url=https://www.youtube.com/watch?v=ggnFoDqzGMU| archive-url=https://ghostarchive.org/varchive/youtube/20211030/ggnFoDqzGMU| archive-date=2021-10-30|last=Magee |first=Jim |title=डब्ल्यूडब्ल्यूडीसी 2000 सत्र 106 - मैक ओएस एक्स: कर्नेल|minutes=14}}{{cbignore}}</ref> और फ्री बी एस डी(FreeBSD) का मोनोलिथिक कर्नेल होता है। वे प्रदर्शन बढ़ाने के लिए कर्नेल-स्थल में कुछ अतिरिक्त कोड को छोड़कर, माइक्रो कर्नेल के समान हैं। ये कर्नेल एक समझौते का प्रतिनिधित्व करते हैं जिसे कुछ विकासक द्वारा मोनोलिथिक और माइक्रो कर्नेल दोनों के प्रमुख लाभों को समायोजित करने के लिए लागू किया गया था। इस प्रकार की कर्नेल मोनोलिथिक कर्नेल के कुछ गुणों के साथ सूक्ष्म कर्नेल के विस्तार हैं। मोनोलिथिक कर्नेल के विपरीत, इस प्रकार के कर्नेल अपने आप कार्यावधि पर इकाई संगृहीत करने में असमर्थ हैं। संकरित कर्नेल सूक्ष्म कर्नेल होते हैं जिनमें कर्नेल-स्थल में कुछ गैर-आवश्यक कोड होते हैं ताकि कोड उपयोगकर्ता-स्थान में होने की तुलना में अधिक तेज़ी से चल सके। संकरित कर्नेलमोनोलिथिक और माइक्रोकर्नेल प्रारुप के बीच एक समझौता है। इसका तात्पर्य पारंपरिक माइक्रोकर्नेल के प्रदर्शन उपरिव्यय को कम करने के लिए कर्नेल स्थल में कुछ सेवाओं (जैसे [[ प्रसार का ढेर |प्रसार का ढेर]] या [[ फाइल सिस्टम |फाइल सिस्टम]]) को चलाने से है, लेकिन फिर भी यूजर स्थल में परिवेषक के रूप में कर्नेल कोड (जैसे उपकरण ड्राइवर) चल रहा है। | ||
कई पारंपरिक रूप से | कई पारंपरिक रूप से मोनोलिथिक कर्नेल अब कम से कम इकाई क्षमता को जोड़ रहे हैं (या अन्य उपयोग कर रहे हैं)। इन कर्नेल में सबसे प्रसिद्ध लिनक्स कर्नेल है। प्रमापीय कर्नेल में अनिवार्य रूप से इसके कुछ हिस्से हो सकते हैं जो अंतर्भाग कर्नेल युग्मक या बायनेरिज़ में निर्मित होते हैं जो मांग पर स्मृति में संगृहीत होते हैं। यह नोट करना महत्वपूर्ण है कि कोड दूषित इकाई में चल रहे कर्नेल को अस्थिर करने की क्षमता है। माइक्रो कर्नेल की चर्चा करते समय बहुत से लोग इस बिंदु पर भ्रमित हो जाते हैं। पूरी तरह से अलग स्मृति स्थल में एक माइक्रोकर्नल के लिए ड्राइवर लिखना और लाइव होने से पहले इसका परीक्षण करना संभव है। जब एक कर्नेल इकाई संगृहीत किया जाता है, तो यह मोनोलिथिक भाग की स्मृति स्थल को इसमें जोड़कर एक्सेस करता है, जिससे इसकी आवश्यकता होती है, इसलिए संभावित प्रदूषण के द्वार खुलते हैं। प्रमापीय(या) संकरित कर्नेल के कुछ फायदे हैं: | ||
* ड्राइवरों के लिए तेज़ विकास का समय जो | * ड्राइवरों के लिए तेज़ विकास का समय जो इकाई के भीतर से काम कर सकते हैं। परीक्षण के लिए किसी पुनःप्रारंभ की आवश्यकता नहीं है(बशर्ते कर्नेल अस्थिर न हो)। | ||
* | * मांग क्षमता बनाम नए ड्राइवर या सबसिस्टम जैसी चीजों के लिए पूरे कर्नेल को फिर से कंपाइल करने में समय बिताना। | ||
* तृतीय पक्ष प्रौद्योगिकी का तेज़ एकीकरण (विकास से संबंधित लेकिन फिर भी स्वयं के लिए प्रासंगिक)। | * तृतीय पक्ष प्रौद्योगिकी का तेज़ एकीकरण (विकास से संबंधित लेकिन फिर भी स्वयं के लिए प्रासंगिक)। | ||
इकाई, प्रायः, किसी प्रकार के इकाई अंतरापृष्ठ का उपयोग करके कर्नेल के साथ संवाद करते हैं। अंतरापृष्ठ सामान्यीकृत है (हालांकि किसी दिए गए ऑपरेटिंग सिस्टम के लिए विशेष रूप से) इसलिए इकाई का उपयोग करना हमेशा संभव नहीं होता है। इकाई अंतरापृष्ठ की तुलना में सामान्यतः उपकरण ड्राइवरों को अधिक लचीलेपन की आवश्यकता हो सकती है। अनिवार्य रूप से, यह दो सिस्टम कॉल है और सामान्यतः सुरक्षा जांच जो कि मोनोलिथिक कर्नेल में केवल एक बार की जानी है, अब दो बार की जा सकती है। प्रमापीय दृष्टिकोण के कुछ नुकसान हैं: | |||
* अधिक | * अधिक अंतरापृष्ठ से गुजरने के साथ, त्रुटियों बढ़ने की संभावना मौजूद है (जिसका अर्थ है अधिक सुरक्षा छेद)। | ||
* प्रतीक अंतर जैसी समस्याओं से निपटने के दौरान | * प्रतीक अंतर जैसी समस्याओं से निपटने के दौरान इकाई बनाए रखना कुछ प्रशासकों के लिए भ्रमित करने वाला हो सकता है। | ||
=== नैनोकर्नेल === | === नैनोकर्नेल === | ||
{{Main| | {{Main|नैनोकर्नेल}} | ||
एक नैनोकर्नेल वस्तुतः सभी सेवाओं का प्रतिनिधित्व करता है{{snd}} प्रोग्राम करने [[ प्रोग्रामेबल इंटरप्ट कंट्रोलर ]] या [[ घड़ी ]] जैसे सबसे बुनियादी भी | एक नैनोकर्नेल वस्तुतः सभी सेवाओं का प्रतिनिधित्व करता है{{snd}} प्रोग्राम करने [[ प्रोग्रामेबल इंटरप्ट कंट्रोलर |प्रोग्रामेबल इंटरप्ट कंट्रोलर]] या [[ घड़ी |घड़ी]] जैसे सबसे बुनियादी भी सम्मिलित हैं{{snd}} उपकरण ड्राइवरों के लिए कर्नेल स्मृति आवश्यकता को पारंपरिक माइक्रोकर्नेल से भी छोटा बनाने के लिए होता है।<ref>{{cite web |url=http://www.cis.upenn.edu/~KeyKOS/NanoKernel/NanoKernel.html |title=कीकोस नैनोकर्नेल आर्किटेक्चर|archive-url=https://web.archive.org/web/20110621235229/http://www.cis.upenn.edu/~KeyKOS/NanoKernel/NanoKernel.html |archive-date=2011-06-21 |url-status=dead}}</ref> | ||
=== एक्सोकर्नेल === | |||
{{Main|एक्सोकर्नेल}} | |||
ऑपरेटिंग सिस्टम प्रारुप के लिए एक्सोकर्नेल अभी भी प्रायोगिक दृष्टिकोण हैं। वे कच्चे हार्डवेयर की सुरक्षा और बहुसंकेतन के लिए अपनी कार्यक्षमता को सीमित करने में अन्य प्रकार के कर्नेल से भिन्न होते हैं, जिससे अनुप्रयोगों को विकसित करने के लिए कोई हार्डवेयर सार नहीं मिलता है। हार्डवेयर प्रबंधन से हार्डवेयर सुरक्षा का यह पृथक्करण एप्लिकेशन विकासक को यह निर्धारित करने में सक्षम बनाता है कि प्रत्येक विशिष्ट प्रोग्राम के लिए उपलब्ध हार्डवेयर का सबसे कुशल उपयोग कैसे किया जाए। | |||
ऑपरेटिंग सिस्टम | |||
एक्सोकर्नल्स अपने आप में बहुत छोटे होते हैं। हालांकि, उनके साथ लाइब्रेरी ऑपरेटिंग सिस्टम ([[ unikernel ]] भी देखें) होते हैं, जो एक पारंपरिक ऑपरेटिंग सिस्टम की कार्यात्मकताओं के साथ एप्लिकेशन | एक्सोकर्नल्स अपने आप में बहुत छोटे होते हैं। हालांकि, उनके साथ लाइब्रेरी ऑपरेटिंग सिस्टम (यूनिकर्नेल[[ unikernel |(unikernel)]] भी देखें) होते हैं, जो एक पारंपरिक ऑपरेटिंग सिस्टम की कार्यात्मकताओं के साथ एप्लिकेशन विकासक प्रदान करते हैं। यह प्रत्येक उपयोगकर्ता के लिए नीचे आता है जो अपने स्वयं के शेष कर्नेल को खींचकर लिखता है, जो एक बहुत ही जोखिम भरा, जटिल और काफी चुनौतीपूर्ण काम है - विशेष रूप से समय-बाधित उत्पादन-उन्मुख वातावरण में, यही कारण है कि एक्सोकर्नल्स ने कभी पकड़ में नहीं आए।{{cn|date=August 2021}} एक्सोकर्नेल-आधारित सिस्टम का एक प्रमुख लाभ यह है कि वे कई लाइब्रेरी ऑपरेटिंग सिस्टम को सम्मिलित कर सकते हैं, प्रत्येक एक अलग[[ एपीआई ]]निर्यात करता है, उदाहरण के लिए एक उच्च स्तरीय [[ प्रयोक्ता इंटरफ़ेस |प्रयोक्ता अंतरापृष्ठ]] विकास के लिए और रीयल-टाइम नियंत्रण के लिए निर्यात करता है। | ||
=== मल्टी कर्नेल === | === मल्टी कर्नेल === | ||
{{Main| | {{Main|मल्टी कर्नेल}} | ||
एक मल्टीकर्नेल ऑपरेटिंग सिस्टम एक [[ मल्टी-कोर प्रोसेसर ]] | मल्टी- | एक मल्टीकर्नेल ऑपरेटिंग सिस्टम एक [[ मल्टी-कोर प्रोसेसर |मल्टी-अंतर्भाग प्रोसेसर]] है| मल्टी-अंतर्भाग मशीन को स्वतंत्र अंतर्भाग के नेटवर्क के रूप में मानता है, जैसे कि यह एक वितरित सिस्टम हो। यह साझा स्मृति नहीं मानता बल्कि [[ संदेश देना |संदेश देना]] के रूप में अंतर-प्रक्रिया संचार लागू करता है।<ref>Baumann et al., "The Multikernel: a new OS architecture for scalable multicore systems", to appear in 22nd Symposium on Operating Systems Principles (2009), http://research.microsoft.com/pubs/101903/paper.pdf</ref><ref>The Barrelfish operating system, http://www.barrelfish.org/.</ref> बैरलफिश पहला ऑपरेटिंग सिस्टम था जिसे मल्टीकर्नेल के रूप में वर्णित किया गया था। | ||
== कर्नेल विकास का इतिहास == | == कर्नेल विकास का इतिहास == | ||
=== प्रारंभिक ऑपरेटिंग सिस्टम | === प्रारंभिक ऑपरेटिंग सिस्टम कर्नेल === | ||
{{Main| | {{Main|कर्नेल विकास का इतिहास}} | ||
कड़ाई से | |||
कड़ाई से बता रहे हैं , एक कंप्यूटर चलाने के लिए एक ऑपरेटिंग सिस्टम (और इस प्रकार, एक कर्नेल) की आवश्यकता नहीं होती है। प्रोग्राम को सीधे "नंगे धातु" मशीन पर संगृहीत और निष्पादित किया जा सकता है, बशर्ते कि उन प्रोग्राम के लेखक बिना किसी हार्डवेयर अमूर्तता या ऑपरेटिंग सिस्टम समर्थन के काम करने के इच्छुक हों। अधिकांश शुरुआती कंप्यूटर 1950 और 1960 के दशक के दौरान इस तरह से संचालित होते थे, जिन्हें विभिन्न कार्यक्रमों के निष्पादन के बीच पुनर्नियोजन(रीसेट) और पुनः संगृहीत किया गया था। आखिरकार, छोटे सहायक प्रोग्राम जैसे [[ प्रोग्राम लोडर |प्रोग्राम लोडर]] और [[ डिबगर |दोषमार्जक]] ने प्रवाह के बीच स्मृति में छोड़ दिया गया, या [[ रीड ऑनली मैमोरी |रीड ऑनली मैमोरी(ROM)]] से संगृहीत किया गया। जैसा कि इन्हें विकसित किया गया था, उन्होंने प्रारंभिक ऑपरेटिंग सिस्टम कर्नेल बनने का आधार बनाया। कुछ [[ विडियो गेम कंसोल |विडियो गेम कंसोल]] और सन्निहित सिस्टम पर आज भी "नंगे धातु " के दृष्टिकोण का उपयोग किया जाता है,<ref name="Ball2002">Ball: Embedded Microprocessor Designs, p. 129</ref> लेकिन सामान्य तौर पर, नए कंप्यूटर आधुनिक ऑपरेटिंग सिस्टम और कर्नेल का उपयोग करते हैं। | |||
1969 में, [[ आरसी 4000 मल्टीप्रोग्रामिंग सिस्टम |आरसी 4000 मल्टीप्रोग्रामिंग सिस्टम]] ने एक छोटे नाभिक के सिस्टम प्रारुप दर्शन को पेश किया, जिस पर विभिन्न उद्देश्यों के लिए ऑपरेटिंग सिस्टम को एक व्यवस्थित तरीके से बनाया जा सकता था,<ref name="Hansen2001RC4k">Hansen 2001 (os), pp.17–18</ref> जिसे माइक्रोकर्नेल दृष्टिकोण कहा जाएगा। | |||
=== समय-सहभाजन(टाइम-शेयरिंग) ऑपरेटिंग सिस्टम === | |||
{{Main|समय-सहभाजन}} | |||
यूनिक्स से पहले के दशक में, कंप्यूटरों की शक्ति में अत्यधिक वृद्धि हुई थी{{snd}} उस बिंदु तक जहां कंप्यूटर संचालक लोगों को अपनी मशीनों पर अपने खाली समय का उपयोग करने के लिए नए तरीकों की तलाश कर रहे थे। इस युग के दौरान प्रमुख विकासों में से एक समय-साझाकरण था, जिससे कई उपयोगकर्ताओं को कंप्यूटर समय के छोटे टुकड़े प्राप्त होंगे, जिस दर पर ऐसा प्रतीत होता था कि वे प्रत्येक अपने स्वयं के, धीमे, मशीन से जुड़े हुए थे।<ref>{{cite web|url=http://cm.bell-labs.com/cm/cs/who/dmr/cacm.html|title=C.ACM यूनिक्स पेपर का BSTJ संस्करण|website=bell-labs.com|access-date=2006-08-17|archive-date=2005-12-30|archive-url=https://web.archive.org/web/20051230143815/http://cm.bell-labs.com/cm/cs/who/dmr/cacm.html|url-status=live}}</ref> | |||
समय-सहभाजन सिस्टम के विकास ने कई समस्याओं को जन्म दिया। एक यह था कि उपयोगकर्ता, विशेष रूप से उन विश्वविद्यालयों में जहां सिस्टम विकसित किए जा रहे थे, अधिक सेंट्रल प्रोसेसिंग यूनिट समय प्राप्त करने के लिए सिस्टम को हैक करना चाहते थे। इस कारण से, कंप्यूटर सुरक्षा और अभिगम नियंत्रण 1965 में [[ मॉलटिक्स |मॉलटिक्स]] योजना का एक प्रमुख केंद्रबिन्दु बन गया।<ref>{{cite conference |url=http://www.multicians.org/fjcc1.html |title=मल्टिक्स सिस्टम का परिचय और अवलोकन|first1=F. J. |last1=Corbató |author-link1=Fernando J. Corbató |first2=V. A. |last2=Vissotsky |conference=1965 Fall Joint Computer Conference |archive-url=https://web.archive.org/web/20110709025836/http://www.multicians.org/fjcc1.html |archive-date=2011-07-09 |url-status=live}}</ref> एक और चल रहा मुद्दा कंप्यूटिंग संसाधनों को ठीक से संभाल रहा था: उपयोगकर्ताओं ने अपना अधिकांश समय टर्मिनल पर घूरने और यह सोचने में बिताया कि वास्तव में कंप्यूटर के संसाधनों का उपयोग करने के बजाय क्या इनपुट करना है, और एक समय-साझाकरण प्रणाली को एक सक्रिय उपयोगकर्ता को सीपीयू समय देना चाहिए। इन अवधियों के दौरान, अंत में, सिस्टम ने प्रायः एक स्मृति पदानुक्रम की पेशकश की जिसमें कई परतें गहरी थीं, और इस महंगे संसाधन को विभाजित करने से कल्पित स्मृति सिस्टम में बड़े विकास हुए। | |||
=== अमिगा === | === अमिगा === | ||
{{Main| | {{Main|अमिगा ओ एस}} | ||
[[ कमोडोर इंटरनेशनल ]] [[ अमिगा ]] को 1985 में रिलीज़ किया गया था, और | [[ कमोडोर इंटरनेशनल ]][[ अमिगा |अमिगा]] को 1985 में रिलीज़ किया गया था, और उन्नत कर्नेल संरचना की सुविधा देने वाले पहले - और निश्चित रूप से सबसे सफल - घरेलू कंप्यूटरों में से एक था। अमिगा ओ एस(AmigaOS) कर्नेल का कार्यकारी घटक, ईएक्सईसी.लाइब्रेरी(exec.library), एक माइक्रोकर्नेल संदेश-पासिंग प्रारुप का उपयोग करता है, लेकिन ग्राफिक्स.लाइब्रेरी जैसे अन्य कर्नेल घटक हैं, जिनकी हार्डवेयर तक सीधी पहुँच होती है। कोई स्मृति सुरक्षा नहीं है, और कर्नेल लगभग हमेशा उपयोगकर्ता विधा में चल रहा है। कर्नेल विधा में केवल विशेष क्रियाएं निष्पादित की जाती हैं, और उपयोगकर्ता- विधा एप्लिकेशन ऑपरेटिंग सिस्टम को कर्नेल विधा में अपने कोड को निष्पादित करने के लिए कह सकते हैं। | ||
=== यूनिक्स === | === यूनिक्स === | ||
{{Main| | {{Main|यूनिक्स}} | ||
[[File:Unix history-simple.svg|300px|thumb|यूनिक्स जैसी प्रणालियों के लिए पूर्ववर्ती/उत्तराधिकारी पारिवारिक संबंधों का आरेख]]यूनिक्स के | [[File:Unix history-simple.svg|300px|thumb|यूनिक्स जैसी प्रणालियों के लिए पूर्ववर्ती/उत्तराधिकारी पारिवारिक संबंधों का आरेख]]यूनिक्स के प्रारुपचरण के दौरान, प्रोग्रामर ने प्रत्येक उच्च-स्तरीय [[ डिवाइस फ़ाइल |उपकरण दस्तावेज़]] को नमूना लेने निर्णय लिया, क्योंकि उनका मानना था कि [[ गणना |गणना]] का उद्देश्य डेटा रूपांतरण था।<ref name="unix">{{cite web |url=https://www.unix.org/what_is_unix/single_unix_specification.html |title=एकल यूनिक्स विशिष्टता|work=The open group |access-date=2016-09-29 |archive-url=https://web.archive.org/web/20161004051725/http://www.unix.org/what_is_unix/single_unix_specification.html |archive-date=2016-10-04 |url-status=dead }}</ref> | ||
उदाहरण के लिए, [[ प्रिंटर (कंप्यूटिंग) ]] को एक ज्ञात स्थान पर | उदाहरण के लिए, [[ प्रिंटर (कंप्यूटिंग) |प्रिंटर (कंप्यूटिंग)]] को एक ज्ञात स्थान पर दस्तावेज़ के रूप में दर्शाया गया था{{snd}} जब डेटा को दस्तावेज़ में नक़ल किया गया था, तो वह प्रतिलिपि हो गया। अन्य प्रणालियाँ, समान कार्यक्षमता प्रदान करने के लिए, निचले स्तर पर उपकरणों को कल्पित करने के लिए प्रवृत्त होती हैं{{snd}} अर्थात्, उपकरण और दस्तावेज़ दोनों कुछ संगृहीत करने योग्य कर्नेल इकाई अवधारणा के उदाहरण होंगे। दस्तावेज़ स्तर पर सिस्टम को [[ वर्चुअलाइजिंग |कल्पित]] करने से उपयोगकर्ताओं को अपने मौजूदा दस्तावेज़ प्रबंधन उपयोगिताओं और अवधारणाओं का उपयोग करके पूरे सिस्टम में हेरफेर करने की अनुमति मिली, नाटकीय रूप से संचालन को सरल बना दिया। उसी प्रतिमान के विस्तार के रूप में, यूनिक्स प्रोग्रामर्स को [[ पाइपलाइन (यूनिक्स) |यूनिक्स]] की अवधारणा का उपयोग करते हुए, छोटे कार्यक्रमों की एक श्रृंखला का उपयोग करके दस्तावेज़ में हेरफेर करने की अनुमति देता है, जो उपयोगकर्ताओं को चरणों में संचालन पूरा करने की अनुमति देता है, एकल-उद्देश्य उपकरणों की एक श्रृंखला के माध्यम से एक दस्तावेज़ पर निवेश करता है। . हालांकि अंतिम परिणाम समान था, इस तरह से छोटे प्रोग्रामों का उपयोग करने से नाटकीय रूप से लचीलेपन में वृद्धि हुई और साथ ही विकास और उपयोग में आसानी हुई, जिससे उपयोगकर्ता श्रृंखला से प्रोग्राम को जोड़कर या हटाकर अपने कार्य प्रगति को संशोधित कर सके। | ||
यूनिक्स मॉडल में, ऑपरेटिंग सिस्टम में दो भाग होते हैं: पहला, उपादेयता(यूटिलिटी) प्रोग्राम का विशाल संग्रह जो अधिकांश ऑपरेशन को संचालित करता है; दूसरा, कर्नेल जो प्रोग्राम चलाता है।<ref name="unix"/>यूनिक्स के तहत, एक प्रोग्रामिंग दृष्टिकोण से, दोनों के बीच का अंतर काफी पतला है; कर्नेल एक प्रोग्राम है, जो पर्यवेक्षक विधा में चल रहा है,{{efn|The highest privilege level has various names throughout different architectures, such as supervisor mode, kernel mode, CPL0, DPL0, ring 0, etc. See [[Ring (computer security)]] for more information.}} जो बाकी सिस्टम बनाने वाले छोटे उपयोगिता कार्यक्रमों के लिए प्रोग्राम लोडर और पर्यवेक्षक के रूप में कार्य करता है, और इन प्रोग्रामों के लिए लॉक (कंप्यूटर विज्ञान) और इनपुट/आउटपुट|I/O सेवाएं प्रदान करता है; इसके अलावा, कर्नेल ने उपयोक्ता स्थान में बिल्कुल भी हस्तक्षेप नहीं किया। | |||
इन वर्षों में कंप्यूटिंग मॉडल बदल गया, और यूनिक्स का हर चीज का उपचार एक दस्तावेज़ या बाइट स्ट्रीम है जो अब पहले की तरह सार्वभौमिक रूप से लागू नहीं था। यद्यपि एक[[ कंप्यूटर टर्मिनल | कंप्यूटर अवसानक]] को दस्तावेज़ या बाइट स्ट्रीम के रूप में माना जा सकता है, जिसे मुद्रित या पढ़ा जाता है, यह [[ ग्राफिकल यूज़र इंटरफ़ेस |ग्राफिकल यूज़र इंटरफ़ेस]] के लिए सही नहीं लगता है। कंप्यूटर नेटवर्किंग ने एक और समस्या खड़ी कर दी। यहां तक कि अगर नेटवर्क संचार की तुलना दस्तावेज़ अभिगमन से की जा सकती है, तो निम्न-स्तरीय पैकेट-उन्मुख स्थापत्य कला डेटा के अलग-अलग हिस्सों से निपटता है, न कि पूरी दस्तावेज़ के साथ। जैसे-जैसे कंप्यूटर की क्षमता बढ़ती गई, यूनिक्स कोड के साथ तेजी से अव्यवस्थित होता गया। यह इसलिए भी है क्योंकि यूनिक्स कर्नेल की प्रतिरूपकता बड़े पैमाने पर मापनीय है।<ref>{{cite web|url=http://www.asymco.com/2010/09/29/unixs-revenge/|title=यूनिक्स का बदला|date=29 September 2010|website=asymco.com|access-date=2 October 2010|archive-date=9 November 2010|archive-url=https://web.archive.org/web/20101109010117/http://www.asymco.com/2010/09/29/unixs-revenge/|url-status=live}}</ref> जबकि कर्नेल में सत्तर और अस्सी के दशक में कोड की 100,000 स्रोत लाइनें हो सकती थीं, जी एन यू(GNU) जैसे आधुनिक यूनिक्स उत्तराधिकारियों के लिनक्स कर्नेल जैसे कर्नेल में 13 मिलियन से अधिक पंक्तियां हैं।<ref>{{cite web|url=https://dwheeler.com/essays/linux-kernel-cost.html|title=Linux कर्नेल 2.6: यह अधिक मूल्य का है!|first=David A.|last=Wheeler|date=October 12, 2004}}</ref> | |||
आधुनिक यूनिक्स-डेरिवेटिव प्रायः इकाई-लोडिंग मोनोलिथिक कर्नेल पर आधारित होते हैं। इसके उदाहरण जीएनयू, आईबीएम एआईएक्स के कई[[ लिनक्स वितरण | लिनक्स वितरण]] में लिनक्स कर्नेल हैं, साथ ही फ्रीबीएसडी, [[ ड्रैगनफ्लाईबीएसडी |ड्रैगनफ्लाईबीएसडी]] , [[ ओपनबीएसडी |ओपनबीएसडी]] , [[ नेटबीएसडी |नेटबीएसडी]] और मैकओएस जैसे [[ बर्कले सॉफ्टवेयर वितरण |बर्कले सॉफ्टवेयर वितरण]] परिवर्त कर्नेल हैं। इन विकल्पों के अलावा, शौकिया विकासक एक सक्रिय [[ ऑपरेटिंग सिस्टम का विकास |ऑपरेटिंग सिस्टम का विकास]] को बनाए रखते हैं, जो स्व-लिखित अभिरुचि कर्नेल द्वारा आबाद किया जाता है, जो ज्यादातर लिनक्स(Linux), फ्री बी एस डी(FreeBSD), ड्रैगन फ्लाई बी एस डी(DragonflyBSD), ओपन बी एस डी(OpenBSD) या नेट बी एस डी (NetBSD) कर्नेल और/या उनके साथ संगत होने के साथ कई सुविधाएँ साझा करता है।<ref>This community mostly gathers at [http://www.osdever.net Bona Fide OS Development] {{Webarchive|url=https://web.archive.org/web/20220117235428/http://www.osdever.net/ |date=2022-01-17 }}, [http://www.mega-tokyo.com/forum The Mega-Tokyo Message Board] {{Webarchive|url=https://web.archive.org/web/20220125090706/https://mega-tokyo.com/blog/ |date=2022-01-25 }} and other operating system enthusiast web sites.</ref> | |||
=== क्लासिक मैक ओएस और मैक ओएस === | |||
{{Main|क्लासिक मैक ओएस |मैक ओएस}} | |||
एप्पल आई एन सी. (Apple Inc.) ने सबसे पहले 1984 में अपने मैकिनटोश([[ Macintosh |Macintosh)]] [[ निजी कंप्यूटर |निजी कंप्यूटर]] के साथ बंडल करके अपना क्लासिक मैक ओएस(Mac OS) लॉन्च किया। एप्पल मैक ओएस 8.6(Apple Mac OS 8.6) में एक नैनोकर्नेल प्रारुप में चला गया। इसके विरुद्ध, आधुनिक मैक ओएस(macOS) (मूल रूप से मैक ओएस एक्स(Mac OS X) नाम दिया गया) [[ डार्विन (ऑपरेटिंग सिस्टम) |डार्विन (ऑपरेटिंग सिस्टम)]] पर आधारित है, जो एक्स एन यू(XNU) नामक संकरित कर्नेल का उपयोग करता है, जिसे बी एस डी(BSD#4;SD|4.3BSD) कर्नेल और [[ मच (कर्नेल) |मच (कर्नेल)]] के संयोजन से बनाया गया था।).<ref>{{cite web |url=http://www.kernelthread.com/mac/osx/arch_xnu.html |title=एक्सएनयू: कर्नेल|first=Amit |last=Singh |date=December 2003 |archive-url=https://web.archive.org/web/20110812000315/http://osxbook.com/book/bonus/ancient/whatismacosx//arch_xnu.html |archive-date=2011-08-12 |url-status=dead}}</ref> | |||
Apple Inc. ने सबसे पहले 1984 में अपने [[ Macintosh ]] [[ निजी कंप्यूटर ]] के साथ बंडल करके अपना क्लासिक Mac OS लॉन्च किया। Apple Mac OS 8.6 में एक नैनोकर्नेल | |||
=== माइक्रोसॉफ्ट विंडोज === | === माइक्रोसॉफ्ट विंडोज === | ||
{{Main| | {{Main|माइक्रोसॉफ्ट विंडोज का इतिहास}} | ||
Microsoft | |||
माइक्रोसॉफ्ट विंडोज(Microsoft विंडोज) को पहली बार 1985 में[[ MS-DOS | एम एस- डी ओ एस(MS-DOS)]] के बढोत्तरी के रूप में रिलीज़ किया गया था। अन्य ऑपरेटिंग सिस्टम पर इसकी निर्भरता के कारण, विंडोज 95 से पहले [[ विंडोज़ मी |विंडोज़ मी]] शुरुआती प्रकाशन को एक प्रचालन वातावरण माना जाता था (ऑपरेटिंग सिस्टम के साथ भ्रमित नहीं होना चाहिए)। यह उत्पाद लाइन 1980 और 1990 के दशक के दौरान विकसित होती रही, जिसमें विंडोज 9x श्रृंखला में 32-बिट एड्रेसिंग और प्री-एम्प्टिव मल्टीटास्किंग सम्मिलित थी; लेकिन 2000 में विंडोज मी की रिलीज के साथ समाप्त हो गया। | |||
Microsoft ने | माइक्रोसॉफ्ट(Microsoft) ने विंडोज एन टी (विंडोज NT) भी विकसित किया, एक बहुत ही समान अंतरापृष्ठ वाला एक ऑपरेटिंग सिस्टम, लेकिन उच्च-अंत और व्यावसायिक उपयोगकर्ताओं के लिए अभिप्रेत है। यह लाइन 1993 में [[ विंडोज एनटी |विंडोज एनटी]] 3.1 की विमोचन के साथ शुरू हुई थी, और अक्टूबर 2001 में [[ विन्डोज़ एक्सपी |विन्डोज़ एक्सपी]] की रिलीज के साथ सामान्य उपयोगकर्ताओं के लिए पेश की गई थी। विंडोज 9एक्स को पूरी तरह से अलग, अधिक परिष्कृत ऑपरेटिंग सिस्टम के साथ बदल दिया गया। [[ मेरे पास विंडोज़ थी |मेरे पास विंडोज़ थी -]] यह वह लाइन है जो [[ विंडोज़ 11 |विंडोज़ 11]] के साथ जारी रहती है। | ||
विंडोज एनटी के कर्नेल की वास्तुकला को एक | विंडोज एनटी के कर्नेल की वास्तुकला को एक संकरित कर्नेल माना जाता है क्योंकि कर्नेल में क्लाइंट/परिवेषक स्तरित उपतंत्र प्रतिरूप के साथ विंडो प्रबंधकऔर आईपीसी प्रबंधक जैसे कार्य होते हैं।<ref>{{cite web|url=http://windows.com/|title=विंडोज - माइक्रोसॉफ्ट विंडोज 10 होम और प्रो ओएस, लैपटॉप, पीसी, टैबलेट और अधिक के लिए आधिकारिक साइट|website=windows.com|access-date=2019-03-24|archive-date=2011-08-20|archive-url=https://web.archive.org/web/20110820081607/http://www.windows.com/|url-status=live}}</ref> इसे संशोधित माइक्रोकर्नेल के रूप में प्रारुप किया गया था, क्योंकि [[ विंडोज एनटी |विंडोज एनटी]] कर्नेल मच (कर्नेल) से प्रभावित था, लेकिन शुद्ध माइक्रोकर्नेल के सभी मानदंडों को पूरा नहीं करता है। | ||
=== [[ आईबीएम ]] पर्यवेक्षक === | === [[ आईबीएम | आईबीएम]] पर्यवेक्षक === | ||
पर्यवेक्षी | पर्यवेक्षी प्रोग्राम या पर्यवेक्षक एक कंप्यूटर प्रोग्राम है, जो प्रायः एक ऑपरेटिंग सिस्टम का हिस्सा होता है, जो अन्य[[ सबरूटीन | सामान्य कार्यों]] के निष्पादन को नियंत्रित करता है और [[ निर्धारण (कंप्यूटिंग) |निर्धारण (कंप्यूटिंग)]] , इनपुट/आउटपुट संचालन, अपवाद से निपटने और इसी तरह के कार्यों को नियंत्रित करता है और प्रसंस्करण प्रणाली डेटा में काम के प्रवाह को नियंत्रित करता है। | ||
ऐतिहासिक रूप से, यह शब्द अनिवार्य रूप से आईबीएम के [[ मेनफ़्रेम कंप्यूटर ]] ऑपरेटिंग सिस्टम की लाइन से जुड़ा था जो OS/360 से शुरू हुआ था। अन्य ऑपरेटिंग सिस्टम में, पर्यवेक्षक को प्रायः | ऐतिहासिक रूप से, यह शब्द अनिवार्य रूप से आईबीएम के [[ मेनफ़्रेम कंप्यूटर |मेनफ़्रेम कंप्यूटर]] ऑपरेटिंग सिस्टम की लाइन से जुड़ा था जो ओएस/360(OS/360) से शुरू हुआ था। अन्य ऑपरेटिंग सिस्टम में, पर्यवेक्षक को प्रायः कर्नेल कहा जाता है। | ||
1970 के दशक में, आईबीएम ने हार्डवेयर से | 1970 के दशक में, आईबीएम ने हार्डवेयर से पर्यवेक्षक स्थिति(कंप्यूटर साइंस) को और सार कर दिया, जिसके परिणामस्वरूप एक[[ हाइपरविजर ]]बना जो [[ पूर्ण वर्चुअलाइजेशन |पूर्ण वर्चुअलाइजेशन]] को सक्षम करता है, यानी एक ही मशीन पर एक दूसरे से पूरी तरह से स्वतंत्र रूप से कई ऑपरेटिंग सिस्टम चलाने की क्षमता। इसलिए इस तरह के पहले सिस्टम को कल्पित मशीन या[[ वीएम (ऑपरेटिंग सिस्टम) ]]कहा गया। | ||
=== माइक्रो कर्नेल का विकास === | === माइक्रो कर्नेल का विकास === | ||
हालांकि मैक (कर्नेल), कार्नेगी मेलन विश्वविद्यालय में [[ रिचर्ड राशिद ]] द्वारा विकसित, सबसे प्रसिद्ध सामान्य-उद्देश्य वाला माइक्रोकर्नेल है, अन्य माइक्रोकर्नेल अधिक विशिष्ट उद्देश्यों के साथ विकसित किए गए हैं। [[ L4 माइक्रोकर्नेल परिवार ]] (मुख्य रूप से L3 और L4 कर्नेल) को यह प्रदर्शित करने के लिए बनाया गया था कि माइक्रोकर्नेल आवश्यक रूप से धीमे नहीं हैं।<ref name="l4">{{cite web|url=http://os.inf.tu-dresden.de/L4/overview.html|title=L4 माइक्रोकर्नेल परिवार - सिंहावलोकन|website=os.inf.tu-dresden.de|access-date=2006-08-11|archive-date=2006-08-21|archive-url=https://web.archive.org/web/20060821060811/http://os.inf.tu-dresden.de/L4/overview.html|url-status=live}}</ref> [[ Fiasco (L4 क्लोन) ]] और [[ पिस्ता (L4 क्लोन) ]] जैसे नए कार्यान्वयन अलग-अलग | हालांकि मैक (कर्नेल), कार्नेगी मेलन विश्वविद्यालय में[[ रिचर्ड राशिद ]]द्वारा विकसित, सबसे प्रसिद्ध सामान्य-उद्देश्य वाला माइक्रोकर्नेल है, अन्य माइक्रोकर्नेल अधिक विशिष्ट उद्देश्यों के साथ विकसित किए गए हैं। [[ L4 माइक्रोकर्नेल परिवार |L4 माइक्रोकर्नेल परिवार]] (मुख्य रूप से L3 और L4 कर्नेल) को यह प्रदर्शित करने के लिए बनाया गया था कि माइक्रोकर्नेल आवश्यक रूप से धीमे नहीं हैं।<ref name="l4">{{cite web|url=http://os.inf.tu-dresden.de/L4/overview.html|title=L4 माइक्रोकर्नेल परिवार - सिंहावलोकन|website=os.inf.tu-dresden.de|access-date=2006-08-11|archive-date=2006-08-21|archive-url=https://web.archive.org/web/20060821060811/http://os.inf.tu-dresden.de/L4/overview.html|url-status=live}}</ref> फियास्को[[ Fiasco (L4 क्लोन) | Fiasco (L4 क्लोन)]] और [[ पिस्ता (L4 क्लोन) |पिस्ता (L4 क्लोन)]] जैसे नए कार्यान्वयन अलग-अलग संबोधित स्थल में अन्य L4 प्रक्रियाओं के बगल में Linux चलाने में सक्षम हैं।<ref>{{cite web|url=http://os.inf.tu-dresden.de/fiasco/overview.html|title=Fiasco माइक्रोकर्नेल - सिंहावलोकन|website=os.inf.tu-dresden.de|access-date=2006-07-10|archive-date=2006-06-16|archive-url=https://web.archive.org/web/20060616081310/http://os.inf.tu-dresden.de/fiasco/overview.html|url-status=live}}</ref><ref>{{cite web|url=http://www.l4ka.org/|title=L4Ka - L4Ka प्रोजेक्ट|first=Heinz|last=Zoller (inaktiv)|date=7 December 2013|website=www.l4ka.org|access-date=24 March 2019|archive-date=19 April 2001|archive-url=https://web.archive.org/web/20010419064321/http://www.l4ka.org/|url-status=live}}</ref> | ||
इसके अतिरिक्त, क्यूएनएक्स एक माइक्रोकर्नेल है जो मुख्य रूप से | |||
इसके अतिरिक्त, क्यूएनएक्स एक माइक्रोकर्नेल है जो मुख्य रूप से सन्निहित सिस्टम में उपयोग किया जाता है,<ref>{{cite web|url=http://blackberry.qnx.com/en/products/neutrino-rtos/index|title=क्यूएनएक्स ऑपरेटिंग सिस्टम|website=blackberry.qnx.com|access-date=2019-03-24|archive-date=2019-03-24|archive-url=https://web.archive.org/web/20190324031005/http://blackberry.qnx.com/en/products/neutrino-rtos/index|url-status=live}}</ref> और [[ खुला स्रोत सॉफ्टवेयर |खुला स्रोत सॉफ्टवेयर]] मिनिक्स(MINIX), जबकि मूल रूप से शैक्षिक उद्देश्यों के लिए बनाया गया था, अब एक[[ उच्च उपलब्धता | उच्च उपलब्धता]] और स्व-उपचार (कंप्यूटर विज्ञान)|स्व-चिकित्सा माइक्रोकर्नेल ओएस होने पर केंद्रित है। | |||
== यह भी देखें == | == यह भी देखें == | ||
* ऑपरेटिंग सिस्टम | * ऑपरेटिंग सिस्टम कर्नेलकी तुलना | ||
* अंतःप्रक्रम संचार | * अंतःप्रक्रम संचार | ||
* ऑपरेटिंग सिस्टम | * ऑपरेटिंग सिस्टम | ||
Line 392: | Line 398: | ||
==बाहरी संबंध== | ==बाहरी संबंध== | ||
{{Wikiversity|at=Operating Systems/Kernel Models|Kernel Models}} | {{Wikiversity|at=Operating Systems/Kernel Models|Kernel Models}} | ||
Line 441: | Line 406: | ||
{{Authority control}} | {{Authority control}} | ||
{{DEFAULTSORT:Kernel (Computing)}} | {{DEFAULTSORT:Kernel (Computing)}} | ||
[[Category: | [[Category:All articles with unsourced statements|Kernel (Computing)]] | ||
[[Category:Created On 22/11/2022]] | [[Category:Articles with hatnote templates targeting a nonexistent page|Kernel (Computing)]] | ||
[[Category:Articles with invalid date parameter in template|Kernel (Computing)]] | |||
[[Category:Articles with short description|Kernel (Computing)]] | |||
[[Category:Articles with unsourced statements from August 2021|Kernel (Computing)]] | |||
[[Category:Articles with unsourced statements from July 2007|Kernel (Computing)]] | |||
[[Category:Articles with unsourced statements from June 2015|Kernel (Computing)]] | |||
[[Category:CS1 English-language sources (en)]] | |||
[[Category:CS1 français-language sources (fr)|Kernel (Computing)]] | |||
[[Category:CS1 italiano-language sources (it)|Kernel (Computing)]] | |||
[[Category:CS1 maint|Kernel (Computing)]] | |||
[[Category:CS1 Ελληνικά-language sources (el)|Kernel (Computing)]] | |||
[[Category:Citation Style 1 templates|W]] | |||
[[Category:Collapse templates|Kernel (Computing)]] | |||
[[Category:Created On 22/11/2022|Kernel (Computing)]] | |||
[[Category:Machine Translated Page|Kernel (Computing)]] | |||
[[Category:Missing redirects|Kernel (Computing)]] | |||
[[Category:Navigational boxes| ]] | |||
[[Category:Navigational boxes without horizontal lists|Kernel (Computing)]] | |||
[[Category:Pages with script errors|Kernel (Computing)]] | |||
[[Category:Short description with empty Wikidata description|Kernel (Computing)]] | |||
[[Category:Sidebars with styles needing conversion|Kernel (Computing)]] | |||
[[Category:Template documentation pages|Documentation/doc]] | |||
[[Category:Templates Vigyan Ready|Kernel (Computing)]] | |||
[[Category:Templates based on the Citation/CS1 Lua module|Kernel (Computing)]] | |||
[[Category:Templates generating COinS|Cite web]] | |||
[[Category:Templates generating microformats|Kernel (Computing)]] | |||
[[Category:Templates that are not mobile friendly|Kernel (Computing)]] | |||
[[Category:Templates used by AutoWikiBrowser|Cite web]] | |||
[[Category:Templates using TemplateData|Kernel (Computing)]] | |||
[[Category:Webarchive template wayback links]] | |||
[[Category:Wikipedia fully protected templates|Cite web]] | |||
[[Category:Wikipedia metatemplates|Kernel (Computing)]] | |||
[[Category:ऑपरेटिंग सिस्टम|Kernel (Computing)]] | |||
[[Category:ऑपरेटिंग सिस्टम गुठली|*]] |
Latest revision as of 18:15, 3 January 2023
कर्नेल कंप्यूटर के ऑपरेटिंग सिस्टम के अंतर्भाग में एक कंप्यूटर प्रोग्राम है और प्रायः सिस्टम में हर चीज पर इसका पूरा नियंत्रण होता है।[1]यह ऑपरेटिंग सिस्टम कोड का वह भाग है जो हमेशा स्मृति(मेमोरी) में रहता है[2] और हार्डवेयर और सॉफ्टवेयर घटकों के बीच बातचीत की सुविधा प्रदान करता है। एक पूर्ण कर्नेल उपकरण ड्राइवरों के माध्यम से सभी हार्डवेयर संसाधनों (जैसे इनपुट/आउटपुट , स्मृति, क्रिप्टोग्राफी) को नियंत्रित करता है, ऐसे संसाधनों से संबंधित प्रक्रियाओं के बीच विरोध की मध्यस्थता करता है, और सामान्य संसाधनों के उपयोग को अनुकूलित करता है उदहारण: सीपीयू और कैशे उपयोग, दस्तावेज़ सिस्टम और नेटवर्क सॉकेट। अधिकांश प्रणालियों पर, कर्नेल (बूटलोडर के बाद) के प्रारंभ होने पर चलाये किए गए पहले प्रोग्रामों में से एक है। यह बाकी प्रारंभन के साथ-साथ स्मृति, बाह्य उपकरणों, और सॉफ्टवेयर से इनपुट/आउटपुट अनुरोधों को संभालता है, और उन्हें सेंट्रल प्रोसेसिंग यूनिट के लिए डाटा प्रोसेसिंग निर्देशों में अनुवाद करता है।
कर्नेल का समीक्षात्मक कोड को प्रायः स्मृति के एक अलग क्षेत्र में संगृहीत किया जाता है, जो एप्लिकेशन सॉफ़्टवेयर या ऑपरेटिंग सिस्टम के अन्य कम महत्वपूर्ण भागों द्वारा अभिगम से सुरक्षित होता है। कर्नेल इस संरक्षित कर्नेल स्थान में अपने कार्य करता है, जैसे कि प्रक्रियाएँ चलाना, हार्ड डिस्क जैसे हार्डवेयर उपकरणों का प्रबंधन करना और व्यवधानों को संभालना। इसके विपरीत, एप्लिकेशन प्रोग्राम जैसे कि ब्राउज़र, वर्ड प्रोसेसर, या ऑडियो या वीडियो प्लेयर स्मृति, उपभोक्ता स्थान के एक अलग क्षेत्र का उपयोग करते हैं। यह अलगाव उपयोगकर्ता डेटा और कर्नेल डेटा को एक दूसरे के साथ हस्तक्षेप करने और अस्थिरता और धीमापन पैदा करने से रोकता है,[1] साथ ही खराब कार्य करने वाले अनुप्रयोगों को अन्य अनुप्रयोगों को प्रभावित करने या संपूर्ण ऑपरेटिंग सिस्टम को ख़राब करने से रोकता है। उन प्रणालियों में भी जहां कर्नेल को एप्लिकेशन संबोधित स्थल में सम्मिलित किया गया है, अनधिकृत एप्लिकेशन को कर्नेल को संशोधित करने से रोकने के लिए स्मृति सुरक्षा का उपयोग किया जाता है।
कर्नेल का अप्लिकेशन प्रोग्रामिंग अंतरफलक एक निम्न-स्तरीय अमूर्त परत है। जब कोई प्रक्रिया कर्नेल से एक कार्य का अनुरोध करती है, तो इसे प्रायः एक आवरण फलन(रैपर फ़ंक्शन) के माध्यम से सिस्टम कॉल का आह्वान करना चाहिए।
यहाँ विभिन्न कर्नेल स्थापत्य संरचनाएं हैं। मुख्य रूप से गति के लिए पर्यवेक्षक प्रणाली(मोड) में सीपीयू के निष्पादन के साथ मोनोलिथिक कर्नेल पूरी तरह से एक ही संबोधित स्थल में चलते हैं। माइक्रोकर्नेल अपने अधिकांश कार्य लेकिन उनकी सभी सेवाएं नहीं, उपयोगकर्ता स्थान में चलाते हैं ,[3] जैसे उपयोगकर्ता प्रक्रियाएं करती हैं, मुख्य रूप से लचीलापन और प्रमापीय प्रोग्रामिंग के लिए उपयोगकर्ता प्रक्रियाओं की तरह चलाते हैं।[4] मिनी एक्स (मिनीएक्स 3) माइक्रोकर्नेल प्रारुप का एक उल्लेखनीय उदाहरण है। इसके बजाय, लिनक्स कर्नेल मोनोलिथिक है, हालांकि यह प्रतिरूपक भी है, क्योंकि यह कार्यावधि पर चलाने योग्य कर्नेल इकाई को सम्मिलित और हटा सकता है।
कंप्यूटर सिस्टम का यह केंद्रीय घटक प्रोग्राम को क्रियान्वित करने के लिए जिम्मेदार है। कर्नेल किसी भी समय निर्णय लेने की जिम्मेदारी लेता है कि चल रहे कई प्रोग्रामों में से कौन सा प्रोसेसर या प्रोसेसर को आवंटित किया जाना चाहिए।
यादृच्छिक अभिगम स्मृति (रैंडम-एक्सेस मेमोरी)
रैंडम-एक्सेस स्मृति (RAM) का उपयोग प्रोग्राम निर्देश और डेटा दोनों को संचित करने के लिए किया जाता है।[lower-alpha 1] प्रायः, किसी प्रोग्राम को निष्पादित करने के लिए दोनों को स्मृति में उपस्थित होने की आवश्यकता होती है। सामान्यतः कई प्रोग्राम स्मृति तक पहुंचना चाहते हैं, सामान्यतः कंप्यूटर की तुलना में अधिक स्मृति की मांग करते हैं। कर्नेल यह तय करने के लिए जिम्मेदार है कि प्रत्येक प्रक्रिया किस स्मृति का उपयोग कर सकती है, और यह निर्धारित करने के लिए कि पर्याप्त स्मृति उपलब्ध नहीं होने पर क्या करना है।
इनपुट/आउटपुट उपकरण
इनपुट/आउटपुट उपकरण में कीबोर्ड, माइस, डिस्क ड्राइव, प्रिंटर, यू एस बी उपकरण, नेटवर्क एडेप्टर और प्रदर्शन उपकरण जैसे सह उपकरण सम्मिलित हैं। कर्नेल एक उपयुक्त उपकरण को इनपुट/आउटपुट निष्पादित करने के लिए एप्लिकेशन से अनुरोध आवंटित करता है और उपकरण का उपयोग करने के लिए सुविधाजनक तरीके प्रदान करता है (प्रायः उस बिंदु पर सारणित किया जाता है जहां एप्लिकेशन को उपकरण के कार्यान्वयन विवरण जानने की आवश्यकता नहीं होती है)।
संसाधन प्रबंधन
संसाधन प्रबंधन(कंप्यूटिंग) में आवश्यक प्रमुख पहलू निष्पादन कार्यक्षेत्र या डोमेन(संबोधित स्थल) को परिभाषित कर रहे हैं और एक कार्यक्षेत्र के भीतर संसाधनों तक मध्यस्थता करने के लिए सुरक्षा तंत्र का उपयोग किया जाता है।[5] कर्नेल तुल्यकालन और अंतर-प्रक्रिया संचार(आई पी सी) के लिए विधियाँ भी प्रदान करते हैं। ये कार्यान्वयन कर्नेल के भीतर ही स्थित हो सकते हैं या कर्नेल अन्य प्रक्रियाओं जो चल रही हैं, पर भी भरोसा कर सकता है। हालांकि कर्नेल को एक दूसरे द्वारा प्रदान की जाने वाली सुविधाओं तक प्रवेश कराने के लिए आई पी सी प्रदान करना चाहिए, कर्नेल को इन सुविधाओं तक पहुंच के लिए अनुरोध करने के तरीके के साथ चल रहे प्रोग्राम भी प्रदान करने चाहिए। कर्नेल प्रक्रियाओं या थ्रेड्स के बीच संदर्भ स्विचन के लिए भी जिम्मेदार है।
स्मृति प्रबन्धन
कर्नेल के पास सिस्टम की स्मृति तक पूर्ण पहुंच होती है और प्रक्रियाओं को इस स्मृति को सुरक्षित रूप से चलाने की अनुमति देनी चाहिए क्योंकि उन्हें इसकी आवश्यकता होती है। ऐसा करने में सामान्यतः पहला कदम कल्पित एड्रेसिंग(वर्चुअल एड्रेसिंग) होता है, जिसे प्रायः पेजिंग और/या विभाजन (स्मृति) द्वारा हासिल किया जाता है। कल्पित एड्रेसिंग कर्नेल को एक दिए गए भौतिक पते को एक और पता, आभासी पता बनाने की अनुमति देता है। विभिन्न प्रक्रियाओं के लिए कल्पित संबोधित स्थल भिन्न हो सकते हैं; स्मृति जो एक प्रक्रिया किसी विशेष(आभासी) पते पर पहुंचती है, वह अलग-अलग स्मृति हो सकती है जो एक ही पते पर दूसरी प्रक्रिया तक पहुंचती है। यह प्रत्येक प्रोग्राम को व्यवहार करने की अनुमति देता है जैसे कि यह केवल एक ही अकेला(कर्नेल के अलावा) चल रहा है और इस प्रकार अनुप्रयोगों(ऍप्लिकेशन्स) को एक दूसरे को ख़राब होने से रोकता है।[6]
कई प्रणालियों पर, प्रोग्राम का कल्पित पता उस डेटा को संदर्भित कर सकता है जो वर्तमान में स्मृति में नहीं है। कल्पित एड्रेसिंग द्वारा प्रदान की गई अप्रत्यक्ष विलक्षणता (ऑपरेटिंग सिस्टम) को हार्ड ड्राइव की तरह अन्य डेटा संचय(स्टोर्स) का उपयोग करने की अनुमति देती है, जो अन्यथा मुख्य स्मृति (रैंडम-एक्सेस स्मृति) में बनी रहती है। परिणामतः, ऑपरेटिंग सिस्टम प्रोग्राम को भौतिक रूप से उपलब्ध सिस्टम की तुलना में अधिक स्मृति का उपयोग करने की अनुमति दे सकता है। जब किसी प्रोग्राम को ऐसे डेटा की आवश्यकता होती है जो वर्तमान में रैम में नहीं है, तो सीपीयू कर्नेल को संकेत देता है कि ऐसा हो गया है, और कर्नेल एक निष्क्रिय स्मृति ब्लॉक की सामग्री को डिस्क (यदि आवश्यक हो) में लिखकर प्रतिक्रिया देता है और इसके द्वारा अनुरोधित डेटा के साथ बदल देता है। प्रोग्राम को फिर से उस बिंदु से फिर से शुरू किया जा सकता है जहां इसे रोका गया था। इस योजना को प्रायः डिमांड पेजिंग के रूप में जाना जाता है।
कल्पित एड्रेसिंग दो अलग-अलग क्षेत्रों में स्मृति के कल्पित विभाजन के निर्माण की अनुमति देता है, एक कर्नेल (कर्नेल स्थल) के लिए आरक्षित होता है और दूसरा एप्लिकेशन (यूजर स्थल) के लिए आरक्षित होता है। प्रोसेसर द्वारा एप्लिकेशन को कर्नेल स्मृति को संबोधित करने की अनुमति नहीं है, इस प्रकार यह एप्लिकेशन को चल रहे कर्नेल को नुकसान पहुंचाने से रोकता है। स्मृति स्थल के इस मौलिक विभाजन ने वास्तविक सामान्य-उद्देश्य कर्नेल के वर्तमान प्रारुप में बहुत योगदान दिया है और ऐसी प्रणालियों में लगभग सार्वभौमिक है, हालांकि कुछ शोध कर्नेल (जैसे, विलक्षणता) अन्य दृष्टिकोण अपनाते हैं।
उपकरण प्रबंधन
उपयोगी कार्यों को करने के लिए, प्रक्रियाओं को कंप्यूटर से जुड़े बाह्य उपकरणों तक पहुंच की आवश्यकता होती है, जो उपकरण(डिवाइस) ड्राइवरों के माध्यम से कर्नेल द्वारा नियंत्रित होते हैं। एक उपकरण ड्राइवर एक कंप्यूटर प्रोग्राम है जो एक हार्डवेयर उपकरण को संपुटित, निगरानी और नियंत्रित (ओएस के माध्यम से अंतरापृष्ठ(एच एस आई)) करता है । यह ऑपरेटिंग सिस्टम को एक ए पी आई, कार्यविधि और जानकारी प्रदान करता है कि हार्डवेयर के एक निश्चित टुकड़े के साथ कैसे नियंत्रण और संचार किया जाए। उपकरण ड्राइवर सभी ओ एस और उनके ऍप्लिकेशन्स के लिए एक महत्वपूर्ण और अहम निर्भरता प्रदान करते हैं। ड्राइवर का प्रारुप लक्ष्य अमूर्तता है; ड्राइवर का कार्य ओएस-अनिवार्य सार फ़ंक्शन कॉल (प्रोग्रामिंग कॉल) को उपकरण-विशिष्ट कॉल में अनुवाद करना है। सैद्धांतिक रूप में, एक उपकरण को उपयुक्त ड्राइवर के साथ सही ढंग से काम करना चाहिए। उपकरण ड्राइवरों का उपयोग उदहारण पूर्वक वीडियो कार्ड, साउंड कार्ड, प्रिंटर, स्कैनर, मोडेम और नेटवर्क कार्ड में होता है।
हार्डवेयर स्तर पर, उपकरण ड्राइवरों के सामान्य सार में सम्मिलित हैं:
- सीधे सहसंबंधन
- एक उच्च-स्तरीय अंतरापृष्ठ(इंटरफ़ेस) (वीडियो बी आई ओ एस (BIOS)) का उपयोग करना
- निचले स्तर के उपकरण ड्राइवर का उपयोग करना (डिस्क ड्राइवरों का उपयोग करने वाले दस्तावेज़ ड्राइवर)
- पूरी तरह से कुछ अलग करते हुए, हार्डवेयर के साथ काम को अनुकरण करना
और सॉफ्टवेयर स्तर पर, उपकरण ड्राइवर सार में सम्मिलित हैं:
- ऑपरेटिंग सिस्टम को हार्डवेयर संसाधनों तक सीधी पहुंच की अनुमति देना
- केवल आदिम(प्रिमिटिव) लागू करना
- त्वैन(TWAIN) जैसे गैर-चालक सॉफ़्टवेयर के लिए एक इंटरफ़ेस कार्यान्वित करना
- एक भाषा को लागू करना (सामान्यतः एक उच्च स्तरीय भाषा जैसे परिशिष्ट भाग)
उदाहरण के लिए, उपयोगकर्ता को चित्रपट(स्क्रीन) पर कुछ दिखाने के लिए, एक एप्लिकेशन कर्नेल से अनुरोध करेगा, जो अनुरोध को उसके प्रदर्शित ड्राइवर को अग्रेषित करेगा, जो वास्तव में शैली/पिक्सेल(चित्र अवयव) के आलेखन के लिए जिम्मेदार है।[6]
एक कर्नेल को उपलब्ध उपकरणों की एक सूची बनाए रखनी चाहिए। यह सूची पहले से ज्ञात हो सकती है (उदाहरण के लिए, एकअंतः स्थापित प्रणाली पर जहां उपलब्ध हार्डवेयर परिवर्तन होने पर कर्नेल को फिर से लिखा जाएगा), उपयोगकर्ता द्वारा निर्माण किया गया (पुराने पीसी पर और व्यक्तिगत उपयोग के लिए प्रारुप नहीं किए गए सिस्टम पर) या द्वारा पता लगाया गया रन टाइम पर ऑपरेटिंग सिस्टम (प्रायः प्लग करें और खेलें कहा जाता है)। प्लग-एंड-प्ले सिस्टम में, एक उपकरण मैनेजर पहले स्थापित उपकरणों का पता लगाने के लिए पेरिफ़ेरल कंपोनेंट इंटरकनेक्ट (पीसीआई) या यूनिवर्सल सीरियल बस(यूएसबी) जैसे विभिन्न परिधीय बसों पर बारीकी से जाँच करता है, फिर उपयुक्त ड्राइवरों की खोज करता है।
चूंकि उपकरण प्रबंधन एक बहुत ही ऑपरेटिंग ओ एस-विशिष्ट विषय है, इन ड्राइवरों को प्रत्येक प्रकार के कर्नेल प्रारुप द्वारा अलग तरीके से नियंत्रित किया जाता है, लेकिन हर स्थिति में, कर्नेल को इनपुट/आउटपुट प्रदान करना होता है। इनपुट/आउटपुट ड्राइवरों को भौतिक रूप से अपने उपकरणों तक पहुंचने की अनुमति देता है। कुछ द्वारक(कंप्यूटर नेटवर्किंग) या स्मृति स्थिति के माध्यम से उपकरणों तक पहुंचने की अनुमति देता है। उपकरण प्रबंधन प्रणाली को परिकलन करते समय महत्वपूर्ण निर्णय लेने होते हैं, क्योंकि कुछ प्रारूपों में प्रवेश मार्ग में संदर्भ कुंजी सम्मिलित हो सकते हैं, जिससे संचालन बहुत सीपीयू-गहन हो जाता है और आसानी से एक महत्वपूर्ण प्रदर्शन शिरोपरि हो जाता है।
सिस्टम कॉल
कंप्यूटिंग में, एक सिस्टम कॉल यह है कि कैसे एक प्रक्रिया एक ऑपरेटिंग सिस्टम के कर्नेल से एक सेवा का अनुरोध करती है जिसे चलाने की अनुमति सामान्य रूप से नहीं होती है। सिस्टम कॉल एक प्रक्रिया और ऑपरेटिंग सिस्टम के बीच अंतरापृष्ठ प्रदान करते हैं। सिस्टम के साथ पारस्परिक क्रिया करने वाले अधिकांश संक्रियायों के लिए अनुमति की आवश्यकता होती है जो उपयोगकर्ता-स्तरीय प्रक्रिया के लिए उपलब्ध नहीं होती है, उदाहरण के लिए, इनपुट/आउटपुट सिस्टम पर मौजूद उपकरण के साथ किया जाता है, या अन्य प्रक्रियाओं के साथ संचार के किसी भी रूप में सिस्टम कॉल के उपयोग की आवश्यकता होती है।
एक सिस्टम कॉल एक तंत्र है जिसका उपयोग एप्लिकेशन प्रोग्राम द्वारा ऑपरेटिंग सिस्टम से सेवा का अनुरोध करने के लिए किया जाता है। वे एक मशीन कोड निर्देश का उपयोग करते हैं जो प्रोसेसर के तरीका(मोड) बदलने का कारण बनता है। एक उदाहरण, पर्यवेक्षक विधा(मोड) से संरक्षित विधा में होगा। यह वह जगह है जहां ऑपरेटिंग सिस्टम हार्डवेयर उपकरण या स्मृति प्रबंधन इकाई तक पहुंचने जैसी क्रियाएं करता है। प्रायः ऑपरेटिंग सिस्टम एक प्रोग्राम संग्रह प्रदान करता है जो ऑपरेटिंग सिस्टम और सामान्य उपयोगकर्ता प्रोग्राम के बीच होता है। प्रायः यह एक सी(प्रोग्रामिंग लैंग्वेज) है जैसे ग्लिबक या विंडोज एपीआई(विंडोज API) की तरह होता है। प्रोग्राम संग्रह कर्नेल को जानकारी पास करने और पर्यवेक्षक विधा में कुंजी करने के निम्न-स्तरीय विवरण को संभालता है। सिस्टम कॉल में बंद होना, खुलना, पढ़ना, इंतज़ार करना और लिखना(क्लोज, ओपन, रीड, वेट और राइट) सम्मिलित हैं।
वास्तव में उपयोगी कार्य करने के लिए, एक प्रक्रिया को कर्नेल द्वारा प्रदान की जाने वाली सेवाओं तक पहुँचने में सक्षम होना चाहिए। यह प्रत्येक कर्नेल द्वारा अलग तरीके से लागू किया जाता है, लेकिन अधिकांश सी प्रोग्राम संग्रह या एक एप्लिकेशन प्रोग्रामिंग अंतरापृष्ठ प्रदान करते हैं, जो बदले में संबंधित कर्नेल कार्यों को आमंत्रित करता है।[7]
कर्नेल फ़ंक्शन को लागू करने की विधि कर्नेल से कर्नेल में भिन्न होती है। यदि स्मृति अलगाव उपयोग में है, तो उपयोगकर्ता प्रक्रिया के लिए कर्नेल को सीधे आवाहन करना असंभव है, क्योंकि यह प्रोसेसर के अभिगम नियंत्रण नियमों का उल्लंघन होगा। कुछ संभावनाएं हैं:
- सॉफ़्टवेयर-कृत्रिम (सिम्युलेटेड) रुकावट (इंटरप्ट) का उपयोग करना। यह विधि अधिकांश हार्डवेयर पर उपलब्ध है, और इसलिए बहुत सामान्य है।
- कॉल गेट का उपयोग करना। कॉल गेट एक विशेष पता है जो कर्नेल द्वारा प्रोसेसर को ज्ञात स्थान पर कर्नेल स्मृति में एक सूची में संग्रहीत किया जाता है। जब प्रोसेसर उस पते पर एक कॉल का पता लगाता है, तो यह बिना पहुंच उल्लंघन के लक्षित स्थान पर अनुप्रेषित करता है। इसके लिए हार्डवेयर आधार की जरूरत होती है, लेकिन इसके लिए हार्डवेयर काफी सामान्य है।
- एक विशेष सिस्टम कॉल निर्देश का उपयोग करना। इस तकनीक के लिए विशेष हार्डवेयर समर्थन की आवश्यकता होती है, जिसमें सामान्य संरचना (विशेष रूप से, x86) की कमी हो सकती है। हालाँकि, x86 प्रोसेसर के हाल के प्रतिरूप में सिस्टम कॉल निर्देश जोड़े गए हैं, और पीसी के लिए कुछ ऑपरेटिंग सिस्टम उपलब्ध होने पर उनका उपयोग करते हैं।
- स्मृति-आधारित कतार का उपयोग करना। एक एप्लिकेशन जो बड़ी संख्या में अनुरोध करता है, लेकिन प्रत्येक के परिणाम के लिए प्रतीक्षा करने की आवश्यकता नहीं होती है, स्मृति के एक क्षेत्र में अनुरोधों का विवरण जोड़ सकता है जिसे कर्नेल समय-समय पर अनुरोधों को खोजने के लिए पर्यवेक्षण(स्कैन) करता है।
कर्नेल प्रारुप निर्णय
संरक्षण
कर्नेल के प्रारुप में एक महत्वपूर्ण विचार वह समर्थन है जो यह दोषों(दोष सहिष्णुता) और दुर्भावनापूर्ण व्यवहारों(कंप्यूटर सुरक्षा) से सुरक्षा के लिए प्रदान करता है। इन दो पहलुओं को प्रायः स्पष्ट रूप से अलग नहीं किया जाता है, और कर्नेल प्रारुप में इस भेद को अपनाने से सुरक्षा के लिए पदानुक्रमित संरचना को अस्वीकार कर दिया जाता है।।[5]
कर्नेल द्वारा प्रदान किए गए तंत्र या नीतियों को कई मानदंडों के अनुसार वर्गीकृत किया जा सकता है, जिनमें सम्मिलित हैं: स्थिर(संकलन समय पर लागू) या गतिशील (रन टाइम (कार्यक्रम जीवनचक्र चरण) पर लागू); पूर्व-खाली या बाद का पता लगाने; वे सुरक्षा सिद्धांतों के अनुसार संतुष्ट होते हैं (उदाहरण के लिए, पीटर जे. डेनिंग[8][9]); चाहे वे हार्डवेयर समर्थित हों या भाषा आधारित; चाहे वे अधिक खुले तंत्र हों या बाध्यकारी नीति; और भी कई होते हैं।
पदानुक्रमित सुरक्षा डोमेन के लिए समर्थन[10] प्रायः सीपीयू विधा का उपयोग करके कार्यान्वित किया जाता है।
कई कर्नेल "क्षमताओं" का कार्यान्वयन प्रदान करते हैं, अर्थात, ऐसी प्रयोजन जो उपयोगकर्ता कोड को प्रदान की जाती हैं जो कर्नेल द्वारा प्रबंधित अंतर्निहित वस्तु तक सीमित पहुँच की अनुमति देती हैं। इसका एक सामान्य उदाहरण दस्तावेज़ हैंडलिंग है: एक दस्तावेज़ स्थायी संचयन(स्टोरेज) उपकरण पर संग्रहीत जानकारी का प्रतिनिधित्व करता है। कर्नेल पढ़ने, लिखने, हटाने या निष्पादित करने सहित कई अलग-अलग संचालन करने में सक्षम हो सकता है, लेकिन एक उपयोगकर्ता-स्तरीय एप्लिकेशन को केवल इनमें से कुछ कार्यों को करने की अनुमति दी जा सकती है (उदाहरण के लिए, इसे केवल दस्तावेज़ पढ़ने की अनुमति दी जा सकती है)। इसका एक सामान्य कार्यान्वयन कर्नेल के लिए एप्लिकेशन को एक प्रयोजन प्रदान करना है (प्रायः एक दस्तावेज़ हैंडल कहा जाता है) जिस पर एप्लिकेशन तब संचालन शुरू कर सकता है, जिसकी वैधता संचालन के अनुरोध के समय कर्नेल जांचता है। ऐसी प्रणाली को उन सभी वस्तुओं को आच्छादित करने के लिए विस्तारित किया जा सकता है जो कर्नेल प्रबंधित करता है, और वास्तव में अन्य उपयोगकर्ता ऍप्लिकेशन्स द्वारा प्रदान की गई वस्तुओं के लिए किया जाता है।
क्षमताओं का हार्डवेयर समर्थन प्रदान करने का एक कुशल और सरल तरीका है कि स्मृति मैनेजमेंट यूनिट(MMU) को हर स्मृति अभिगमन के लिए अभिगमन-अधिकारों की जाँच करने की ज़िम्मेदारी सौंपना, यह एक तंत्र है जिसे क्षमता-आधारित पताभिगमन कहा जाता है।[11] अधिकांश वाणिज्यिक कंप्यूटर संरचना में क्षमताओं के लिए ऐसे एम एम यू(MMU) समर्थन की कमी होती है।
एक वैकल्पिक दृष्टिकोण प्रायः समर्थित पदानुक्रमित डोमेन का उपयोग करके क्षमताओं का अनुकरण करता है। इस दृष्टिकोण में, प्रत्येक संरक्षित वस्तु को एक संबोधित स्थल में रहना चाहिए, जिस पर एप्लिकेशन की पहुंच नहीं है; कर्नेल ऐसी स्मृति में क्षमताओं की एक सूची भी रखता है। जब किसी एप्लिकेशन को किसी क्षमता द्वारा संरक्षित वस्तु तक पहुंचने की आवश्यकता होती है, तो यह एक सिस्टम कॉल करता है और कर्नेल तब जांचता है कि क्या एप्लिकेशन की क्षमता इसे अनुरोधित क्रिया करने की अनुमति देती है, और यदि इसकी अनुमति है तो इसके लिए अभिगमन करता है (या तो सीधे, या किसी अन्य उपयोगकर्ता-स्तरीय प्रक्रिया को अनुरोध सौंप कर)। संबोधित स्थल स्विचिंग की प्रदर्शन लागत वस्तुओं के बीच जटिल परस्परक्रिया वाले सिस्टम में इस दृष्टिकोण की व्यावहारिकता को सीमित करती है, लेकिन इसका उपयोग वर्तमान ऑपरेटिंग सिस्टम में उन प्रयोजन के लिए किया जाता है जिन्हें बार-बार अभिगम नहीं किया जाता है या जो जल्दी से प्रदर्शन करने की उम्मीद नहीं करते हैं।[12][13]
यदि फर्मवेयर सुरक्षा तंत्र का समर्थन नहीं करता है, तो उच्च स्तर पर सुरक्षा का अनुकरण करना संभव है, उदाहरण के लिए पृष्ठ तालिकाओं में हेरफेर करके क्षमताओं का अनुकरण करके, लेकिन प्रदर्शन निहितार्थ हैं।[14] हार्डवेयर समर्थन की कमी एक समस्या नहीं हो सकती है, हालाँकि, उन सिस्टम के लिए जो भाषा-आधारित सुरक्षा का उपयोग करना चुनते हैं।[15]
एक महत्वपूर्ण कर्नेल प्रारुपनिर्णय अमूर्त स्तरों का चुनाव है जहां सुरक्षा तंत्र और नीतियों को लागू किया जाना चाहिए। उच्च स्तर पर सुरक्षा का समर्थन करने में कर्नेल सुरक्षा तंत्र महत्वपूर्ण भूमिका निभाते हैं।[11][16][17][18][19]
एक दृष्टिकोण दोष सहिष्णुता के लिए प्रक्रिया यंत्र सामग्री और कर्नेल समर्थन का उपयोग करना है (ऊपर देखें), और उसके शीर्ष पर दुर्भावनापूर्ण व्यवहार के लिए सुरक्षा नीति का निर्माण करना (जहां आवश्यक हो, क्रिप्टोग्राफी तंत्र जैसी सुविधाओं को जोड़ना), संकलक को कुछ जिम्मेदारी सौंपना है। वे दृष्टिकोण जो संकलक और/या एप्लीकेशन स्तर पर सुरक्षा नीति के प्रवर्तन को प्रत्यायोजित करते हैं, उन्हें सामान्यतः भाषा-आधारित सुरक्षा कहा जाता है।
वर्तमान मुख्यधारा के ऑपरेटिंग सिस्टम में कई महत्वपूर्ण सुरक्षा तंत्रों की कमी अनुप्रयोग अमूर्त स्तर पर पर्याप्त सुरक्षा नीतियों के कार्यान्वयन में बाधा डालती है।[16] वास्तव में, कंप्यूटर सुरक्षा में एक आम ग़लतफ़हमी यह है कि कर्नेल समर्थन की परवाह किए बिना किसी भी सुरक्षा नीति को एक अनुप्रयोग में लागू किया जा सकता है।[16]
मंगल अनुसन्धान समूह विकासक(मार्स रिसर्च ग्रुप विकासक) के अनुसार, अलगाव की कमी कर्नेल सुरक्षा को कमजोर करने वाले मुख्य कारकों में से एक है।[20] वे मुख्य रूप से लिनक्स कर्नेल में सुरक्षा के लिए अपने ड्राइवर सैंडबॉक्स (कंप्यूटर सुरक्षा) ढांचे का प्रस्ताव करते हैं।[21][22]
हार्डवेयर- या भाषा-आधारित सुरक्षा
विशिष्ट कंप्यूटर सिस्टम आज हार्डवेयर-लागू नियमों का उपयोग करते हैं कि किस प्रोग्राम को किस डेटा तक पहुंचने की अनुमति है। प्रोसेसर निष्पादन की निगरानी करता है और एक प्रोग्राम को रोकता है जो नियम का उल्लंघन करता है, जैसे उपयोगकर्ता प्रक्रिया जो कर्नेल स्मृति में लिखने का प्रयास करती है। उन प्रणालियों में जिनमें क्षमताओं के लिए समर्थन की कमी है, अलग-अलग संबोधित स्थल का उपयोग करके प्रक्रियाओं को एक-दूसरे से अलग किया जाता है।[23] उपयोक्ता प्रक्रियाओं से कर्नेल में कॉल को ऊपर वर्णित सिस्टम कॉल विधियों में से एक का उपयोग करने की आवश्यकता के द्वारा नियंत्रित करता है।
एक वैकल्पिक दृष्टिकोण भाषा-आधारित सुरक्षा का उपयोग करना है। एक भाषा-आधारित प्रणाली में, भाषा-आधारित सुरक्षा प्रणाली, कर्नेल केवल उस कोड को निष्पादित करने की अनुमति देगा जो एक विश्वसनीय भाषा संकलक द्वारा निर्मित किया गया हो। भाषा को तब इस तरह से बनाया किया जा सकता है कि प्रोग्रामर के लिए यह असंभव है कि वह ऐसा कुछ करने का निर्देश दे जो सुरक्षा आवश्यकता का उल्लंघन करे।[15]
इस दृष्टिकोण के लाभों में सम्मिलित हैं:
- अलग संबोधित स्थल की आवश्यकता नहीं है। संबोधित स्थल के बीच बदलना एक धीमा संचालन है जो बहुत अधिक उपरिप्रभार(ओवरहेड) का कारण बनता है, और मौजूदा ऑपरेटिंग सिस्टम में अनावश्यक कुंजी को रोकने के लिए वर्तमान में बहुत सारे अनुकूल कार्य किए जाते हैं। भाषा-आधारित सुरक्षा प्रणाली में कुंजी पूरी तरह से अनावश्यक है, क्योंकि सभी कोड एक ही संबोधित स्थल में सुरक्षित रूप में काम कर सकते हैं।
- लचीलापन। कोई भी सुरक्षा योजना जिसे प्रोग्रामिंग भाषा के माध्यम से अभिव्यक्त करने के लिए योजनाबद्ध(प्रारुप) किया जा सकता है, इस पद्धति का उपयोग करके इसे कार्यान्वित किया जा सकता है। सुरक्षा योजना में परिवर्तन (उदाहरण के लिए एक पदानुक्रमित प्रणाली से क्षमता-आधारित एक) के लिए नए हार्डवेयर की आवश्यकता नहीं होती है।
कमियों में सम्मिलित हैं:
- एप्लिकेशन शुरुआत का समय लंबा है। एप्लिकेशन(अनुप्रयोगों) को सत्यापित किया जाना चाहिए जब वे यह सुनिश्चित करने के लिए शुरू किए जाते हैं कि वे सही संकलक द्वारा संकलित किए गए हैं, या स्रोत कोड या बाईटकोड से पुन: संकलित करने की आवश्यकता हो सकती है।
- अनम्य प्रकार की प्रणालियाँ। पारंपरिक प्रणालियों पर, एप्लिकेशन सामान्यतः ऐसे संचालन करते हैं जो सुरक्षित नहीं होते हैं। भाषा-आधारित सुरक्षा प्रणाली में इस तरह के संचालन की अनुमति नहीं दी जा सकती है, जिसका अर्थ है कि अनुप्रयोगों को फिर से लिखने की आवश्यकता हो सकती है और कुछ स्थितियों में विश्लेषण लुप्त हो सकता है।
भाषा-आधारित सुरक्षा वाली प्रणालियों के उदाहरणों में जे एक्स(JX) (ऑपरेटिंग सिस्टम) और माइक्रोसॉफ्ट(Microsoft) की विलक्षणता सम्मिलित हैं।
प्रक्रिया सहयोग
एडवर्ड डिजस्ट्रा ने साबित किया कि तार्किक दृष्टिकोण से, परमाणु (प्रोग्रामिंग) लॉक (कंप्यूटर विज्ञान) और युग्मक संकेत पद्धति पर काम करने वाले वितालकन संचालन प्रक्रिया सहयोग की किसी भी कार्यक्षमता को व्यक्त करने के लिए पर्याप्त मूल हैं।[24] हालाँकि इस दृष्टिकोण को प्रायः सुरक्षा और दक्षता के मामले में कमी माना जाता है, जबकि एक संदेश देने वाला दृष्टिकोण अधिक लचीला होता है।[25] कई अन्य दृष्टिकोण (या तो निम्न- या उच्च-स्तर) भी उपलब्ध हैं, साथ ही कई आधुनिक कर्नेल सिस्टम के लिए साझा स्मृति (इंटरप्रोसेस संचार) और दूरस्थ प्रक्रिया कॉल जैसे सिस्टम के लिए समर्थन प्रदान करते हैं।
इनपुट/आउटपुट उपकरण(उपकरण) प्रबंधन
एक कर्नेल का विचार जहां इनपुट/आउटपुट उपकरणों को समानांतर सह-संचालन प्रक्रियाओं के रूप में अन्य प्रक्रियाओं के साथ समान रूप से नियंत्रित किया जाता है, पहले ब्रिन्च हेन्सन द्वारा प्रस्तावित और कार्यान्वित किया गया था (हालांकि इसी तरह के विचारों को 1967 में सुझाया गया था।[26][27] हैनसेन के इस विवरण में, सामान्य प्रक्रियाओं को आंतरिक प्रक्रियाएँ कहा जाता है, जबकि इनपुट/आउटपुट उपकरणों को बाहरी प्रक्रियाएँ कहा जाता है।[25]
भौतिक स्मृति के समान, अनुप्रयोगों को नियंत्रक संद्वार और पंजिका तक सीधे पहुंच की इजाजत देने से नियंत्रक खराब हो सकता है, या सिस्टम ध्वस्त हो सकता है। इसके साथ, उपकरण की जटिलता के आधार पर, कुछ उपकरण प्रोग्राम करने के लिए आश्चर्यजनक रूप से जटिल हो सकते हैं, और कई अलग-अलग नियंत्रकों का उपयोग कर सकते हैं। इस वजह से, उपकरण को प्रबंधित करने के लिए एक अधिक सार अंतरफलक प्रदान करना महत्वपूर्ण है। यह अंतरापृष्ठ प्रायः उपकरण ड्राइवर या हार्डवेयर अमूर्त परत(एब्स्ट्रक्शन लेयर) द्वारा किया जाता है। बार-बार, एप्लिकेशन को इन उपकरणों तक पहुंच की आवश्यकता होगी। कर्नेल को इन उपकरणों की सूची को किसी तरह सिस्टम से पूछताछ करके रख – रखाव करना चाहिए। यह बी आई ओ एस (BIOS) के माध्यम से, या विभिन्न सिस्टम बसों (जैसे पी सी आई/ पी सी आई ई, या यू एस बी) में से एक के माध्यम से किया जा सकता है। एक वीडियो ड्राइवर के उदाहरण का उपयोग करते हुए, जब कोई एप्लिकेशन उपकरण पर संचालन का अनुरोध करता है, जैसे कि एक वर्ण प्रदर्शित करना, कर्नेल को वर्तमान सक्रिय वीडियो ड्राइवर को यह अनुरोध भेजने की आवश्यकता होती है। बदले में, वीडियो ड्राइवर को इस अनुरोध को पूरा करने की जरूरत है। यह अंतर-प्रक्रिया संचार(आईपीसी) का एक उदाहरण है।
कर्नेल- व्यापक प्रारुप दृष्टिकोण
स्वाभाविक रूप से, ऊपर सूचीबद्ध कार्यों और सुविधाओं को कई तरीकों से प्रदान किया जा सकता है जो बनावट और कार्यान्वयन में एक दूसरे से भिन्न होते हैं।
तंत्र और नीति के पृथक्करण का सिद्धांत सूक्ष्म और मोनोलिथिक कर्नेल के सिद्धांत के बीच पर्याप्त अंतर है।[28][29] यहां एक तंत्र वह समर्थन है जो कई अलग-अलग नीतियों के कार्यान्वयन की अनुमति देता है, जबकि एक नीति संचालन का एक विशेष तरीका है। उदाहरण:
- 'तंत्र:' उपयोगकर्ता लॉगिन प्रयास प्राधिकरण परिवेषक(सर्वर) पर भेज दिए जाते हैं
- 'नीति:' प्राधिकरण परिवेषक को एक गुप्त कोड(पासवर्ड) की आवश्यकता होती है जिसे डेटाबेस में संग्रहीत गुप्त कोड के विरुद्ध सत्यापित किया जाता है
क्योंकि तंत्र और नीति अलग-अलग हैं, नीति को आसानी से बदला जा सकता है, उदाहरण। एक सुरक्षा प्रतीक के उपयोग की आवश्यकता है।
न्यूनतम माइक्रोकर्नेल में बस कुछ बहुत ही बुनियादी नीतियां सम्मिलित हैं,[29]और इसका तंत्र अनुमति देता है कि कर्नेल के शीर्ष पर क्या चल रहा है (ऑपरेटिंग सिस्टम का शेष भाग और अन्य अनुप्रयोग) यह तय करने के लिए कि कौन सी नीतियों को अपनाना है (जैसे स्मृति प्रबंधन, उच्च स्तरीय प्रक्रिया नियोजन, दस्तावेज़ सिस्टम प्रबंधन, आदि)।[5][25]इसके बजाय एक मोनोलिथिक कर्नेल कई नीतियों को सम्मिलित करता है, इसलिए बाकी सिस्टम को उन पर भरोसा करने के लिए प्रतिबंधित करता है।
पर ब्रिन्च हेन्सन ने तंत्र और नीति के पृथक्करण के पक्ष में तर्क प्रस्तुत किए।[5][25]कंप्यूटर स्थापत्य कला में एक आम समस्या[30][31][32] , इस अलगाव को ठीक से पूरा करने में विफलता मौजूदा ऑपरेटिंग सिस्टमों में पर्याप्त नवाचार की कमी के प्रमुख कारणों में से एक है।[5] मोनोलिथिक प्रारुप सुरक्षा के लिए कर्नेल विधा / उपयोगकर्ता विधा वास्तुशिल्प दृष्टिकोण (तकनीकी रूप से पदानुक्रमित सुरक्षा डोमेन कहा जाता है) से प्रेरित है, जो पारंपरिक वाणिज्यिक प्रणालियों में आम है;[33] वास्तव में, प्रत्येक इकाई को सुरक्षा की आवश्यकता होती है इसलिए उसे कर्नेल में सम्मिलित किया जाता है।[33]मोनोलिथिक प्रारुप और विशेषाधिकार प्राप्त विधा के बीच की इस कड़ी को तंत्र-नीति पृथक्करण के प्रमुख मुद्दे पर फिर से जोड़ा जा सकता है;[5]वास्तव में विशेषाधिकार प्राप्त विधा स्थापत्य कला दृष्टिकोण सुरक्षा नीतियों के साथ सुरक्षा तंत्र को एक साथ मिलाता है, जबकि प्रमुख वैकल्पिक स्थापत्य कला दृष्टिकोण, क्षमता-आधारित पताभिगमन(एड्रेसिंग), दोनों के बीच स्पष्ट रूप से अंतर करता है, जो स्वाभाविक रूप से एक माइक्रोकर्नेल प्रारुप के लिए अग्रणी होता है।[5](सुरक्षा और सुरक्षा का पृथक्करण देखें)।
जबकि मोनोलिथिक कर्नेल अपने सभी कोड को एक ही संबोधित स्थल (कर्नेल स्थल) में निष्पादित करते हैं, माइक्रोकर्नेल अपनी अधिकांश सेवाओं को उपभोगता स्थल में चलाने की कोशिश करते हैं, जिसका उद्देश्य कोडबेस की स्थिरता और प्रतिरुपकता में सुधार करना है।[4]अधिकांश कर्नेल इनमें से किसी एक श्रेणी में ठीक से अनुरूप नहीं होती हैं, बल्कि इन दो प्रारूपों के बीच में पाई जाती हैं। इन्हें संकरित कर्नेल कहते हैं। नैनोकर्नेल और एक्सोकर्नेल जैसे अधिक विदेशी प्रारुप उपलब्ध हैं, लेकिन उत्पादन प्रणालियों के लिए शायद ही कभी उपयोग किए जाते हैं। उदाहरण के लिए, एक्सईएन हाइपरविजर एक एक्सोकर्नेल है।
मोनोलिथिक कर्नेल
एक मोनोलिथिक कर्नेल में, सभी ओ एस(OS) सेवाएँ मुख्य कर्नेल धारा के साथ चलती हैं, इस प्रकार एक ही स्मृति क्षेत्र में भी रहती हैं। यह दृष्टिकोण समृद्ध और शक्तिशाली हार्डवेयर अभिगमन प्रदान करता है। कुछ विकासक, जैसे कि यूनिक्स डेवलपर केन थॉम्पसन, का कहना है कि एक मोनोलिथिक कर्नेल को माइक्रोकर्नेल की तुलना में लागू करना आसान है।[34] मोनोलिथिक कर्नेल का मुख्य नुकसान सिस्टम घटकों के बीच निर्भरता है – उपकरण ड्राइवर में एक दोष(बग) पूरे सिस्टम को ध्वस्त कर सकता है – और तथ्य यह है कि बड़े कर्नेल को बनाए रखना बहुत मुश्किल हो सकता है।
मोनोलिथिक कर्नेल, जो पारंपरिक रूप से यूनिक्स जैसे ऑपरेटिंग सिस्टम द्वारा उपयोग की जाती है, इनमें सभी ऑपरेटिंग सिस्टम के अंतर्भाग फलन और उपकरण ड्राइवर होते हैं। यह यूनिक्स(UNIX) सिस्टम का पारंपरिक प्रारुप है। एक मोनोलिथिक कर्नेल एक एकल प्रोग्राम है जिसमें प्रत्येक कर्नेल से संबंधित कार्य करने के लिए आवश्यक सभी कोड होते हैं। प्रत्येक भाग जिसे अधिकांश प्रोग्रामों द्वारा अभिगम किया जाना है, जिसे प्रोग्राम संग्रह में नहीं रखा जा सकता है, वह कर्नेल स्थल में है: जैसे उपकरण ड्राइवर, शेड्यूलर, स्मृति हैंडलिंग, फाइल सिस्टम और नेटवर्क स्टैक। एप्लिकेशन को कई सिस्टम कॉल प्रदान किए जाते हैं, ताकि वे उन सभी क्रमव्यवस्थाओं तक पहुंच सकें। एक मोनोलिथिक कर्नेल, जबकि शुरू में उप-प्रणालियों के साथ निहित किया जा सकता है, जिसकी आवश्यकता नहीं हो सकती है, इसे उस बिंदु पर समायोजित किया जा सकता है जहां यह हार्डवेयर के लिए विशेष रूप से तैयार किए गए प्रारुप से बहुत तेज़ है, हालांकि सामान्य अर्थों में अधिक प्रासंगिक है। आधुनिक मोनोलिथिक कर्नेल, जैसे कि लिनक्स कर्नेल(जी एन यू(GNU) ऑपरेटिंग सिस्टम के कर्नेल में से एक) और फ्री बी एस डी(FreeBSD) कर्नेल, जो दोनों यूनिक्स-जैसे ऑपरेटिंग सिस्टम की श्रेणी में आते हैं, कार्यावधि(रनटाइम) पर इकाई संगृहीत करने की क्षमता रखते हैं, जिससे आसान अनुमति मिलती है कर्नेल स्थान में चल रहे कोड की मात्रा को कम करने में मदद करते हुए कर्नेल की क्षमताओं का आवश्यकतानुसार विस्तार होता है। मोनोलिथिक कर्नेल में, कुछ लाभ इन बिंदुओं पर टिके होते हैं:
- चूंकि इसमें कम सॉफ्टवेयर सम्मिलित है इसलिए यह तेज है।
- जैसा कि यह सॉफ्टवेयर का एक ही टुकड़ा है, यह स्रोत और संकलित दोनों रूपों में छोटा होना चाहिए।
- कम कोड का मतलब प्रायः कम दोष(बग) होता है जो कम सुरक्षा समस्याओं का अनुवाद कर सकता है।
मोनोलिथिक कर्नेल में ज्यादातर काम सिस्टम कॉल के जरिए किया जाता है। ये अंतरापृष्ठ हैं, प्रायः एक सारणीबद्ध संरचना में रखे जाते हैं, जो डिस्क संचालन जैसे कर्नेल के भीतर कुछ उपतंत्र(सबसिस्टम) तक पहुंचते हैं। अनिवार्य रूप से कॉल प्रोग्राम के भीतर किए जाते हैं और सिस्टम कॉल के माध्यम से अनुरोध की एक जाँच की गई प्रतिलिपि पास की जाती है। इसलिए, यात्रा करने के लिए बिल्कुल भी दूर नहीं है। मोनोलिथिक लिनक्स कर्नेल को न केवल इकाई को गतिशील रूप से संगृहीत(लोड) करने की क्षमता के कारण बल्कि इसके अनुकूलन में आसानी के कारण भी बहुत छोटा बनाया जा सकता है। वास्तव में, कुछ ऐसे संस्करण हैं जो एक पर बड़ी संख्या में उपयोगिताओं और अन्य कार्यक्रमों के साथ अनुरूप होने के लिए काफी छोटे हैं एकल फ्लॉपी डिस्क और अभी भी एक पूरी तरह कार्यात्मक ऑपरेटिंग सिस्टम प्रदान करते हैं (जिनमें से सबसे लोकप्रिय एम यू लिनक्स (muLinux) है)। इसके कर्नेल को छोटा करने की इस क्षमता ने सन्निहित सिस्टम मेंलिनक्स के उपयोग में तेजी से वृद्धि की है।
इस प्रकार के कर्नेल में ऑपरेटिंग सिस्टम के मुख्य कार्य और कार्यावधि पर इकाई संगृहीत करने की क्षमता वाले उपकरण ड्राइवर सम्मिलित होते हैं। वे अंतर्निहित हार्डवेयर के समृद्ध और शक्तिशाली सार प्रदान करते हैं। वे सरल हार्डवेयर सार का एक छोटा सा समूह प्रदान करते हैं और अधिक कार्यक्षमता प्रदान करने के लिए परिवेषक नामक एप्लिकेशन का उपयोग करते हैं। यह विशेष दृष्टिकोण पर्यवेक्षक विधा में चलने वाले कई इकाइयों में ऑपरेटिंग सिस्टम सेवाओं जैसे प्रक्रिया प्रबंधन, समवर्ती और स्मृति प्रबंधन को लागू करने के लिए सिस्टम कॉल के एक समूह के साथ हार्डवेयर पर एक उच्च-स्तरीय कल्पित अंतरापृष्ठ को परिभाषित करता है। इस प्रारुप में कई दोष और सीमाएँ हैं:
- कर्नेल में कोडिंग चुनौतीपूर्ण हो सकती है, आंशिक रूप से क्योंकि कोई सामान्य प्रोग्राम संग्रह (जैसे पूर्ण विशेषताओं वाली सी मानक प्रोग्राम संग्रह) का उपयोग नहीं कर सकता है, और क्योंकि किसी को [[ जीएनयू डीबगर]] जैसे स्रोत-स्तर डीबगर का उपयोग करने की आवश्यकता होती है। कंप्यूटर को पुनःप्रारंभ करना सामान्यतः आवश्यक होता है। यह सिर्फ विकासक(डेवलपर्स) के लिए सुविधा की समस्या नहीं है। जब दोषमार्जन(डिबगिंग) कठिन होती है, और जैसे-जैसे कठिनाइयाँ मजबूत होती जाती हैं, यह अधिक संभावना हो जाती है कि कोड बगियर(गलतियों से भरपूर) होगा।
- कर्नेल के एक हिस्से में त्रुटियों(बग)के मजबूत दुष्प्रभाव होते हैं; चूंकि कर्नेल में प्रत्येक फ़ंक्शन में सभी विशेषाधिकार हैं, एक फ़ंक्शन में एक त्रुटि दूसरे की डेटा संरचना, कर्नेल के पूरी तरह से असंबंधित भाग, या किसी भी चल रहे प्रोग्राम को दूषित कर सकता है।
- कर्नेल सामान्यतः बहुत बड़ी हो जाती है और उसका रखरखाव करना मुश्किल हो जाता है।
- भले ही इन ऑपरेशन की मरम्मत करने वाले इकाईयां पूरे से अलग हैं, कोड एकीकरण तंग है और सही ढंग से करना मुश्किल है।
- चूंकि इकाईयां एक ही संबोधित स्थल में चलते हैं, एक त्रुटि पूरे सिस्टम को नीचे ला सकती है।
- मोनोलिथिक कर्नेल सुवाह्य नहीं हैं; इसलिए, प्रत्येक नई संरचना के लिए उन्हें फिर से लिखा जाना चाहिए, जिस पर ऑपरेटिंग सिस्टम का उपयोग किया जाना है।
मोनोलिथिक कर्नेल के उदाहरण आई बी एम बी आई एक्स(IBM AIX) कर्नेल, एच पी - यू एक्स(HP-UX) कर्नेल और सोलारिस कर्नेल हैं।
माइक्रो कर्नेल
माइक्रोकर्नेल (संक्षिप्त μK या यूके भी) ऑपरेटिंग सिस्टम प्रारुप के लिए एक दृष्टिकोण का वर्णन करने वाला शब्द है, जिसके द्वारा सिस्टम की कार्यक्षमता को पारंपरिक कर्नेल से परिवेषक के एक समूह में ले जाया जाता है, जो न्यूनतम कर्नेल के माध्यम से संचार करता है। सिस्टम स्थल में और जितना संभव हो उपभोक्ता स्थल में छोड़ देता है। एक माइक्रोकर्नेल जिसे एक विशिष्ट पटल या उपकरण के लिए प्रारुप किया गया है, उसमें केवल वही होगा जो इसे संचालित करने के लिए आवश्यक है। माइक्रोकर्नेल दृष्टिकोण में हार्डवेयर पर एक सरल अमूर्तता को परिभाषित करना सम्मिलित है, जिसमें स्मृति प्रबंधन, कंप्यूटर मल्टीटास्किंग और इंटर-प्रोसेस संचार जैसी न्यूनतम ओएस सेवाओं को लागू करने के लिए मूल या सिस्टम कॉल का एक समूह होता है। सामान्य रूप से कर्नेल द्वारा प्रदान की जाने वाली सेवाओं सहित अन्य सेवाएं, जैसे कि कम्प्यूटर नेट्वर्किंग , उपयोगकर्ता-अंतरिक्ष कार्यक्रमों में कार्यान्वित की जाती हैं, जिन्हें परिवेषक कहा जाता है। मोनोलिथिक कर्नेल की तुलना में माइक्रोकर्नेल को बनाए रखना आसान है, लेकिन बड़ी संख्या में सिस्टम कॉल और संदर्भ कुंजी सिस्टम को धीमा कर सकते हैं क्योंकि वे प्रायः सादे फ़ंक्शन कॉल की तुलना में अधिक उपरिव्यय उत्पन्न करते हैं।
कर्नेल स्थान में केवल वे हिस्से हैं जिन्हें वास्तव में विशेषाधिकार प्राप्त मोड में होने की आवश्यकता है: आई पी सी(इंटर-प्रोसेस कम्युनिकेशन), बेसिक शेड्यूलर, या शेड्यूलिंग प्रिमिटिव, बेसिक स्मृति हैंडलिंग, बेसिक इनपुट/आउटपुट प्रिमिटिव। कई महत्वपूर्ण भाग अब उपयोगकर्ता स्थान में चल रहे हैं जैसे : पूर्ण शेड्यूलर, स्मृति हैंडलिंग, दस्तावेज़ सिस्टम और नेटवर्क स्टैक। माइक्रो कर्नेल का आविष्कार पारंपरिक मोनोलिथिक कर्नेल प्रारुप की प्रतिक्रिया के रूप में किया गया था, जिससे सभी सिस्टम कार्यक्षमता को प्रोसेसर के एक विशेष सिस्टम विधा में चल रहे एक स्थिर प्रोग्राम में रखा गया था। माइक्रोकर्नेल में, केवल सबसे मौलिक कार्यों को निष्पादित किया जाता है जैसे कि हार्डवेयर के कुछ (जरूरी नहीं कि सभी) तक पहुंचने में सक्षम होना, स्मृति का प्रबंधन करना और प्रक्रियाओं के बीच संदेश पारित करना समन्वयित करना। कुछ प्रणालियाँ जो माइक्रो कर्नेल का उपयोग करती हैं, वे क्यू एन एक्स(QNX) और एच् यू आर डी (HURD) हैं। क्यूएनएक्स और जीएनयू हर्ड उपयोगकर्ता सत्र के मामले में सिस्टम के पूरे आशुचित्र हो सकते हैं या देखे जा सकते हैं जैसा कि इसे संदर्भित किया गया है। माइक्रोकर्नेल संरचना का सार इसके कुछ फायदों को दिखाता है:
- आसान बनाए रखना
- खण्ड का एक अलग उदाहरण में परीक्षण किया जा सकता है, और फिर एक उत्पादन उदाहरण लेने के लिए अदल बदल किया जा सकता है।
- तीव्र विकास समय और नए सॉफ्टवेयर का परीक्षण कर्नेल को बदले बिना किया जा सकता है।
- सामान्य रूप से अधिक दृढ़ता, यदि एक उदाहरण खराब हो जाता है, तो सामान्यतः इसे एक परिचालन दर्पण से प्रतिस्थापित करना संभव होता है।
अधिकांश माइक्रोकर्नेल एक परिवेषक से दूसरे परिवेषक पर अनुरोधों को संभालने के लिए एक संदेश पासिंग सिस्टम का उपयोग करते हैं। संदेश पासिंग सिस्टम प्रायः माइक्रोकर्नेल के साथ द्वारक(कंप्यूटर नेटवर्किंग) के आधार पर संचालित होता है। एक उदाहरण के रूप में, यदि अधिक स्मृति के लिए अनुरोध भेजा जाता है, तो माइक्रोकर्नेल के साथ एक द्वारक खोला जाता है और अनुरोध भेजा जाता है। एक बार माइक्रोकर्नेल के भीतर, चरण सिस्टम कॉल के समान होते हैं। तर्क यह था कि यह सिस्टम संरचना में प्रतिरुपकता लाएगा, जो एक क्लीनर सिस्टम, दोषमार्जन करने में आसान या गतिशील रूप से संशोधित करने, उपयोगकर्ताओं की जरूरतों के अनुकूल बनाने और अधिक प्रदर्शन करने के लिए आवश्यक होगा। वे जीएनयू हर्ड, मिनिक्स , एमकेलिनक्स, क्यूएनएक्स औररिडॉक्स ओएस जैसे ऑपरेटिंग सिस्टम का हिस्सा हैं। हालांकि माइक्रोकर्नेल अपने आप में बहुत छोटे होते हैं, अपने सभी आवश्यक सहायक कोड के संयोजन में, वास्तव में, वे सामान्यतः मोनोलिथिक कर्नेल से बड़े होते हैं। मोनोलिथिक कर्नेल के हिमायती यह भी बताते हैं कि माइक्रोकर्नेल सिस्टम की दो-स्तरीय संरचना, जिसमें अधिकांश ऑपरेटिंग सिस्टम सीधे हार्डवेयर के साथ पारस्परिक क्रिया नहीं करते हैं, सिस्टम दक्षता के मामले में एक गैर-महत्वहीन लागत पैदा करते हैं। इस प्रकार के कर्नेल प्रायः केवल न्यूनतम सेवाएं प्रदान करते हैं जैसे स्मृति संबोधित स्थल, इंटर-प्रोसेस कम्युनिकेशन(IPC) और प्रोसेस मैनेजमेंट को परिभाषित करना। अन्य कार्य जैसे हार्डवेयर प्रक्रियाओं को चलाना सीधे माइक्रोकर्नेल द्वारा नियंत्रित नहीं किया जाता है। सूक्ष्म कर्नेल के समर्थकों का कहना है कि उन मोनोलिथिक कर्नेल का नुकसान यह है कि कर्नेल में एक त्रुटि एक पूरे सिस्टम को ख़राब कर सकती है। हालाँकि, एक माइक्रोकर्नेल के साथ, यदि एक कर्नेल प्रक्रिया दुर्घटनाग्रस्त हो जाती है, तब भी त्रुटि के कारण सेवा को फिर से शुरू करके पूरे सिस्टम को ख़राब होने से को रोकना संभव है।
कर्नेल द्वारा प्रदान की जाने वाली अन्य सेवाएं जैसे नेटवर्किंग को परिवेषक के रूप में संदर्भित उपभोक्ता-स्थल प्रोग्राम में कार्यान्वित किया जाता है। परिवेषक प्रोग्राम को शुरू और बंद करके ऑपरेटिंग सिस्टम को संशोधित करने की अनुमति देते हैं। नेटवर्किंग समर्थन के बिना मशीन के लिए, उदाहरण के लिए, नेटवर्किंग परिवेषक प्रारंभ नहीं होता है। विभिन्न अनुप्रयोगों और परिवेषकों के बीच डेटा को स्थानांतरित करने के लिए कर्नेल के अंदर और बाहर जाने का कार्य उपरिव्यय बनाता है जो मोनोलिथिक कर्नेल की तुलना में सूक्ष्म कर्नेल की दक्षता के लिए हानिकारक है।
हालाँकि, माइक्रोकर्नेल में नुकसान मौजूद हैं। कुछ हैं:
- बड़ा क्रियाशील स्मृति पदचिह्न ,
- अंतरापृष्ठ के लिए अधिक सॉफ्टवेयर की आवश्यकता है, प्रदर्शन हानि की संभावना है।
- संदेश प्रेषण त्रुटियों(मैसेजिंग त्रुटि्स) को ठीक करना कठिन हो सकता है क्योंकि उन्हें एक मोनोलिथिक कर्नेल में एक प्रतिलिपि की तुलना में लंबी यात्रा करनी पड़ती है।
- सामान्य तौर पर प्रक्रिया प्रबंधन बहुत जटिल हो सकता है।
माइक्रोकर्नेल के नुकसान अत्यंत संदर्भ-आधारित हैं। एक उदाहरण के रूप में, वे छोटे एकल-उद्देश्य(और महत्वपूर्ण) प्रणालियों के लिए अच्छी तरह से काम करते हैं क्योंकि यदि कई प्रक्रियाओं को चलाने की आवश्यकता नहीं होती है, तो प्रक्रिया प्रबंधन की जटिलताओं को प्रभावी ढंग से कम किया जाता है।
एक माइक्रोकर्नेल ऑपरेटिंग सिस्टम के शेष भाग को एक उच्च-स्तरीय भाषा में लिखे गए सामान्य एप्लिकेशन प्रोग्राम के रूप में कार्यान्वित करने की अनुमति देता है, और एक ही अपरिवर्तित कर्नेल के शीर्ष पर विभिन्न ऑपरेटिंग सिस्टम का उपयोग करता है। ऑपरेटिंग सिस्टम के बीच गतिशील रूप से बदलना और एक साथ एक से अधिक सक्रिय होना भी संभव है।[25]
मोनोलिथिक कर्नेल बनाम माइक्रो कर्नेल
जैसे-जैसे कंप्यूटर कर्नेल बढ़ता है, वैसे-वैसे इसके विश्वसनीय कंप्यूटिंग बेस का आकार और भेद्यता भी बढ़ती है; और, सुरक्षा को कम करने के अलावा, स्मृति पदचिन्ह को बढ़ाने की समस्या है।अप्रत्यक्ष स्मृति सिस्टम को बेहतर बनाकर इसे कुछ हद तक कम किया जा सकता है, लेकिन सभी कंप्यूटर स्थापत्य कला में कल्पित स्मृति आधार नहीं होता है।[lower-alpha 2] कर्नेल के पदचिह्न को कम करने के लिए, अनावश्यक कोड को ध्यान से हटाने के लिए व्यापक संपादन किया जाना चाहिए, जो कोड की लाखों पंक्तियों वाले कर्नेल के भागों के बीच गैर-स्पष्ट अन्योन्याश्रितताओं के साथ बहुत मुश्किल हो सकता है।
1990 के दशक के प्रारंभ तक, मोनोलिथिक कर्नेल बनाम माइक्रोकर्नेल की विभिन्न कमियों के कारण, मोनोलिथिक कर्नेल को लगभग सभी ऑपरेटिंग सिस्टम शोधकर्ताओं द्वारा अप्रचलित माना गया था।[citation needed] परिणामतः, एक माइक्रोकर्नेल के बजाय एक मोनोलिथिक कर्नेल के रूप में लिनक्स (कर्नेल) का प्रारुप लिनस टोरवाल्ड्स और एंड्रयू एस तनेनबाउम के बीच एक प्रसिद्ध बहस का विषय था।[35] तनेनबौम-टोरवाल्ड्स बहस में प्रस्तुत तर्क के दोनों पक्षों में योग्यता है।
प्रदर्शन
मोनोलिथिक कर्नेल को उनके सभी कोड को एक ही संबोधित स्थल(कर्नेल स्थल) में रखने के लिए परिकलन किया गया है, जो कुछ विकासक का तर्क है कि सिस्टम के प्रदर्शन को बढ़ाने के लिए आवश्यक है।[36]कुछ विकासक यह भी मानते हैं कि अच्छी तरह से लिखे जाने पर मोनोलिथिक सिस्टम बेहद कुशल होते हैं।[36] मोनोलिथिक प्रतिरूप अधिक कुशल होता है[37] माइक्रोकर्नेल प्रारुप की धीमी आई पी सी प्रणाली के बजाय साझा कर्नेल स्मृति के उपयोग के माध्यम से, जो प्रायः संदेश समाप्ति पर आधारित होता है।[citation needed]
1980 के दशक और 1990 के दशक की शुरुआत में माइक्रोकर्नेल का प्रदर्शन खराब था।[38][39] हालांकि, इन माइक्रोकर्नेल के प्रदर्शन को आनुभविक रूप से मापने वाले अध्ययनों ने ऐसी अक्षमता के कारणों का विश्लेषण नहीं किया गया।[38]इस डेटा की व्याख्या लोककथाओं पर छोड़ दी गई थी, इस धारणा के साथ कि वे कर्नेल- विधा से उपयोगकर्ता- विधा में कुंजी की बढ़ी हुई आवृत्ति, अंतर-प्रक्रिया संचार की बढ़ी हुई आवृत्ति और संदर्भ कुंजी की बढ़ी हुई आवृत्ति के कारण थे।[38]
वास्तव में, जैसा कि 1995 में अनुमान लगाया गया था, माइक्रोकर्नेल के खराब प्रदर्शन के कारण भी हो सकते हैं: (1) संपूर्ण माइक्रोकर्नेल दृष्टिकोण की वास्तविक अक्षमता, (2) उन माइक्रोकर्नेल में लागू की गई विशेष अवधारणाएं, और (3) उन अवधारणाओं का विशेष कार्यान्वयन। इसलिए यह अध्ययन किया जाना बाकी था कि क्या एक कुशल माइक्रोकर्नेल बनाने का समाधान, पिछले प्रयासों के विपरीत, सही निर्माण तकनीकों को लागू करना था।[38]
दूसरे छोर पर, पदानुक्रमित सुरक्षा डोमेन वास्तुकला जो एक मोनोलिथिक कर्नेल के प्रारुप की ओर ले जाती है[33]हर बार सुरक्षा के विभिन्न स्तरों के बीच एक परस्पर क्रिया होने पर एक महत्वपूर्ण प्रदर्शन दोष होता है (यानी, जब किसी प्रक्रिया को उपयोगकर्ता विधा और पर्यवेक्षक विधा दोनों में डेटा संरचना में हेरफेर करना पड़ता है), क्योंकि इसके लिए कॉल-टू-मूल्य से संदेश प्रतिलिपि करने की आवश्यकता होती है।[40]
हाइब्रिड(या मॉड्यूलर) कर्नेल
माइक्रोसॉफ्ट विंडोज NT 3.1, NT 3.5, NT 3.51, NT 4.0, 2000, एक्स पी (XP), विस्ता(Vista), 7, 8, 8.1 और 10 जैसे अधिकांश व्यावसायिक ऑपरेटिंग सिस्टम में संकरित(हाइब्रिड) कर्नेल का उपयोग किया जाता है। एप्पल आई एन सी(Apple Inc) का अपना मैक ओएस (macOS) एक्स एन यू(XNU) नामक एक संकरित कर्नेल का उपयोग करता है। ओ एस एफ/1(OSF/1) के मच कर्नेल (OSFMK 7.3) के कोड पर आधारित है[41] और फ्री बी एस डी(FreeBSD) का मोनोलिथिक कर्नेल होता है। वे प्रदर्शन बढ़ाने के लिए कर्नेल-स्थल में कुछ अतिरिक्त कोड को छोड़कर, माइक्रो कर्नेल के समान हैं। ये कर्नेल एक समझौते का प्रतिनिधित्व करते हैं जिसे कुछ विकासक द्वारा मोनोलिथिक और माइक्रो कर्नेल दोनों के प्रमुख लाभों को समायोजित करने के लिए लागू किया गया था। इस प्रकार की कर्नेल मोनोलिथिक कर्नेल के कुछ गुणों के साथ सूक्ष्म कर्नेल के विस्तार हैं। मोनोलिथिक कर्नेल के विपरीत, इस प्रकार के कर्नेल अपने आप कार्यावधि पर इकाई संगृहीत करने में असमर्थ हैं। संकरित कर्नेल सूक्ष्म कर्नेल होते हैं जिनमें कर्नेल-स्थल में कुछ गैर-आवश्यक कोड होते हैं ताकि कोड उपयोगकर्ता-स्थान में होने की तुलना में अधिक तेज़ी से चल सके। संकरित कर्नेलमोनोलिथिक और माइक्रोकर्नेल प्रारुप के बीच एक समझौता है। इसका तात्पर्य पारंपरिक माइक्रोकर्नेल के प्रदर्शन उपरिव्यय को कम करने के लिए कर्नेल स्थल में कुछ सेवाओं (जैसे प्रसार का ढेर या फाइल सिस्टम) को चलाने से है, लेकिन फिर भी यूजर स्थल में परिवेषक के रूप में कर्नेल कोड (जैसे उपकरण ड्राइवर) चल रहा है।
कई पारंपरिक रूप से मोनोलिथिक कर्नेल अब कम से कम इकाई क्षमता को जोड़ रहे हैं (या अन्य उपयोग कर रहे हैं)। इन कर्नेल में सबसे प्रसिद्ध लिनक्स कर्नेल है। प्रमापीय कर्नेल में अनिवार्य रूप से इसके कुछ हिस्से हो सकते हैं जो अंतर्भाग कर्नेल युग्मक या बायनेरिज़ में निर्मित होते हैं जो मांग पर स्मृति में संगृहीत होते हैं। यह नोट करना महत्वपूर्ण है कि कोड दूषित इकाई में चल रहे कर्नेल को अस्थिर करने की क्षमता है। माइक्रो कर्नेल की चर्चा करते समय बहुत से लोग इस बिंदु पर भ्रमित हो जाते हैं। पूरी तरह से अलग स्मृति स्थल में एक माइक्रोकर्नल के लिए ड्राइवर लिखना और लाइव होने से पहले इसका परीक्षण करना संभव है। जब एक कर्नेल इकाई संगृहीत किया जाता है, तो यह मोनोलिथिक भाग की स्मृति स्थल को इसमें जोड़कर एक्सेस करता है, जिससे इसकी आवश्यकता होती है, इसलिए संभावित प्रदूषण के द्वार खुलते हैं। प्रमापीय(या) संकरित कर्नेल के कुछ फायदे हैं:
- ड्राइवरों के लिए तेज़ विकास का समय जो इकाई के भीतर से काम कर सकते हैं। परीक्षण के लिए किसी पुनःप्रारंभ की आवश्यकता नहीं है(बशर्ते कर्नेल अस्थिर न हो)।
- मांग क्षमता बनाम नए ड्राइवर या सबसिस्टम जैसी चीजों के लिए पूरे कर्नेल को फिर से कंपाइल करने में समय बिताना।
- तृतीय पक्ष प्रौद्योगिकी का तेज़ एकीकरण (विकास से संबंधित लेकिन फिर भी स्वयं के लिए प्रासंगिक)।
इकाई, प्रायः, किसी प्रकार के इकाई अंतरापृष्ठ का उपयोग करके कर्नेल के साथ संवाद करते हैं। अंतरापृष्ठ सामान्यीकृत है (हालांकि किसी दिए गए ऑपरेटिंग सिस्टम के लिए विशेष रूप से) इसलिए इकाई का उपयोग करना हमेशा संभव नहीं होता है। इकाई अंतरापृष्ठ की तुलना में सामान्यतः उपकरण ड्राइवरों को अधिक लचीलेपन की आवश्यकता हो सकती है। अनिवार्य रूप से, यह दो सिस्टम कॉल है और सामान्यतः सुरक्षा जांच जो कि मोनोलिथिक कर्नेल में केवल एक बार की जानी है, अब दो बार की जा सकती है। प्रमापीय दृष्टिकोण के कुछ नुकसान हैं:
- अधिक अंतरापृष्ठ से गुजरने के साथ, त्रुटियों बढ़ने की संभावना मौजूद है (जिसका अर्थ है अधिक सुरक्षा छेद)।
- प्रतीक अंतर जैसी समस्याओं से निपटने के दौरान इकाई बनाए रखना कुछ प्रशासकों के लिए भ्रमित करने वाला हो सकता है।
नैनोकर्नेल
एक नैनोकर्नेल वस्तुतः सभी सेवाओं का प्रतिनिधित्व करता है – प्रोग्राम करने प्रोग्रामेबल इंटरप्ट कंट्रोलर या घड़ी जैसे सबसे बुनियादी भी सम्मिलित हैं – उपकरण ड्राइवरों के लिए कर्नेल स्मृति आवश्यकता को पारंपरिक माइक्रोकर्नेल से भी छोटा बनाने के लिए होता है।[42]
एक्सोकर्नेल
ऑपरेटिंग सिस्टम प्रारुप के लिए एक्सोकर्नेल अभी भी प्रायोगिक दृष्टिकोण हैं। वे कच्चे हार्डवेयर की सुरक्षा और बहुसंकेतन के लिए अपनी कार्यक्षमता को सीमित करने में अन्य प्रकार के कर्नेल से भिन्न होते हैं, जिससे अनुप्रयोगों को विकसित करने के लिए कोई हार्डवेयर सार नहीं मिलता है। हार्डवेयर प्रबंधन से हार्डवेयर सुरक्षा का यह पृथक्करण एप्लिकेशन विकासक को यह निर्धारित करने में सक्षम बनाता है कि प्रत्येक विशिष्ट प्रोग्राम के लिए उपलब्ध हार्डवेयर का सबसे कुशल उपयोग कैसे किया जाए।
एक्सोकर्नल्स अपने आप में बहुत छोटे होते हैं। हालांकि, उनके साथ लाइब्रेरी ऑपरेटिंग सिस्टम (यूनिकर्नेल(unikernel) भी देखें) होते हैं, जो एक पारंपरिक ऑपरेटिंग सिस्टम की कार्यात्मकताओं के साथ एप्लिकेशन विकासक प्रदान करते हैं। यह प्रत्येक उपयोगकर्ता के लिए नीचे आता है जो अपने स्वयं के शेष कर्नेल को खींचकर लिखता है, जो एक बहुत ही जोखिम भरा, जटिल और काफी चुनौतीपूर्ण काम है - विशेष रूप से समय-बाधित उत्पादन-उन्मुख वातावरण में, यही कारण है कि एक्सोकर्नल्स ने कभी पकड़ में नहीं आए।[citation needed] एक्सोकर्नेल-आधारित सिस्टम का एक प्रमुख लाभ यह है कि वे कई लाइब्रेरी ऑपरेटिंग सिस्टम को सम्मिलित कर सकते हैं, प्रत्येक एक अलगएपीआई निर्यात करता है, उदाहरण के लिए एक उच्च स्तरीय प्रयोक्ता अंतरापृष्ठ विकास के लिए और रीयल-टाइम नियंत्रण के लिए निर्यात करता है।
मल्टी कर्नेल
एक मल्टीकर्नेल ऑपरेटिंग सिस्टम एक मल्टी-अंतर्भाग प्रोसेसर है| मल्टी-अंतर्भाग मशीन को स्वतंत्र अंतर्भाग के नेटवर्क के रूप में मानता है, जैसे कि यह एक वितरित सिस्टम हो। यह साझा स्मृति नहीं मानता बल्कि संदेश देना के रूप में अंतर-प्रक्रिया संचार लागू करता है।[43][44] बैरलफिश पहला ऑपरेटिंग सिस्टम था जिसे मल्टीकर्नेल के रूप में वर्णित किया गया था।
कर्नेल विकास का इतिहास
प्रारंभिक ऑपरेटिंग सिस्टम कर्नेल
कड़ाई से बता रहे हैं , एक कंप्यूटर चलाने के लिए एक ऑपरेटिंग सिस्टम (और इस प्रकार, एक कर्नेल) की आवश्यकता नहीं होती है। प्रोग्राम को सीधे "नंगे धातु" मशीन पर संगृहीत और निष्पादित किया जा सकता है, बशर्ते कि उन प्रोग्राम के लेखक बिना किसी हार्डवेयर अमूर्तता या ऑपरेटिंग सिस्टम समर्थन के काम करने के इच्छुक हों। अधिकांश शुरुआती कंप्यूटर 1950 और 1960 के दशक के दौरान इस तरह से संचालित होते थे, जिन्हें विभिन्न कार्यक्रमों के निष्पादन के बीच पुनर्नियोजन(रीसेट) और पुनः संगृहीत किया गया था। आखिरकार, छोटे सहायक प्रोग्राम जैसे प्रोग्राम लोडर और दोषमार्जक ने प्रवाह के बीच स्मृति में छोड़ दिया गया, या रीड ऑनली मैमोरी(ROM) से संगृहीत किया गया। जैसा कि इन्हें विकसित किया गया था, उन्होंने प्रारंभिक ऑपरेटिंग सिस्टम कर्नेल बनने का आधार बनाया। कुछ विडियो गेम कंसोल और सन्निहित सिस्टम पर आज भी "नंगे धातु " के दृष्टिकोण का उपयोग किया जाता है,[45] लेकिन सामान्य तौर पर, नए कंप्यूटर आधुनिक ऑपरेटिंग सिस्टम और कर्नेल का उपयोग करते हैं।
1969 में, आरसी 4000 मल्टीप्रोग्रामिंग सिस्टम ने एक छोटे नाभिक के सिस्टम प्रारुप दर्शन को पेश किया, जिस पर विभिन्न उद्देश्यों के लिए ऑपरेटिंग सिस्टम को एक व्यवस्थित तरीके से बनाया जा सकता था,[46] जिसे माइक्रोकर्नेल दृष्टिकोण कहा जाएगा।
समय-सहभाजन(टाइम-शेयरिंग) ऑपरेटिंग सिस्टम
यूनिक्स से पहले के दशक में, कंप्यूटरों की शक्ति में अत्यधिक वृद्धि हुई थी – उस बिंदु तक जहां कंप्यूटर संचालक लोगों को अपनी मशीनों पर अपने खाली समय का उपयोग करने के लिए नए तरीकों की तलाश कर रहे थे। इस युग के दौरान प्रमुख विकासों में से एक समय-साझाकरण था, जिससे कई उपयोगकर्ताओं को कंप्यूटर समय के छोटे टुकड़े प्राप्त होंगे, जिस दर पर ऐसा प्रतीत होता था कि वे प्रत्येक अपने स्वयं के, धीमे, मशीन से जुड़े हुए थे।[47]
समय-सहभाजन सिस्टम के विकास ने कई समस्याओं को जन्म दिया। एक यह था कि उपयोगकर्ता, विशेष रूप से उन विश्वविद्यालयों में जहां सिस्टम विकसित किए जा रहे थे, अधिक सेंट्रल प्रोसेसिंग यूनिट समय प्राप्त करने के लिए सिस्टम को हैक करना चाहते थे। इस कारण से, कंप्यूटर सुरक्षा और अभिगम नियंत्रण 1965 में मॉलटिक्स योजना का एक प्रमुख केंद्रबिन्दु बन गया।[48] एक और चल रहा मुद्दा कंप्यूटिंग संसाधनों को ठीक से संभाल रहा था: उपयोगकर्ताओं ने अपना अधिकांश समय टर्मिनल पर घूरने और यह सोचने में बिताया कि वास्तव में कंप्यूटर के संसाधनों का उपयोग करने के बजाय क्या इनपुट करना है, और एक समय-साझाकरण प्रणाली को एक सक्रिय उपयोगकर्ता को सीपीयू समय देना चाहिए। इन अवधियों के दौरान, अंत में, सिस्टम ने प्रायः एक स्मृति पदानुक्रम की पेशकश की जिसमें कई परतें गहरी थीं, और इस महंगे संसाधन को विभाजित करने से कल्पित स्मृति सिस्टम में बड़े विकास हुए।
अमिगा
कमोडोर इंटरनेशनल अमिगा को 1985 में रिलीज़ किया गया था, और उन्नत कर्नेल संरचना की सुविधा देने वाले पहले - और निश्चित रूप से सबसे सफल - घरेलू कंप्यूटरों में से एक था। अमिगा ओ एस(AmigaOS) कर्नेल का कार्यकारी घटक, ईएक्सईसी.लाइब्रेरी(exec.library), एक माइक्रोकर्नेल संदेश-पासिंग प्रारुप का उपयोग करता है, लेकिन ग्राफिक्स.लाइब्रेरी जैसे अन्य कर्नेल घटक हैं, जिनकी हार्डवेयर तक सीधी पहुँच होती है। कोई स्मृति सुरक्षा नहीं है, और कर्नेल लगभग हमेशा उपयोगकर्ता विधा में चल रहा है। कर्नेल विधा में केवल विशेष क्रियाएं निष्पादित की जाती हैं, और उपयोगकर्ता- विधा एप्लिकेशन ऑपरेटिंग सिस्टम को कर्नेल विधा में अपने कोड को निष्पादित करने के लिए कह सकते हैं।
यूनिक्स
यूनिक्स के प्रारुपचरण के दौरान, प्रोग्रामर ने प्रत्येक उच्च-स्तरीय उपकरण दस्तावेज़ को नमूना लेने निर्णय लिया, क्योंकि उनका मानना था कि गणना का उद्देश्य डेटा रूपांतरण था।[49]
उदाहरण के लिए, प्रिंटर (कंप्यूटिंग) को एक ज्ञात स्थान पर दस्तावेज़ के रूप में दर्शाया गया था – जब डेटा को दस्तावेज़ में नक़ल किया गया था, तो वह प्रतिलिपि हो गया। अन्य प्रणालियाँ, समान कार्यक्षमता प्रदान करने के लिए, निचले स्तर पर उपकरणों को कल्पित करने के लिए प्रवृत्त होती हैं – अर्थात्, उपकरण और दस्तावेज़ दोनों कुछ संगृहीत करने योग्य कर्नेल इकाई अवधारणा के उदाहरण होंगे। दस्तावेज़ स्तर पर सिस्टम को कल्पित करने से उपयोगकर्ताओं को अपने मौजूदा दस्तावेज़ प्रबंधन उपयोगिताओं और अवधारणाओं का उपयोग करके पूरे सिस्टम में हेरफेर करने की अनुमति मिली, नाटकीय रूप से संचालन को सरल बना दिया। उसी प्रतिमान के विस्तार के रूप में, यूनिक्स प्रोग्रामर्स को यूनिक्स की अवधारणा का उपयोग करते हुए, छोटे कार्यक्रमों की एक श्रृंखला का उपयोग करके दस्तावेज़ में हेरफेर करने की अनुमति देता है, जो उपयोगकर्ताओं को चरणों में संचालन पूरा करने की अनुमति देता है, एकल-उद्देश्य उपकरणों की एक श्रृंखला के माध्यम से एक दस्तावेज़ पर निवेश करता है। . हालांकि अंतिम परिणाम समान था, इस तरह से छोटे प्रोग्रामों का उपयोग करने से नाटकीय रूप से लचीलेपन में वृद्धि हुई और साथ ही विकास और उपयोग में आसानी हुई, जिससे उपयोगकर्ता श्रृंखला से प्रोग्राम को जोड़कर या हटाकर अपने कार्य प्रगति को संशोधित कर सके।
यूनिक्स मॉडल में, ऑपरेटिंग सिस्टम में दो भाग होते हैं: पहला, उपादेयता(यूटिलिटी) प्रोग्राम का विशाल संग्रह जो अधिकांश ऑपरेशन को संचालित करता है; दूसरा, कर्नेल जो प्रोग्राम चलाता है।[49]यूनिक्स के तहत, एक प्रोग्रामिंग दृष्टिकोण से, दोनों के बीच का अंतर काफी पतला है; कर्नेल एक प्रोग्राम है, जो पर्यवेक्षक विधा में चल रहा है,[lower-alpha 3] जो बाकी सिस्टम बनाने वाले छोटे उपयोगिता कार्यक्रमों के लिए प्रोग्राम लोडर और पर्यवेक्षक के रूप में कार्य करता है, और इन प्रोग्रामों के लिए लॉक (कंप्यूटर विज्ञान) और इनपुट/आउटपुट|I/O सेवाएं प्रदान करता है; इसके अलावा, कर्नेल ने उपयोक्ता स्थान में बिल्कुल भी हस्तक्षेप नहीं किया।
इन वर्षों में कंप्यूटिंग मॉडल बदल गया, और यूनिक्स का हर चीज का उपचार एक दस्तावेज़ या बाइट स्ट्रीम है जो अब पहले की तरह सार्वभौमिक रूप से लागू नहीं था। यद्यपि एक कंप्यूटर अवसानक को दस्तावेज़ या बाइट स्ट्रीम के रूप में माना जा सकता है, जिसे मुद्रित या पढ़ा जाता है, यह ग्राफिकल यूज़र इंटरफ़ेस के लिए सही नहीं लगता है। कंप्यूटर नेटवर्किंग ने एक और समस्या खड़ी कर दी। यहां तक कि अगर नेटवर्क संचार की तुलना दस्तावेज़ अभिगमन से की जा सकती है, तो निम्न-स्तरीय पैकेट-उन्मुख स्थापत्य कला डेटा के अलग-अलग हिस्सों से निपटता है, न कि पूरी दस्तावेज़ के साथ। जैसे-जैसे कंप्यूटर की क्षमता बढ़ती गई, यूनिक्स कोड के साथ तेजी से अव्यवस्थित होता गया। यह इसलिए भी है क्योंकि यूनिक्स कर्नेल की प्रतिरूपकता बड़े पैमाने पर मापनीय है।[50] जबकि कर्नेल में सत्तर और अस्सी के दशक में कोड की 100,000 स्रोत लाइनें हो सकती थीं, जी एन यू(GNU) जैसे आधुनिक यूनिक्स उत्तराधिकारियों के लिनक्स कर्नेल जैसे कर्नेल में 13 मिलियन से अधिक पंक्तियां हैं।[51]
आधुनिक यूनिक्स-डेरिवेटिव प्रायः इकाई-लोडिंग मोनोलिथिक कर्नेल पर आधारित होते हैं। इसके उदाहरण जीएनयू, आईबीएम एआईएक्स के कई लिनक्स वितरण में लिनक्स कर्नेल हैं, साथ ही फ्रीबीएसडी, ड्रैगनफ्लाईबीएसडी , ओपनबीएसडी , नेटबीएसडी और मैकओएस जैसे बर्कले सॉफ्टवेयर वितरण परिवर्त कर्नेल हैं। इन विकल्पों के अलावा, शौकिया विकासक एक सक्रिय ऑपरेटिंग सिस्टम का विकास को बनाए रखते हैं, जो स्व-लिखित अभिरुचि कर्नेल द्वारा आबाद किया जाता है, जो ज्यादातर लिनक्स(Linux), फ्री बी एस डी(FreeBSD), ड्रैगन फ्लाई बी एस डी(DragonflyBSD), ओपन बी एस डी(OpenBSD) या नेट बी एस डी (NetBSD) कर्नेल और/या उनके साथ संगत होने के साथ कई सुविधाएँ साझा करता है।[52]
क्लासिक मैक ओएस और मैक ओएस
एप्पल आई एन सी. (Apple Inc.) ने सबसे पहले 1984 में अपने मैकिनटोश(Macintosh) निजी कंप्यूटर के साथ बंडल करके अपना क्लासिक मैक ओएस(Mac OS) लॉन्च किया। एप्पल मैक ओएस 8.6(Apple Mac OS 8.6) में एक नैनोकर्नेल प्रारुप में चला गया। इसके विरुद्ध, आधुनिक मैक ओएस(macOS) (मूल रूप से मैक ओएस एक्स(Mac OS X) नाम दिया गया) डार्विन (ऑपरेटिंग सिस्टम) पर आधारित है, जो एक्स एन यू(XNU) नामक संकरित कर्नेल का उपयोग करता है, जिसे बी एस डी(BSD#4;SD|4.3BSD) कर्नेल और मच (कर्नेल) के संयोजन से बनाया गया था।).[53]
माइक्रोसॉफ्ट विंडोज
माइक्रोसॉफ्ट विंडोज(Microsoft विंडोज) को पहली बार 1985 में एम एस- डी ओ एस(MS-DOS) के बढोत्तरी के रूप में रिलीज़ किया गया था। अन्य ऑपरेटिंग सिस्टम पर इसकी निर्भरता के कारण, विंडोज 95 से पहले विंडोज़ मी शुरुआती प्रकाशन को एक प्रचालन वातावरण माना जाता था (ऑपरेटिंग सिस्टम के साथ भ्रमित नहीं होना चाहिए)। यह उत्पाद लाइन 1980 और 1990 के दशक के दौरान विकसित होती रही, जिसमें विंडोज 9x श्रृंखला में 32-बिट एड्रेसिंग और प्री-एम्प्टिव मल्टीटास्किंग सम्मिलित थी; लेकिन 2000 में विंडोज मी की रिलीज के साथ समाप्त हो गया।
माइक्रोसॉफ्ट(Microsoft) ने विंडोज एन टी (विंडोज NT) भी विकसित किया, एक बहुत ही समान अंतरापृष्ठ वाला एक ऑपरेटिंग सिस्टम, लेकिन उच्च-अंत और व्यावसायिक उपयोगकर्ताओं के लिए अभिप्रेत है। यह लाइन 1993 में विंडोज एनटी 3.1 की विमोचन के साथ शुरू हुई थी, और अक्टूबर 2001 में विन्डोज़ एक्सपी की रिलीज के साथ सामान्य उपयोगकर्ताओं के लिए पेश की गई थी। विंडोज 9एक्स को पूरी तरह से अलग, अधिक परिष्कृत ऑपरेटिंग सिस्टम के साथ बदल दिया गया। मेरे पास विंडोज़ थी - यह वह लाइन है जो विंडोज़ 11 के साथ जारी रहती है।
विंडोज एनटी के कर्नेल की वास्तुकला को एक संकरित कर्नेल माना जाता है क्योंकि कर्नेल में क्लाइंट/परिवेषक स्तरित उपतंत्र प्रतिरूप के साथ विंडो प्रबंधकऔर आईपीसी प्रबंधक जैसे कार्य होते हैं।[54] इसे संशोधित माइक्रोकर्नेल के रूप में प्रारुप किया गया था, क्योंकि विंडोज एनटी कर्नेल मच (कर्नेल) से प्रभावित था, लेकिन शुद्ध माइक्रोकर्नेल के सभी मानदंडों को पूरा नहीं करता है।
आईबीएम पर्यवेक्षक
पर्यवेक्षी प्रोग्राम या पर्यवेक्षक एक कंप्यूटर प्रोग्राम है, जो प्रायः एक ऑपरेटिंग सिस्टम का हिस्सा होता है, जो अन्य सामान्य कार्यों के निष्पादन को नियंत्रित करता है और निर्धारण (कंप्यूटिंग) , इनपुट/आउटपुट संचालन, अपवाद से निपटने और इसी तरह के कार्यों को नियंत्रित करता है और प्रसंस्करण प्रणाली डेटा में काम के प्रवाह को नियंत्रित करता है।
ऐतिहासिक रूप से, यह शब्द अनिवार्य रूप से आईबीएम के मेनफ़्रेम कंप्यूटर ऑपरेटिंग सिस्टम की लाइन से जुड़ा था जो ओएस/360(OS/360) से शुरू हुआ था। अन्य ऑपरेटिंग सिस्टम में, पर्यवेक्षक को प्रायः कर्नेल कहा जाता है।
1970 के दशक में, आईबीएम ने हार्डवेयर से पर्यवेक्षक स्थिति(कंप्यूटर साइंस) को और सार कर दिया, जिसके परिणामस्वरूप एकहाइपरविजर बना जो पूर्ण वर्चुअलाइजेशन को सक्षम करता है, यानी एक ही मशीन पर एक दूसरे से पूरी तरह से स्वतंत्र रूप से कई ऑपरेटिंग सिस्टम चलाने की क्षमता। इसलिए इस तरह के पहले सिस्टम को कल्पित मशीन यावीएम (ऑपरेटिंग सिस्टम) कहा गया।
माइक्रो कर्नेल का विकास
हालांकि मैक (कर्नेल), कार्नेगी मेलन विश्वविद्यालय मेंरिचर्ड राशिद द्वारा विकसित, सबसे प्रसिद्ध सामान्य-उद्देश्य वाला माइक्रोकर्नेल है, अन्य माइक्रोकर्नेल अधिक विशिष्ट उद्देश्यों के साथ विकसित किए गए हैं। L4 माइक्रोकर्नेल परिवार (मुख्य रूप से L3 और L4 कर्नेल) को यह प्रदर्शित करने के लिए बनाया गया था कि माइक्रोकर्नेल आवश्यक रूप से धीमे नहीं हैं।[55] फियास्को Fiasco (L4 क्लोन) और पिस्ता (L4 क्लोन) जैसे नए कार्यान्वयन अलग-अलग संबोधित स्थल में अन्य L4 प्रक्रियाओं के बगल में Linux चलाने में सक्षम हैं।[56][57]
इसके अतिरिक्त, क्यूएनएक्स एक माइक्रोकर्नेल है जो मुख्य रूप से सन्निहित सिस्टम में उपयोग किया जाता है,[58] और खुला स्रोत सॉफ्टवेयर मिनिक्स(MINIX), जबकि मूल रूप से शैक्षिक उद्देश्यों के लिए बनाया गया था, अब एक उच्च उपलब्धता और स्व-उपचार (कंप्यूटर विज्ञान)|स्व-चिकित्सा माइक्रोकर्नेल ओएस होने पर केंद्रित है।
यह भी देखें
- ऑपरेटिंग सिस्टम कर्नेलकी तुलना
- अंतःप्रक्रम संचार
- ऑपरेटिंग सिस्टम
- अप्रत्यक्ष स्मृति
टिप्पणियाँ
- ↑ It may depend on the Computer architecture
- ↑ Virtual addressing is most commonly achieved through a built-in memory management unit.
- ↑ The highest privilege level has various names throughout different architectures, such as supervisor mode, kernel mode, CPL0, DPL0, ring 0, etc. See Ring (computer security) for more information.
संदर्भ
- ↑ 1.0 1.1 "गुठली". Linfo. Bellevue Linux Users Group. Archived from the original on 8 December 2006. Retrieved 15 September 2016.
- ↑ Randal E. Bryant; David R. O’Hallaron (2016). कंप्यूटर सिस्टम: एक प्रोग्रामर का परिप्रेक्ष्य (Third ed.). Pearson. p. 17. ISBN 978-0134092669.
- ↑ cf. Daemon (computing)
- ↑ 4.0 4.1 Roch 2004
- ↑ 5.0 5.1 5.2 5.3 5.4 5.5 5.6 Wulf 1974 pp.337–345
- ↑ 6.0 6.1 Silberschatz 1991
- ↑ Tanenbaum, Andrew S. (2008). आधुनिक ऑपरेटिंग सिस्टम (3rd ed.). Prentice Hall. pp. 50–51. ISBN 978-0-13-600663-3.
. . . लगभग सभी सिस्टम कॉल [हैं] एक पुस्तकालय प्रक्रिया को कॉल करके C प्रोग्राम से मंगाई जाती हैं। . . पुस्तकालय प्रक्रिया। . . उपयोगकर्ता मोड से कर्नेल मोड में स्विच करने और निष्पादन शुरू करने के लिए TRAP निर्देश निष्पादित करता है। . .
- ↑ Denning 1976
- ↑ Swift 2005, p.29 quote: "isolation, resource control, decision verification (checking), and error recovery."
- ↑ Schroeder 72
- ↑ 11.0 11.1 Linden 76
- ↑ Eranian, Stephane; Mosberger, David (2002). "Virtual Memory in the IA-64 Linux Kernel". IA-64 Linux कर्नेल: डिज़ाइन और कार्यान्वयन. Prentice Hall PTR. ISBN 978-0-13-061014-0.
- ↑ Silberschatz & Galvin, Operating System Concepts, 4th ed, pp. 445 & 446
- ↑ Hoch, Charles; J. C. Browne (July 1980). "पीडीपी-11/45 पर क्षमताओं का कार्यान्वयन". ACM SIGOPS Operating Systems Review. 14 (3): 22–32. doi:10.1145/850697.850701. S2CID 17487360.
- ↑ 15.0 15.1 Schneider F., Morrissett G. (Cornell University) and Harper R. (Carnegie Mellon University). "सुरक्षा के लिए एक भाषा-आधारित दृष्टिकोण" (PDF). Archived (PDF) from the original on 2018-12-22.
{{cite web}}
: CS1 maint: uses authors parameter (link) - ↑ 16.0 16.1 16.2 Loscocco, P. A.; Smalley, S. D.; Muckelbauer, P. A.; Taylor, R. C.; Turner, S. J.; Farrell, J. F. (October 1998). "विफलता की अनिवार्यता: आधुनिक कंप्यूटिंग वातावरण में सुरक्षा की त्रुटिपूर्ण धारणा". Proceedings of the 21st National Information Systems Security Conference. pp. 303–314. Archived from the original on 2007-06-21.
- ↑ Lepreau, Jay; Ford, Bryan; Hibler, Mike (1996). "The persistent relevance of the local operating system to global applications". विश्वव्यापी अनुप्रयोगों के लिए ACM SIGOPS यूरोपियन वर्कशॉप सिस्टम्स सपोर्ट पर 7वीं कार्यशाला की कार्यवाही - EW 7. p. 133. doi:10.1145/504450.504477. S2CID 10027108.
- ↑ Anderson, J. (October 1972). कंप्यूटर सुरक्षा प्रौद्योगिकी योजना अध्ययन (PDF) (Report). Vol. II. Air Force Electronic Systems Division. ESD-TR-73-51, Vol. II. Archived (PDF) from the original on 2011-07-21.
- ↑ Jerry H. Saltzer; Mike D. Schroeder (September 1975). "कंप्यूटर सिस्टम में सूचना का संरक्षण". Proceedings of the IEEE. 63 (9): 1278–1308. CiteSeerX 10.1.1.126.9257. doi:10.1109/PROC.1975.9939. S2CID 269166. Archived from the original on 2021-03-08. Retrieved 2007-07-15.
- ↑ "महीन दाने वाली गिरी का अलगाव". mars-research.github.io (in English). Retrieved 15 September 2022.
- ↑ Fetzer, Mary. "ऑटोमैटिक डिवाइस ड्राइवर आइसोलेशन ऑपरेटिंग सिस्टम में बग्स से बचाता है". Pennsylvania State University via techxplore.com (in English). Retrieved 15 September 2022.
- ↑ Huang, Yongzhe; Narayanan, Vikram; Detweiler, David; Huang, Kaiming; Tan, Gang; Jaeger, Trent; Burtsev, Anton (2022). "KSplit: स्वचालित डिवाइस ड्राइवर अलगाव" (PDF). Retrieved 15 September 2022.
- ↑ Jonathan S. Shapiro; Jonathan M. Smith; David J. Farber (1999). "EROS: a fast capability system". Proceedings of the Seventeenth ACM Symposium on Operating Systems Principles. 33 (5): 170–185. doi:10.1145/319344.319163.
- ↑ Dijkstra, E. W. Cooperating Sequential Processes. Math. Dep., Technological U., Eindhoven, Sept. 1965.
- ↑ 25.0 25.1 25.2 25.3 25.4 Brinch Hansen 70 pp.238–241
- ↑ Harrison, M. C.; Schwartz, J. T. (1967). "शेयरर, सीडीसी 6600 के लिए एक टाइम शेयरिंग सिस्टम". Communications of the ACM. 10 (10): 659–665. doi:10.1145/363717.363778. S2CID 14550794. Retrieved 2007-01-07.
- ↑ Huxtable, D. H. R.; Warwick, M. T. (1967). गतिशील पर्यवेक्षक - उनका डिजाइन और निर्माण. pp. 11.1–11.17. doi:10.1145/800001.811675. ISBN 9781450373708. S2CID 17709902. Archived from the original on 2020-02-24. Retrieved 2007-01-07.
- ↑ Baiardi 1988
- ↑ 29.0 29.1 Levin 75
- ↑ Denning 1980
- ↑ Nehmer, Jürgen (1991). "ऑपरेटिंग सिस्टम की अमरता, या: क्या ऑपरेटिंग सिस्टम में अनुसंधान अभी भी उचित है?". Lecture Notes In Computer Science; Vol. 563. Proceedings of the International Workshop on Operating Systems of the 90s and Beyond. pp. 77–83. doi:10.1007/BFb0024528. ISBN 3-540-54987-0.
पिछले 25 वर्षों ने दिखाया है कि ऑपरेटिंग सिस्टम आर्किटेक्चर पर शोध का मौजूदा मुख्य धारा [sic] सिस्टम पर मामूली प्रभाव पड़ा है।
- ↑ Levy 84, p.1 quote: "Although the complexity of computer applications increases yearly, the underlying hardware architecture for applications has remained unchanged for decades."
- ↑ 33.0 33.1 33.2 Levy 84, p.1 quote: "Conventional architectures support a single privileged mode of operation. This structure leads to monolithic design; any module needing protection must be part of the single operating system kernel. If, instead, any module could execute within a protected domain, systems could be built as a collection of independent modules extensible by any user."
- ↑ "ओपन सोर्स: वॉयस फ्रॉम द ओपन सोर्स रेवोल्यूशन". 1-56592-582-3. 29 March 1999. Archived from the original on 1 February 2020. Retrieved 24 March 2019.
- ↑ Recordings of the debate between Torvalds and Tanenbaum can be found at dina.dk Archived 2012-10-03 at the Wayback Machine, groups.google.com Archived 2013-05-26 at the Wayback Machine, oreilly.com Archived 2014-09-21 at the Wayback Machine and Andrew Tanenbaum's website Archived 2015-08-05 at the Wayback Machine
- ↑ 36.0 36.1 Matthew Russell. "What Is Darwin (and How It Powers Mac OS X)". O'Reilly Media. Archived from the original on 2007-12-08. Retrieved 2008-12-09.
The tightly coupled nature of a monolithic kernel allows it to make very efficient use of the underlying hardware [...] Microkernels, on the other hand, run a lot more of the core processes in userland. [...] Unfortunately, these benefits come at the cost of the microkernel having to pass a lot of information in and out of the kernel space through a process known as a context switch. Context switches introduce considerable overhead and therefore result in a performance penalty.
- ↑ "ऑपरेटिंग सिस्टम/कर्नेल मॉडल - विकिविश्वविद्यालय". en.wikiversity.org. Archived from the original on 2014-12-18. Retrieved 2014-12-18.
- ↑ 38.0 38.1 38.2 38.3 Liedtke 95
- ↑ Härtig 97
- ↑ Hansen 73, section 7.3 p.233 "interactions between different levels of protection require transmission of messages by value"
- ↑ Magee, Jim. डब्ल्यूडब्ल्यूडीसी 2000 सत्र 106 - मैक ओएस एक्स: कर्नेल. 14 minutes in. Archived from the original on 2021-10-30.
- ↑ "कीकोस नैनोकर्नेल आर्किटेक्चर". Archived from the original on 2011-06-21.
- ↑ Baumann et al., "The Multikernel: a new OS architecture for scalable multicore systems", to appear in 22nd Symposium on Operating Systems Principles (2009), http://research.microsoft.com/pubs/101903/paper.pdf
- ↑ The Barrelfish operating system, http://www.barrelfish.org/.
- ↑ Ball: Embedded Microprocessor Designs, p. 129
- ↑ Hansen 2001 (os), pp.17–18
- ↑ "C.ACM यूनिक्स पेपर का BSTJ संस्करण". bell-labs.com. Archived from the original on 2005-12-30. Retrieved 2006-08-17.
- ↑ Corbató, F. J.; Vissotsky, V. A. मल्टिक्स सिस्टम का परिचय और अवलोकन. 1965 Fall Joint Computer Conference. Archived from the original on 2011-07-09.
- ↑ 49.0 49.1 "एकल यूनिक्स विशिष्टता". The open group. Archived from the original on 2016-10-04. Retrieved 2016-09-29.
- ↑ "यूनिक्स का बदला". asymco.com. 29 September 2010. Archived from the original on 9 November 2010. Retrieved 2 October 2010.
- ↑ Wheeler, David A. (October 12, 2004). "Linux कर्नेल 2.6: यह अधिक मूल्य का है!".
- ↑ This community mostly gathers at Bona Fide OS Development Archived 2022-01-17 at the Wayback Machine, The Mega-Tokyo Message Board Archived 2022-01-25 at the Wayback Machine and other operating system enthusiast web sites.
- ↑ Singh, Amit (December 2003). "एक्सएनयू: कर्नेल". Archived from the original on 2011-08-12.
- ↑ "विंडोज - माइक्रोसॉफ्ट विंडोज 10 होम और प्रो ओएस, लैपटॉप, पीसी, टैबलेट और अधिक के लिए आधिकारिक साइट". windows.com. Archived from the original on 2011-08-20. Retrieved 2019-03-24.
- ↑ "L4 माइक्रोकर्नेल परिवार - सिंहावलोकन". os.inf.tu-dresden.de. Archived from the original on 2006-08-21. Retrieved 2006-08-11.
- ↑ "Fiasco माइक्रोकर्नेल - सिंहावलोकन". os.inf.tu-dresden.de. Archived from the original on 2006-06-16. Retrieved 2006-07-10.
- ↑ Zoller (inaktiv), Heinz (7 December 2013). "L4Ka - L4Ka प्रोजेक्ट". www.l4ka.org. Archived from the original on 19 April 2001. Retrieved 24 March 2019.
- ↑ "क्यूएनएक्स ऑपरेटिंग सिस्टम". blackberry.qnx.com. Archived from the original on 2019-03-24. Retrieved 2019-03-24.
स्रोत
- Roch, Benjamin (2004). "मोनोलिथिक कर्नेल बनाम माइक्रोकर्नेल" (PDF). Archived from the original (PDF) on 2006-11-01. Retrieved 2006-10-12.
- Silberschatz, Abraham; James L. Peterson; Peter B. Galvin (1991). ऑपरेटिंग सिस्टम की अवधारणाएँ. Boston, Massachusetts: Addison-Wesley. p. 696. ISBN 978-0-201-51379-0.
- Ball, Stuart R. (2002) [2002]. एंबेडेड माइक्रोप्रोसेसर सिस्टम: रियल वर्ल्ड डिजाइन (first ed.). Elsevier Science. ISBN 978-0-7506-7534-5.
- Deitel, Harvey M. (1984) [1982]. ऑपरेटिंग सिस्टम के लिए एक परिचय (revisited first ed.). Addison-Wesley. p. 673. ISBN 978-0-201-14502-1.
- Denning, Peter J. (December 1976). "दोष सहिष्णु ऑपरेटिंग सिस्टम". ACM Computing Surveys. 8 (4): 359–389. doi:10.1145/356678.356680. ISSN 0360-0300. S2CID 207736773.
- Denning, Peter J. (April 1980). "कंप्यूटर आर्किटेक्चर में इनोवेशन क्यों नहीं?". ACM SIGARCH Computer Architecture News. 8 (2): 4–7. doi:10.1145/859504.859506. ISSN 0163-5964. S2CID 14065743.
- Hansen, Per Brinch (April 1970). "मल्टीप्रोग्रामिंग सिस्टम का न्यूक्लियस". Communications of the ACM. 13 (4): 238–241. CiteSeerX 10.1.1.105.4204. doi:10.1145/362258.362278. ISSN 0001-0782. S2CID 9414037.
- Hansen, Per Brinch (1973). ऑपरेटिंग सिस्टम सिद्धांत. Englewood Cliffs: Prentice Hall. p. 496. ISBN 978-0-13-637843-3.
- Hansen, Per Brinch (2001). "The evolution of operating systems" (PDF). Archived (PDF) from the original on 2011-07-25. Retrieved 2006-10-24. किताब में शामिल: Per Brinch Hansen, ed. (2001). "1 The evolution of operating systems". Classic operating systems: from batch processing to distributed systems. New York: Springer-Verlag. pp. 1–36. ISBN 978-0-387-95113-3.
- Härtig, Hermann; Hohmuth, Michael; Liedtke, Jochen; Schönberg, Sebastian; Wolter, Jean (October 5–8, 1997). "μ-कर्नेल-आधारित सिस्टम का प्रदर्शन". Proceedings of the sixteenth ACM symposium on Operating systems principles - SOSP '97. 16th ACM Symposium on Operating Systems Principles (SOSP'97). Saint-Malo, France. doi:10.1145/268998.266660. ISBN 978-0897919166. S2CID 1706253. Archived from the original on 2020-02-17.
{{cite conference}}
: CS1 maint: date format (link), Härtig, Hermann; Hohmuth, Michael; Liedtke, Jochen; Schönberg, Sebastian (December 1997). "μ-कर्नेल-आधारित सिस्टम का प्रदर्शन". ACM SIGOPS Operating Systems Review. 31 (5): 66–77. doi:10.1145/269005.266660. * Houdek, M. E.; Soltis, F. G.; Hoffman, R. L. (1981). "क्षमता-आधारित एड्रेसिंग के लिए IBM सिस्टम/38 समर्थन". Proceedings of the 8th ACM International Symposium on Computer Architecture. ACM/IEEE. pp. 341–348. - IA-32 आर्किटेक्चर सॉफ्टवेयर डेवलपर मैनुअल, वॉल्यूम 1: बेसिक आर्किटेक्चर (PDF). Intel Corporation. 2002.
- Levin, R.; Cohen, E.; Corwin, W.; Pollack, F.; Wulf, William (1975). "हाइड्रा में नीति/तंत्र पृथक्करण". ACM Symposium on Operating Systems Principles / Proceedings of the Fifth ACM Symposium on Operating Systems Principles. 9 (5): 132–140. doi:10.1145/1067629.806531.
- Levy, Henry M. (1984). क्षमता आधारित कंप्यूटर सिस्टम. Maynard, Mass: Digital Press. ISBN 978-0-932376-22-0. Archived from the original on 2007-07-13. Retrieved 2007-07-18.
- Liedtke, Jochen (December 1995). "µ-कर्नेल निर्माण पर". Proc. 15th ACM Symposium on Operating System Principles (SOSP). Archived from the original on 2007-03-13.
- Linden, Theodore A. (December 1976). "सुरक्षा और विश्वसनीय सॉफ़्टवेयर का समर्थन करने के लिए ऑपरेटिंग सिस्टम संरचनाएँ". ACM Computing Surveys. 8 (4): 409–445. doi:10.1145/356678.356682. hdl:2027/mdp.39015086560037. ISSN 0360-0300. S2CID 16720589., "सुरक्षा और विश्वसनीय सॉफ़्टवेयर का समर्थन करने के लिए ऑपरेटिंग सिस्टम संरचनाएँ" (PDF). Archived (PDF) from the original on 2010-05-28. Retrieved 2010-06-19.
- Lorin, Harold (1981). ऑपरेटिंग सिस्टम. Boston, Massachusetts: Addison-Wesley. pp. 161–186. ISBN 978-0-201-14464-2.
- Schroeder, Michael D.; Jerome H. Saltzer (March 1972). "सुरक्षा रिंगों को लागू करने के लिए एक हार्डवेयर आर्किटेक्चर". Communications of the ACM. 15 (3): 157–170. CiteSeerX 10.1.1.83.8304. doi:10.1145/361268.361275. ISSN 0001-0782. S2CID 14422402.
- Shaw, Alan C. (1974). ऑपरेटिंग सिस्टम का तार्किक डिजाइन. Prentice-Hall. p. 304. ISBN 978-0-13-540112-5.
- Tanenbaum, Andrew S. (1979). संरचित कंप्यूटर संगठन. Englewood Cliffs, New Jersey: Prentice-Hall. ISBN 978-0-13-148521-1.
- Wulf, W.; E. Cohen; W. Corwin; A. Jones; R. Levin; C. Pierson; F. Pollack (June 1974). "हाइड्रा: मल्टीप्रोसेसर ऑपरेटिंग सिस्टम का कर्नेल" (PDF). Communications of the ACM. 17 (6): 337–345. doi:10.1145/355616.364017. ISSN 0001-0782. S2CID 8011765. Archived from the original (PDF) on 2007-09-26. Retrieved 2007-07-18.
- Baiardi, F.; A. Tomasi; M. Vanneschi (1988). कम्प्यूटिंग सिस्टम आर्किटेक्चर, वॉल्यूम 1 (in italiano). Franco Angeli. ISBN 978-88-204-2746-7. Archived from the original on 2012-06-27. Retrieved 2006-10-10.
- Swift, Michael M.; Brian N. Bershad; Henry M. Levy. कमोडिटी ऑपरेटिंग सिस्टम की विश्वसनीयता में सुधार (PDF). Archived (PDF) from the original on 2007-07-19. Retrieved 2007-07-16.
- Gettys, James; Karlton, Philip L.; McGregor, Scott (1990). "एक्स विंडो सिस्टम, संस्करण 11". Software: Practice and Experience. 20: S35–S67. doi:10.1002/spe.4380201404. S2CID 26329062.
- Michael M. Swift; Brian N. Bershad; Henry M. Levy (February 2005). "Improving the reliability of commodity operating systems". ACM Transactions on Computer Systems. Association for Computing Machinery. 23 (1): 77–110. doi:10.1145/1047915.1047919. eISSN 1557-7333. ISSN 0734-2071. S2CID 208013080.
अग्रिम पठन
- Andrew S. Tanenbaum, Albert S. Woodhull, Operating Systems: Design and Implementation (Third edition);
- Andrew S. Tanenbaum, Herbert Bos, Modern Operating Systems (Fourth edition);
- Daniel P. Bovet, Marco Cesati, Understanding the Linux Kernel (Third edition);
- David A. Patterson, John L. Hennessy, Computer Organization and Design (Sixth edition), Morgan Kaufmann (ISBN 978-0-12-820109-1);
- B.S. Chalk, A.T. Carter, R.W. Hind, Computer Organisation and Architecture: An Introduction (Second edition), Palgrave Macmillan (ISBN 978-1-4039-0164-4).