कर्नेल (ऑपरेटिंग सिस्टम): Difference between revisions

From Vigyanwiki
(Text)
(Text)
Line 59: Line 59:
कंप्यूटिंग में, एक सिस्टम कॉल यह है कि कैसे एक प्रक्रिया एक ऑपरेटिंग सिस्टम के कर्नेल से एक सेवा का अनुरोध करती है जिसे चलाने की अनुमति सामान्य रूप से नहीं होती है। सिस्टम कॉल एक प्रक्रिया और ऑपरेटिंग सिस्टम के बीच अंतरापृष्ठ प्रदान करते हैं। सिस्टम के साथ पारस्परिक क्रिया करने वाले अधिकांश संक्रियायों के लिए अनुमति की आवश्यकता होती है जो उपयोगकर्ता-स्तरीय प्रक्रिया के लिए उपलब्ध नहीं होती है, उदाहरण के लिए,इनपुट/आउटपुट सिस्टम पर मौजूद डिवाइस के साथ किया जाता है, या अन्य प्रक्रियाओं के साथ संचार के किसी भी रूप में सिस्टम कॉल के उपयोग की आवश्यकता होती है।
कंप्यूटिंग में, एक सिस्टम कॉल यह है कि कैसे एक प्रक्रिया एक ऑपरेटिंग सिस्टम के कर्नेल से एक सेवा का अनुरोध करती है जिसे चलाने की अनुमति सामान्य रूप से नहीं होती है। सिस्टम कॉल एक प्रक्रिया और ऑपरेटिंग सिस्टम के बीच अंतरापृष्ठ प्रदान करते हैं। सिस्टम के साथ पारस्परिक क्रिया करने वाले अधिकांश संक्रियायों के लिए अनुमति की आवश्यकता होती है जो उपयोगकर्ता-स्तरीय प्रक्रिया के लिए उपलब्ध नहीं होती है, उदाहरण के लिए,इनपुट/आउटपुट सिस्टम पर मौजूद डिवाइस के साथ किया जाता है, या अन्य प्रक्रियाओं के साथ संचार के किसी भी रूप में सिस्टम कॉल के उपयोग की आवश्यकता होती है।


एक सिस्टम कॉल एक तंत्र है जिसका उपयोग एप्लिकेशन प्रोग्राम द्वारा ऑपरेटिंग सिस्टम से सेवा का अनुरोध करने के लिए किया जाता है। वे एक [[ मशीन कोड |मशीन कोड]] | मशीन-कोड निर्देश का उपयोग करते हैं जो प्रोसेसर के तरीका(मोड) बदलने का कारण बनता है। एक उदाहरण, पर्यवेक्षक मोड से संरक्षित मोड में होगा। यह वह जगह है जहां ऑपरेटिंग सिस्टम हार्डवेयर डिवाइस या [[ स्मृति प्रबंधन इकाई | स्मृति प्रबंधन इकाई]] तक पहुंचने जैसी क्रियाएं करता है। प्रायः ऑपरेटिंग सिस्टम एक प्रोग्राम संग्रह प्रदान करता है जो ऑपरेटिंग सिस्टम और सामान्य उपयोगकर्ता प्रोग्राम के बीच होता है। '''प्रायः''' यह एक सी(प्रोग्रामिंग लैंग्वेज) है जैसे ग्लिबक([[ Glibc | Glibc)]] या विंडोज एपीआई(Windows API) की तरह होता है। प्रोग्राम संग्रह कर्नेल को जानकारी पास करने और पर्यवेक्षक मोड में स्विच करने के निम्न-स्तरीय विवरण को संभालता है। सिस्टम कॉल में बंद होना, खुलना, पढ़ना, इंतज़ार करना और लिखना(क्लोज, ओपन, रीड, वेट और राइट)सम्मिलित हैं।
एक सिस्टम कॉल एक तंत्र है जिसका उपयोग एप्लिकेशन प्रोग्राम द्वारा ऑपरेटिंग सिस्टम से सेवा का अनुरोध करने के लिए किया जाता है। वे एक [[ मशीन कोड |मशीन कोड]] | मशीन-कोड निर्देश का उपयोग करते हैं जो प्रोसेसर के तरीका(मोड) बदलने का कारण बनता है। एक उदाहरण, पर्यवेक्षक मोड से संरक्षित मोड में होगा। यह वह जगह है जहां ऑपरेटिंग सिस्टम हार्डवेयर डिवाइस या [[ स्मृति प्रबंधन इकाई | स्मृति प्रबंधन इकाई]] तक पहुंचने जैसी क्रियाएं करता है। प्रायः ऑपरेटिंग सिस्टम एक प्रोग्राम संग्रह प्रदान करता है जो ऑपरेटिंग सिस्टम और सामान्य उपयोगकर्ता प्रोग्राम के बीच होता है। प्रायः यह एक सी(प्रोग्रामिंग लैंग्वेज) है जैसे ग्लिबक([[ Glibc | Glibc)]] या विंडोज एपीआई(Windows 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>
Line 153: Line 153:
[[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}} और तथ्य यह है कि बड़े कर्नेल को बनाए रखना बहुत मुश्किल हो सकता है।
[[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) सिस्टम का पारंपरिक प्रारुप है। एक मोनोलिथिक कर्नेल एक एकल प्रोग्राम है जिसमें प्रत्येक कर्नेल से संबंधित कार्य करने के लिए आवश्यक सभी कोड होते हैं। प्रत्येक भाग जिसे अधिकांश प्रोग्रामों द्वारा प्रवेश किया जाना है, जिसे प्रोग्राम संग्रह में नहीं रखा जा सकता है, वह कर्नेल स्पेस में है: जैसे डिवाइस ड्राइवर, शेड्यूलर, मेमोरी हैंडलिंग, फाइल सिस्टम और नेटवर्क स्टैक। एप्लिकेशन को कई सिस्टम कॉल प्रदान किए जाते हैं, ताकि वे उन सभी क्रमव्यवस्थाओं तक पहुंच सकें। एक मोनोलिथिक कर्नेल, जबकि शुरू में उप-प्रणालियों के साथ लोड किया जा सकता है, जिसकी आवश्यकता नहीं हो सकती है, इसे उस बिंदु पर समायोजित किया जा सकता है जहां यह हार्डवेयर के लिए विशेष रूप से तैयार किए गए से बहुत '''तेज़ है,''' हालांकि सामान्य अर्थों में अधिक प्रासंगिक है। आधुनिक मोनोलिथिक कर्नेल, जैसे कि Linux_kernel (GNU ऑपरेटिंग सिस्टम के कर्नेल में से एक) और [[ FreeBSD ]] कर्नेल, जो दोनों यूनिक्स-जैसे ऑपरेटिंग सिस्टम की श्रेणी में आते हैं, रनटाइम पर मॉड्यूल लोड करने की क्षमता रखते हैं, जिससे आसान अनुमति मिलती है कर्नेल स्थान में चल रहे कोड की मात्रा को कम करने में मदद करते हुए, कर्नेल की क्षमताओं का आवश्यकतानुसार विस्तार। मोनोलिथिक कर्नेल में, कुछ लाभ इन बिंदुओं पर टिके होते हैं:
मोनोलिथिक कर्नेल, जो पारंपरिक रूप से यूनिक्स जैसे ऑपरेटिंग सिस्टम द्वारा उपयोग की जाती है, में सभी ऑपरेटिंग सिस्टम कोर फ़ंक्शंस और डिवाइस ड्राइवर होते हैं। यह यूनिक्स(UNIX) सिस्टम का पारंपरिक प्रारुप है। एक मोनोलिथिक कर्नेल एक एकल प्रोग्राम है जिसमें प्रत्येक कर्नेल से संबंधित कार्य करने के लिए आवश्यक सभी कोड होते हैं। प्रत्येक भाग जिसे अधिकांश प्रोग्रामों द्वारा प्रवेश किया जाना है, जिसे प्रोग्राम संग्रह में नहीं रखा जा सकता है, वह कर्नेल स्पेस में है: जैसे डिवाइस ड्राइवर, शेड्यूलर, मेमोरी हैंडलिंग, फाइल सिस्टम और नेटवर्क स्टैक। एप्लिकेशन को कई सिस्टम कॉल प्रदान किए जाते हैं, ताकि वे उन सभी क्रमव्यवस्थाओं तक पहुंच सकें। एक मोनोलिथिक कर्नेल, जबकि शुरू में उप-प्रणालियों के साथ लोड किया जा सकता है, जिसकी आवश्यकता नहीं हो सकती है, इसे उस बिंदु पर समायोजित किया जा सकता है जहां यह हार्डवेयर के लिए विशेष रूप से तैयार किए गए से बहुत तेज़ है, हालांकि सामान्य अर्थों में अधिक प्रासंगिक है। आधुनिक मोनोलिथिक कर्नेल, जैसे कि '''Linux_kernel (GNU''' ऑपरेटिंग सिस्टम के कर्नेल में से एक) और [[ FreeBSD ]] कर्नेल, जो दोनों यूनिक्स-जैसे ऑपरेटिंग सिस्टम की श्रेणी में आते हैं, रनटाइम पर मॉड्यूल लोड करने की क्षमता रखते हैं, जिससे आसान अनुमति मिलती है कर्नेल स्थान में चल रहे कोड की मात्रा को कम करने में मदद करते हुए, कर्नेल की क्षमताओं का आवश्यकतानुसार विस्तार। मोनोलिथिक कर्नेल में, कुछ लाभ इन बिंदुओं पर टिके होते हैं:


* चूंकि इसमें कम सॉफ्टवेयर सम्मिलितहै इसलिए यह तेज है।
* चूंकि इसमें कम सॉफ्टवेयर सम्मिलितहै इसलिए यह तेज है।

Revision as of 14:17, 21 December 2022

एक सरलीकरण जिसमें एक कर्नेल अनुप्रयोग प्रक्रिया सामग्री को कंप्यूटर के हार्डवेयर से जोड़ता है,

कर्नेल कंप्यूटर के ऑपरेटिंग सिस्टम के अंतर्भाग(कोर) में एककंप्यूटर प्रोग्राम है और प्रायः सिस्टम में हर चीज पर इसका पूरा नियंत्रण होता है।[1]यह ऑपरेटिंग सिस्टम कोड का वह भाग है जो हमेशा स्मृति(मेमोरी) में रहता है[2] और हार्डवेयर और सॉफ्टवेयर घटकों के बीच बातचीत की सुविधा प्रदान करता है। एक पूर्ण कर्नेल डिवाइस ड्राइवरों के माध्यम से सभी हार्डवेयर संसाधनों (जैसे इनपुट/आउटपुट , मेमोरी, क्रिप्टोग्राफी) को नियंत्रित करता है, ऐसे संसाधनों से संबंधित प्रक्रियाओं के बीच विरोध की मध्यस्थता करता है, और सामान्य संसाधनों के उपयोग को अनुकूलित करता है उदहारण: सीपीयू और कैशे उपयोग, फ़ाइल सिस्टम और नेटवर्क सॉकेट। अधिकांश प्रणालियों पर, कर्नेल (बूटलोडर के बाद) स्टार्टअप पर लोड किए गए पहले प्रोग्रामों में से एक है। यह बाकी स्टार्टअप के साथ-साथ मेमोरी, बाह्य उपकरणों, और सॉफ्टवेयर से इनपुट/आउटपुट अनुरोधों को संभालता है, और उन्हें सेंट्रल प्रोसेसिंग यूनिट के लिए डाटा प्रोसेसिंग निर्देशों में अनुवाद करता है।

कर्नेल का समीक्षात्मक कोड प्रायः मेमोरी के एक अलग क्षेत्र में लोड किया जाता है, जो एप्लिकेशन सॉफ़्टवेयर या ऑपरेटिंग सिस्टम के अन्य कम महत्वपूर्ण भागों द्वारा अभिगम से सुरक्षित होता है। कर्नेल इस संरक्षित कर्नेल स्थान में अपने कार्य करता है, जैसे कि प्रक्रियाएँ चलाना, हार्ड डिस्क जैसे हार्डवेयर उपकरणों का प्रबंधन करना और व्यवधानों को संभालना। इसके विपरीत, एप्लिकेशन प्रोग्राम जैसे कि ब्राउज़र, वर्ड प्रोसेसर, या ऑडियो या वीडियो प्लेयर मेमोरी, उपभोक्ता स्थान के एक अलग क्षेत्र का उपयोग करते हैं। यह अलगाव उपयोगकर्ता डेटा और कर्नेल डेटा को एक दूसरे के साथ हस्तक्षेप करने और अस्थिरता और धीमापन पैदा करने से रोकता है,[1] साथ ही खराब कार्य करने वाले अनुप्रयोगों को अन्य अनुप्रयोगों को प्रभावित करने या संपूर्ण ऑपरेटिंग सिस्टम को ख़राब करने से रोकता है। उन प्रणालियों में भी जहां कर्नेल को एप्लिकेशन पता स्थान (एड्रेस स्पेस)में सम्मिलितकिया गया है, अनधिकृत एप्लिकेशन को कर्नेल को संशोधित करने से रोकने के लिए मेमोरी सुरक्षा का उपयोग किया जाता है।

कर्नेल का अप्लिकेशन प्रोग्रामिंग अंतरफलक एक निम्न-स्तरीय अमूर्त परत है। जब कोई प्रक्रिया कर्नेल से एक कार्य का अनुरोध करती है, तो इसे प्रायः एक आवरण फलन(रैपर फ़ंक्शन) के माध्यम से सिस्टम कॉल का आह्वान करना चाहिए।

यहाँ विभिन्न कर्नेल शिल्प संरचनाएं हैं। मुख्य रूप से गति के लिए पर्यवेक्षक प्रणाली(मोड) में सीपीयू के निष्पादन के साथ मोनोलिथिक कर्नेल पूरी तरह से एक ही पता स्थान में चलते हैं। माइक्रोकर्नेल अपने अधिकांश कार्य लेकिन उनकी सभी सेवाएं नहीं, उपयोगकर्ता स्थान में चलाते हैं ,[3] जैसे उपयोगकर्ता प्रक्रियाएं करती हैं, मुख्य रूप से लचीलापन और मॉड्यूलर प्रोग्रामिंग के लिए उपयोगकर्ता प्रक्रियाओं की तरह चलाते हैं।[4] मिनी एक्स (MINIX 3) माइक्रोकर्नेल प्रारुप का एक उल्लेखनीय उदाहरण है। इसके बजाय, लिनक्स कर्नेल मोनोलिथिक है, हालांकि यह प्रतिरूपक भी है, क्योंकि यह रनटाइम पर लोड करने योग्य कर्नेल मॉड्यूल को सम्मिलित और हटा सकता है।

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

यादृच्छिक अभिगम स्मृति (रैंडम-एक्सेस मेमोरी )

रैंडम-एक्सेस मेमोरी (RAM) का उपयोग प्रोग्राम निर्देश और डेटा दोनों को स्टोर करने के लिए किया जाता है।[lower-alpha 1] प्रायः, किसी प्रोग्राम को निष्पादित करने के लिए दोनों को स्मृति में उपस्थित होने की आवश्यकता होती है। सामान्यतः कई प्रोग्राम मेमोरी तक पहुंच चाहते हैं, सामान्यतः कंप्यूटर की तुलना में अधिक मेमोरी की मांग करते हैं। कर्नेल यह तय करने के लिए जिम्मेदार है कि प्रत्येक प्रक्रिया किस मेमोरी का उपयोग कर सकती है, और यह निर्धारित करने के लिए कि पर्याप्त मेमोरी उपलब्ध नहीं होने पर क्या करना है।

इनपुट/आउटपुट उपकरण

इनपुट/आउटपुट उपकरण में कीबोर्ड, माइस, डिस्क ड्राइव, प्रिंटर, यू एस बी (USB) डिवाइस, नेटवर्क एडेप्टर और प्रदर्शन उपकरण जैसे सह उपकरण सम्मिलितहैं। कर्नेल एक उपयुक्त उपकरण को इनपुट/आउटपुट निष्पादित करने के लिए एप्लिकेशन से अनुरोध आवंटित करता है और उपकरण का उपयोग करने के लिए सुविधाजनक तरीके प्रदान करता है (प्रायः उस बिंदु पर सारणित किया जाता है जहां एप्लिकेशन को उपकरण के कार्यान्वयन विवरण जानने की आवश्यकता नहीं होती है)।

संसाधन प्रबंधन

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

मेमोरी प्रबन्धन

कर्नेल के पास सिस्टम की मेमोरी तक पूर्ण पहुंच होती है और प्रक्रियाओं को इस मेमोरी को सुरक्षित रूप से चलाने की अनुमति देनी चाहिए क्योंकि उन्हें इसकी आवश्यकता होती है। ऐसा करने में सामान्यतः पहला कदम कल्पित एड्रेसिंग(वर्चुअल एड्रेसिंग) होता है, जिसे प्रायः पेजिंग और/या विभाजन (मेमोरी) द्वारा हासिल किया जाता है। कल्पित एड्रेसिंग कर्नेल को एक दिए गए भौतिक पते को एक और पता, आभासी पता बनाने की अनुमति देता है। विभिन्न प्रक्रियाओं के लिए कल्पित पता स्थान भिन्न हो सकते हैं; मेमोरी जो एक प्रक्रिया किसी विशेष(आभासी) पते पर पहुंचती है, वह अलग-अलग मेमोरी हो सकती है जो एक ही पते पर दूसरी प्रक्रिया तक पहुंचती है। यह प्रत्येक प्रोग्राम को व्यवहार करने की अनुमति देता है जैसे कि यह केवल एक ही अकेला(कर्नेल के अलावा) चल रहा है और इस प्रकार अनुप्रयोगों(ऍप्लिकेशन्स) को एक दूसरे को ख़राब होने से रोकता है।[6]

कई प्रणालियों पर, प्रोग्राम का कल्पित पता उस डेटा को संदर्भित कर सकता है जो वर्तमान में स्मृति में नहीं है। कल्पित एड्रेसिंग द्वारा प्रदान की गई अप्रत्यक्ष विलक्षणता (ऑपरेटिंग सिस्टम) को हार्ड ड्राइव की तरह अन्य डेटा संचय(स्टोर्स) का उपयोग करने की अनुमति देती है, जो अन्यथा मुख्य मेमोरी (रैंडम-एक्सेस मेमोरी) में बनी रहती है। नतीजतन, ऑपरेटिंग सिस्टम प्रोग्राम को भौतिक रूप से उपलब्ध सिस्टम की तुलना में अधिक मेमोरी का उपयोग करने की अनुमति दे सकता है। जब किसी प्रोग्राम को ऐसे डेटा की आवश्यकता होती है जो वर्तमान में रैम में नहीं है, तो सीपीयू कर्नेल को संकेत देता है कि ऐसा हो गया है, और कर्नेल एक निष्क्रिय मेमोरी ब्लॉक की सामग्री को डिस्क (यदि आवश्यक हो) में लिखकर प्रतिक्रिया देता है और इसके द्वारा अनुरोधित डेटा के साथ बदल देता है। प्रोग्राम को फिर से उस बिंदु से फिर से शुरू किया जा सकता है जहां इसे रोका गया था। इस योजना को प्रायः डिमांड पेजिंग के रूप में जाना जाता है।

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

उपकरण प्रबंधन

उपयोगी कार्यों को करने के लिए, प्रक्रियाओं को कंप्यूटर से जुड़े बाह्य उपकरणों तक पहुंच की आवश्यकता होती है, जो उपकरण(डिवाइस) ड्राइवरों के माध्यम से कर्नेल द्वारा नियंत्रित होते हैं। एक डिवाइस ड्राइवर एक कंप्यूटर प्रोग्राम है जो एक हार्डवेयर डिवाइस को संपुटित, निगरानी और नियंत्रित (ओएस के माध्यम से अंतरापृष्ठ(एच एस आई )) करता है । यह ऑपरेटिंग सिस्टम को एक ए पी आई, कार्यविधि और जानकारी प्रदान करता है कि हार्डवेयर के एक निश्चित टुकड़े के साथ कैसे नियंत्रण और संचार किया जाए। डिवाइस ड्राइवर सभी ओ एस और उनके ऍप्लिकेशन्स के लिए एक महत्वपूर्ण और अहम निर्भरता प्रदान करते हैं। ड्राइवर का प्रारुप लक्ष्य अमूर्तता है; ड्राइवर का कार्य ओएस-अनिवार्य सार फ़ंक्शन कॉल (प्रोग्रामिंग कॉल) को डिवाइस-विशिष्ट कॉल में अनुवाद करना है। सैद्धांतिक रूप में, एक उपकरण को उपयुक्त ड्राइवर के साथ सही ढंग से काम करना चाहिए। डिवाइस ड्राइवरों का उपयोग उदहारण पूर्वक वीडियो कार्ड, साउंड कार्ड, प्रिंटर, स्कैनर, मोडेम और नेटवर्क कार्ड में होता है।

हार्डवेयर स्तर पर, डिवाइस ड्राइवरों के सामान्य सार में सम्मिलितहैं:

  • सीधे इंटरफेसिंग
  • एक उच्च-स्तरीय अंतरापृष्ठ(इंटरफ़ेस) (वीडियो बी आई ओ एस ( BIOS) ) का उपयोग करना
  • निचले स्तर के डिवाइस ड्राइवर का उपयोग करना (डिस्क ड्राइवरों का उपयोग करने वाले फ़ाइल ड्राइवर)
  • पूरी तरह से कुछ अलग करते हुए, हार्डवेयर के साथ काम को अनुकरण करना

और सॉफ्टवेयर स्तर पर, डिवाइस ड्राइवर सार में सम्मिलितहैं:

  • ऑपरेटिंग सिस्टम को हार्डवेयर संसाधनों तक सीधी पहुंच की अनुमति देना
  • केवल आदिम(प्रिमिटिव) लागू करना
  • त्वैन(TWAIN) जैसे गैर-चालक सॉफ़्टवेयर के लिए एक इंटरफ़ेस कार्यान्वित करना
  • एक भाषा को लागू करना (सामान्यतः एक उच्च स्तरीय भाषा जैसे परिशिष्ट भाग )

उदाहरण के लिए, उपयोगकर्ता को स्क्रीन पर कुछ दिखाने के लिए, एक एप्लिकेशन कर्नेल से अनुरोध करेगा, जो अनुरोध को उसके डिस्प्ले ड्राइवर को अग्रेषित करेगा, जो वास्तव में शैली/पिक्सेल के आलेखन के लिए जिम्मेदार है।[6]

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

चूंकि डिवाइस प्रबंधन एक बहुत ही ऑपरेटिंग ओ एस-विशिष्ट विषय है, इन ड्राइवरों को प्रत्येक प्रकार के कर्नेल प्रारुप द्वारा अलग तरीके से नियंत्रित किया जाता है, लेकिन हर स्थिति में, कर्नेल को इनपुट/आउटपुट प्रदान करना होता है। इनपुट/आउटपुट ड्राइवरों को भौतिक रूप से अपने उपकरणों तक पहुंचने की अनुमति देता है। कुछ पोर्ट (कंप्यूटर नेटवर्किंग) या मेमोरी लोकेशन के माध्यम से। डिवाइस प्रबंधन प्रणाली को परिकलन करते समय महत्वपूर्ण निर्णय लेने होते हैं, क्योंकि कुछ प्रारूपों में प्रवेश मार्ग में संदर्भ स्विच सम्मिलितहो सकते हैं, जिससे ऑपरेशन बहुत सीपीयू-गहन हो जाता है और आसानी से एक महत्वपूर्ण प्रदर्शन शिरोपरि हो जाता है।[citation needed]


सिस्टम कॉल

कंप्यूटिंग में, एक सिस्टम कॉल यह है कि कैसे एक प्रक्रिया एक ऑपरेटिंग सिस्टम के कर्नेल से एक सेवा का अनुरोध करती है जिसे चलाने की अनुमति सामान्य रूप से नहीं होती है। सिस्टम कॉल एक प्रक्रिया और ऑपरेटिंग सिस्टम के बीच अंतरापृष्ठ प्रदान करते हैं। सिस्टम के साथ पारस्परिक क्रिया करने वाले अधिकांश संक्रियायों के लिए अनुमति की आवश्यकता होती है जो उपयोगकर्ता-स्तरीय प्रक्रिया के लिए उपलब्ध नहीं होती है, उदाहरण के लिए,इनपुट/आउटपुट सिस्टम पर मौजूद डिवाइस के साथ किया जाता है, या अन्य प्रक्रियाओं के साथ संचार के किसी भी रूप में सिस्टम कॉल के उपयोग की आवश्यकता होती है।

एक सिस्टम कॉल एक तंत्र है जिसका उपयोग एप्लिकेशन प्रोग्राम द्वारा ऑपरेटिंग सिस्टम से सेवा का अनुरोध करने के लिए किया जाता है। वे एक मशीन कोड | मशीन-कोड निर्देश का उपयोग करते हैं जो प्रोसेसर के तरीका(मोड) बदलने का कारण बनता है। एक उदाहरण, पर्यवेक्षक मोड से संरक्षित मोड में होगा। यह वह जगह है जहां ऑपरेटिंग सिस्टम हार्डवेयर डिवाइस या स्मृति प्रबंधन इकाई तक पहुंचने जैसी क्रियाएं करता है। प्रायः ऑपरेटिंग सिस्टम एक प्रोग्राम संग्रह प्रदान करता है जो ऑपरेटिंग सिस्टम और सामान्य उपयोगकर्ता प्रोग्राम के बीच होता है। प्रायः यह एक सी(प्रोग्रामिंग लैंग्वेज) है जैसे ग्लिबक( Glibc) या विंडोज एपीआई(Windows 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) सिस्टम का पारंपरिक प्रारुप है। एक मोनोलिथिक कर्नेल एक एकल प्रोग्राम है जिसमें प्रत्येक कर्नेल से संबंधित कार्य करने के लिए आवश्यक सभी कोड होते हैं। प्रत्येक भाग जिसे अधिकांश प्रोग्रामों द्वारा प्रवेश किया जाना है, जिसे प्रोग्राम संग्रह में नहीं रखा जा सकता है, वह कर्नेल स्पेस में है: जैसे डिवाइस ड्राइवर, शेड्यूलर, मेमोरी हैंडलिंग, फाइल सिस्टम और नेटवर्क स्टैक। एप्लिकेशन को कई सिस्टम कॉल प्रदान किए जाते हैं, ताकि वे उन सभी क्रमव्यवस्थाओं तक पहुंच सकें। एक मोनोलिथिक कर्नेल, जबकि शुरू में उप-प्रणालियों के साथ लोड किया जा सकता है, जिसकी आवश्यकता नहीं हो सकती है, इसे उस बिंदु पर समायोजित किया जा सकता है जहां यह हार्डवेयर के लिए विशेष रूप से तैयार किए गए से बहुत तेज़ है, हालांकि सामान्य अर्थों में अधिक प्रासंगिक है। आधुनिक मोनोलिथिक कर्नेल, जैसे कि Linux_kernel (GNU ऑपरेटिंग सिस्टम के कर्नेल में से एक) और FreeBSD कर्नेल, जो दोनों यूनिक्स-जैसे ऑपरेटिंग सिस्टम की श्रेणी में आते हैं, रनटाइम पर मॉड्यूल लोड करने की क्षमता रखते हैं, जिससे आसान अनुमति मिलती है कर्नेल स्थान में चल रहे कोड की मात्रा को कम करने में मदद करते हुए, कर्नेल की क्षमताओं का आवश्यकतानुसार विस्तार। मोनोलिथिक कर्नेल में, कुछ लाभ इन बिंदुओं पर टिके होते हैं:

  • चूंकि इसमें कम सॉफ्टवेयर सम्मिलितहै इसलिए यह तेज है।
  • जैसा कि यह सॉफ्टवेयर का एक ही टुकड़ा है, यह स्रोत और संकलित दोनों रूपों में छोटा होना चाहिए।
  • कम कोड का मतलब प्रायः कम बग होता है जो कम सुरक्षा समस्याओं का अनुवाद कर सकता है।

मोनोलिथिक कर्नेल में ज्यादातर काम सिस्टम कॉल के जरिए किया जाता है। ये इंटरफेस हैं, प्रायः एक सारणीबद्ध संरचना में रखे जाते हैं, जो डिस्क संचालन जैसे कर्नेल के भीतर कुछ सबसिस्टम तक पहुंचते हैं। अनिवार्य रूप से कॉल प्रोग्राम के भीतर किए जाते हैं और सिस्टम कॉल के माध्यम से अनुरोध की एक चेक की गई कॉपी पास की जाती है। इसलिए, यात्रा करने के लिए बिल्कुल भी दूर नहीं है। मोनोलिथिक Linux_kernel कर्नेल को न केवल मॉड्यूल को गतिशील रूप से लोड करने की क्षमता के कारण बल्कि इसके अनुकूलन में आसानी के कारण भी बहुत छोटा बनाया जा सकता है। वास्तव में, कुछ ऐसे संस्करण हैं जो एक पर बड़ी संख्या में उपयोगिताओं और अन्य कार्यक्रमों के साथ फिट होने के लिए काफी छोटे हैं एकल फ्लॉपी डिस्क और अभी भी एक पूरी तरह कार्यात्मक ऑपरेटिंग सिस्टम प्रदान करते हैं (जिनमें से सबसे लोकप्रिय muLinux है)। इसके कर्नेल को छोटा करने की इस क्षमता ने एम्बेडेड सिस्टम में लिनक्स के उपयोग में तेजी से वृद्धि की है।

इस प्रकार के कर्नेल में ऑपरेटिंग सिस्टम के मुख्य कार्य और रनटाइम पर मॉड्यूल लोड करने की क्षमता वाले डिवाइस ड्राइवर सम्मिलितहोते हैं। वे अंतर्निहित हार्डवेयर के समृद्ध और शक्तिशाली सार प्रदान करते हैं। वे सरल हार्डवेयर सार का एक छोटा सा सेट प्रदान करते हैं और अधिक कार्यक्षमता प्रदान करने के लिए सर्वर नामक एप्लिकेशन का उपयोग करते हैं। यह विशेष दृष्टिकोण पर्यवेक्षक मोड में चलने वाले कई मॉड्यूल में ऑपरेटिंग सिस्टम सेवाओं जैसे प्रक्रिया प्रबंधन, समवर्ती और मेमोरी प्रबंधन को लागू करने के लिए सिस्टम कॉल के एक सेट के साथ हार्डवेयर पर एक उच्च-स्तरीय कल्पित इंटरफ़ेस को परिभाषित करता है। इस प्रारुप में कई दोष और सीमाएँ हैं:

  • कर्नेल में कोडिंग चुनौतीपूर्ण हो सकती है, आंशिक रूप से क्योंकि कोई सामान्य पुस्तकालयों (जैसे पूर्ण विशेषताओं वाली सी मानक लाइब्रेरी) का उपयोग नहीं कर सकता है, और क्योंकि किसी को [[ जीएनयू डीबगर ]] जैसे स्रोत-स्तर डीबगर का उपयोग करने की आवश्यकता होती है। कंप्यूटर को रिबूट करना सामान्यतः आवश्यक होता है। यह सिर्फ डेवलपर्स के लिए सुविधा की समस्या नहीं है। जब डिबगिंग कठिन होती है, और जैसे-जैसे कठिनाइयाँ मजबूत होती जाती हैं, यह अधिक संभावना हो जाती है कि कोड बगियर होगा।
  • गिरी के एक हिस्से में कीड़े के मजबूत दुष्प्रभाव होते हैं; चूंकि कर्नेल में प्रत्येक फ़ंक्शन में सभी विशेषाधिकार हैं, एक फ़ंक्शन में एक बग दूसरे की डेटा संरचना, कर्नेल के पूरी तरह से असंबंधित भाग, या किसी भी चल रहे प्रोग्राम को दूषित कर सकता है।
  • कर्नेलसामान्यतः बहुत बड़ी हो जाती है और उसका रखरखाव करना मुश्किल हो जाता है।
  • भले ही इन ऑपरेशन की सर्विसिंग करने वाले मॉड्यूलएस पूरे से अलग हैं, कोड एकीकरण तंग है और सही ढंग से करना मुश्किल है।
  • चूंकि मॉड्यूल एक ही एड्रेस स्पेस में चलते हैं, एक बग पूरे सिस्टम को नीचे ला सकता है।
  • मोनोलिथिक कर्नेलपोर्टेबल नहीं हैं; इसलिए, प्रत्येक नए आर्किटेक्चर के लिए उन्हें फिर से लिखा जाना चाहिए, जिस पर ऑपरेटिंग सिस्टम का उपयोग किया जाना है।
माइक्रोकर्नेल दृष्टिकोण में, कर्नेल ही केवल बुनियादी कार्यक्षमता प्रदान करता है जो सर्वर (कंप्यूटिंग) के निष्पादन की अनुमति देता है, अलग-अलग प्रोग्राम जो पूर्व कर्नेल कार्यों को मानते हैं, जैसे डिवाइस ड्राइवर, जीयूआई सर्वर, आदि।

मोनोलिथिक कर्नेल के उदाहरण IBM AIX कर्नेल, HP-UX कर्नेल और सोलारिस कर्नेल हैं।

माइक्रो कर्नेल

माइक्रोकर्नेल (संक्षिप्त μK या यूके भी) ऑपरेटिंग सिस्टम प्रारुप के लिए एक दृष्टिकोण का वर्णन करने वाला शब्द है, जिसके द्वारा सिस्टम की कार्यक्षमता को पारंपरिक कर्नेल से सर्वर के एक सेट में ले जाया जाता है, जो न्यूनतम कर्नेल के माध्यम से संचार करता है, जितना संभव हो उतना कम छोड़ देता है। सिस्टम स्पेस में और जितना संभव हो यूजर स्पेस में। एक माइक्रोकर्नेल जिसे एक विशिष्ट प्लेटफॉर्म या डिवाइस के लिए प्रारुप किया गया है, उसमें केवल वही होगा जो इसे संचालित करने के लिए आवश्यक है। माइक्रोकर्नेल दृष्टिकोण में हार्डवेयर पर एक सरल अमूर्तता को परिभाषित करना सम्मिलितहै, जिसमें स्मृति प्रबंधन , कंप्यूटर मल्टीटास्किंग और इंटर-प्रोसेस संचार जैसी न्यूनतम ओएस सेवाओं को लागू करने के लिए आदिम या सिस्टम कॉल का एक सेट होता है। सामान्य रूप से कर्नेल द्वारा प्रदान की जाने वाली सेवाओं सहित अन्य सेवाएं, जैसे कि कम्प्यूटर नेट्वर्किंग , उपयोगकर्ता-अंतरिक्ष कार्यक्रमों में कार्यान्वित की जाती हैं, जिन्हें सर्वर कहा जाता है। मोनोलिथिक कर्नेलकी तुलना में माइक्रोकर्नेल को बनाए रखना आसान है, लेकिन बड़ी संख्या में सिस्टम कॉल और संदर्भ स्विच सिस्टम को धीमा कर सकते हैं क्योंकि वे प्रायः सादे फ़ंक्शन कॉल की तुलना में अधिक ओवरहेड उत्पन्न करते हैं।

कर्नेल स्थान में केवल वे हिस्से हैं जिन्हें वास्तव में विशेषाधिकार प्राप्त मोड में होने की आवश्यकता है: IPC (इंटर-प्रोसेस कम्युनिकेशन), बेसिक शेड्यूलर, या शेड्यूलिंग प्रिमिटिव, बेसिक मेमोरी हैंडलिंग, बेसिक I/O प्रिमिटिव। कई महत्वपूर्ण भाग अब उपयोगकर्ता स्थान में चल रहे हैं: पूर्ण शेड्यूलर, मेमोरी हैंडलिंग, फ़ाइल सिस्टम और नेटवर्क स्टैक। माइक्रो कर्नेल का आविष्कार पारंपरिक मोनोलिथिक कर्नेल प्रारुप की प्रतिक्रिया के रूप में किया गया था, जिससे सभी सिस्टम कार्यक्षमता को प्रोसेसर के एक विशेष सिस्टम मोड में चल रहे एक स्थिर प्रोग्राम में रखा गया था। माइक्रोकर्नेल में, केवल सबसे मौलिक कार्यों को निष्पादित किया जाता है जैसे कि हार्डवेयर के कुछ (जरूरी नहीं कि सभी) तक पहुंचने में सक्षम होना, स्मृति का प्रबंधन करना और प्रक्रियाओं के बीच संदेश पारित करना समन्वयित करना। कुछ प्रणालियाँ जो माइक्रो कर्नेल का उपयोग करती हैं, वे हैं QNX और HURD। क्यूएनएक्स और जीएनयू हर्ड उपयोगकर्ता सत्र के मामले में सिस्टम के पूरे स्नैपशॉट हो सकते हैं या देखे जा सकते हैं जैसा कि इसे संदर्भित किया गया है। माइक्रोकर्नेल आर्किटेक्चर का सार इसके कुछ फायदों को दिखाता है:

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

अधिकांश माइक्रोकर्नेल एक सर्वर से दूसरे सर्वर पर अनुरोधों को संभालने के लिए एक संदेश पासिंग सिस्टम का उपयोग करते हैं। संदेश पासिंग सिस्टम प्रायः माइक्रोकर्नेल के साथ पोर्ट (कंप्यूटर नेटवर्किंग) के आधार पर संचालित होता है। एक उदाहरण के रूप में, यदि अधिक मेमोरी के लिए अनुरोध भेजा जाता है, तो माइक्रोकर्नेल के साथ एक पोर्ट खोला जाता है और अनुरोध भेजा जाता है। एक बार माइक्रोकर्नेल के भीतर, चरण सिस्टम कॉल के समान होते हैं। तर्क यह था कि यह सिस्टम आर्किटेक्चर में मॉड्यूलरिटी लाएगा, जो एक क्लीनर सिस्टम, डिबग करने में आसान या गतिशील रूप से संशोधित करने, उपयोगकर्ताओं की जरूरतों के अनुकूल बनाने और अधिक प्रदर्शन करने के लिए आवश्यक होगा। वे जीएनयू हर्ड, मिनिक्स , एमकेलिनक्स , क्यूएनएक्स और रिडॉक्स ओएस जैसे ऑपरेटिंग सिस्टम का हिस्सा हैं। हालांकि माइक्रोकर्नेल अपने आप में बहुत छोटे होते हैं, अपने सभी आवश्यक सहायक कोड के संयोजन में, वास्तव में, वे सामान्यतः मोनोलिथिक कर्नेल से बड़े होते हैं। मोनोलिथिक कर्नेल के हिमायती यह भी बताते हैं कि माइक्रोकर्नेल सिस्टम की दो-स्तरीय संरचना, जिसमें अधिकांश ऑपरेटिंग सिस्टम सीधे हार्डवेयर के साथ इंटरैक्ट नहीं करते हैं, सिस्टम दक्षता के मामले में एक गैर-महत्वहीन लागत पैदा करते हैं। इस प्रकार के कर्नेल प्रायः केवल न्यूनतम सेवाएं प्रदान करते हैं जैसे मेमोरी एड्रेस स्पेस, इंटर-प्रोसेस कम्युनिकेशन (IPC) और प्रोसेस मैनेजमेंट को परिभाषित करना। अन्य कार्य जैसे हार्डवेयर प्रक्रियाओं को चलाना सीधे माइक्रोकर्नेल द्वारा नियंत्रित नहीं किया जाता है। सूक्ष्म कर्नेलके समर्थकों का कहना है कि उन मोनोलिथिक कर्नेलका नुकसान यह है कि एक त्रुटि in कर्नेल पूरे सिस्टम को क्रैश कर सकता है। हालाँकि, एक माइक्रोकर्नेल के साथ, यदि एक कर्नेल प्रक्रिया दुर्घटनाग्रस्त हो जाती है, तब भी त्रुटि के कारण सेवा को फिर से शुरू करके पूरे सिस्टम के क्रैश को रोकना संभव है।

कर्नेल द्वारा प्रदान की जाने वाली अन्य सेवाएं जैसे नेटवर्किंग को सर्वर के रूप में संदर्भित यूजर-स्पेस प्रोग्राम में कार्यान्वित किया जाता है। सर्वर प्रोग्राम को शुरू और बंद करके ऑपरेटिंग सिस्टम को संशोधित करने की अनुमति देते हैं। नेटवर्किंग समर्थन के बिना मशीन के लिए, उदाहरण के लिए, नेटवर्किंग सर्वर प्रारंभ नहीं होता है। विभिन्न अनुप्रयोगों और सर्वरों के बीच डेटा को स्थानांतरित करने के लिए कर्नेल के अंदर और बाहर जाने का कार्य ओवरहेड बनाता है जो मोनोलिथिक कर्नेल की तुलना में सूक्ष्म कर्नेल की दक्षता के लिए हानिकारक है।

हालाँकि, माइक्रोकर्नेल में नुकसान मौजूद हैं। कुछ हैं:

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

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

एक माइक्रोकर्नेल ऑपरेटिंग सिस्टम के शेष भाग को एक उच्च-स्तरीय भाषा में लिखे गए सामान्य एप्लिकेशन प्रोग्राम के रूप में कार्यान्वित करने की अनुमति देता है, और एक ही अपरिवर्तित कर्नेल के शीर्ष पर विभिन्न ऑपरेटिंग सिस्टम का उपयोग करता है। ऑपरेटिंग सिस्टम के बीच गतिशील रूप से स्विच करना और एक साथ एक से अधिक सक्रिय होना भी संभव है।[25]


मोनोलिथिक कर्नेल बनाम माइक्रो कर्नेल

जैसे-जैसे कंप्यूटर कर्नेल बढ़ता है, वैसे-वैसे इसके विश्वसनीय कंप्यूटिंग बेस का आकार और भेद्यता भी बढ़ती है; और, सुरक्षा को कम करने के अलावा, मेमोरी फ़ुटप्रिंट को बढ़ाने की समस्या है। अप्रत्यक्ष स्मृति सिस्टम को बेहतर बनाकर इसे कुछ हद तक कम किया जा सकता है, लेकिन सभी कंप्यूटर आर्किटेक्चर में कल्पित मेमोरी सपोर्ट नहीं होता है।[lower-alpha 2] कर्नेल के पदचिह्न को कम करने के लिए, अनावश्यक कोड को ध्यान से हटाने के लिए व्यापक संपादन किया जाना चाहिए, जो कोड की लाखों पंक्तियों वाले कर्नेल के भागों के बीच गैर-स्पष्ट अन्योन्याश्रितताओं के साथ बहुत मुश्किल हो सकता है।

1990 के दशक के प्रारंभ तक, मोनोलिथिक कर्नेलबनाम माइक्रोकर्नेल की विभिन्न कमियों के कारण, मोनोलिथिक कर्नेलको लगभग सभी ऑपरेटिंग सिस्टम शोधकर्ताओं द्वारा अप्रचलित माना गया था।[citation needed] नतीजतन, एक माइक्रोकर्नेल के बजाय एक मोनोलिथिक कर्नेल के रूप में लिनक्स (कर्नेल) का प्रारुप लिनस टोरवाल्ड्स और एंड्रयू एस तनेनबाउम के बीच एक प्रसिद्ध बहस का विषय था।[35] तनेनबौम-टोरवाल्ड्स बहस में प्रस्तुत तर्क के दोनों पक्षों में योग्यता है।

प्रदर्शन

मोनोलिथिक कर्नेल को उनके सभी कोड को एक ही एड्रेस स्पेस (कर्नेल स्पेस) में रखने के लिए प्रारुप किया गया है, जो कुछ डेवलपर्स का तर्क है कि सिस्टम के प्रदर्शन को बढ़ाने के लिए आवश्यक है।[36]कुछ डेवलपर्स यह भी मानते हैं कि अच्छी तरह से लिखे जाने पर मोनोलिथिक सिस्टम बेहद कुशल होते हैं।[36] मोनोलिथिक मॉडल अधिक कुशल होता है[37] माइक्रोकर्नेल प्रारुप की धीमी IPC प्रणाली के बजाय साझा कर्नेल मेमोरी के उपयोग के माध्यम से, जो प्रायः संदेश पासिंग पर आधारित होता है।[citation needed] 1980 के दशक और 1990 के दशक की शुरुआत में माइक्रोकर्नेल का प्रदर्शन खराब था।[38][39] हालांकि, इन माइक्रोकर्नेल के प्रदर्शन को आनुभविक रूप से मापने वाले अध्ययनों ने ऐसी अक्षमता के कारणों का विश्लेषण नहीं किया।[38]इस डेटा की व्याख्या लोककथाओं पर छोड़ दी गई थी, इस धारणा के साथ कि वे कर्नेल-मोड से उपयोगकर्ता-मोड में स्विच की बढ़ी हुई आवृत्ति, अंतर-प्रक्रिया संचार की बढ़ी हुई आवृत्ति और संदर्भ स्विच की बढ़ी हुई आवृत्ति के कारण थे।[38] वास्तव में, जैसा कि 1995 में अनुमान लगाया गया था, माइक्रोकर्नेल के खराब प्रदर्शन के कारण भी हो सकते हैं: (1) संपूर्ण माइक्रोकर्नेल दृष्टिकोण की वास्तविक अक्षमता, (2) उन माइक्रोकर्नेल में लागू की गई विशेष अवधारणाएं, और (3) उन अवधारणाओं का विशेष कार्यान्वयन। इसलिए यह अध्ययन किया जाना बाकी था कि क्या एक कुशल माइक्रोकर्नेल बनाने का समाधान, पिछले प्रयासों के विपरीत, सही निर्माण तकनीकों को लागू करना था।[38]

दूसरे छोर पर, पदानुक्रमित सुरक्षा डोमेन वास्तुकला जो एक मोनोलिथिक कर्नेल के प्रारुपकी ओर ले जाती है[33]हर बार सुरक्षा के विभिन्न स्तरों के बीच एक इंटरेक्शन होने पर एक महत्वपूर्ण प्रदर्शन दोष होता है (यानी, जब किसी प्रक्रिया को उपयोगकर्ता मोड और पर्यवेक्षक मोड दोनों में डेटा संरचना में हेरफेर करना पड़ता है), क्योंकि इसके लिए कॉल-टू-मूल्य से संदेश कॉपी करने की आवश्यकता होती है।[40]

हाइब्रिड कर्नेल दृष्टिकोण एक मोनोलिथिक कर्नेल की गति और सरल प्रारुप को एक माइक्रोकर्नेल की प्रतिरूपकता और निष्पादन सुरक्षा के साथ जोड़ता है

हाइब्रिड (या मॉड्यूलर) कर्नेल

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 नामक एक हाइब्रिड कर्नेल का उपयोग करता है। OSF/1 के मच कर्नेल (OSFMK 7.3) के कोड पर आधारित है[41] और FreeBSD का मोनोलिथिक कर्नेल। वे प्रदर्शन बढ़ाने के लिए कर्नेल-स्पेस में कुछ अतिरिक्त कोड को छोड़कर, माइक्रो कर्नेल के समान हैं। ये कर्नेल एक समझौते का प्रतिनिधित्व करते हैं जिसे कुछ डेवलपर्स द्वारा मोनोलिथिक और माइक्रो कर्नेल दोनों के प्रमुख लाभों को समायोजित करने के लिए लागू किया गया था। इस प्रकार की कर्नेलमोनोलिथिक कर्नेलके कुछ गुणों के साथ सूक्ष्म कर्नेलके विस्तार हैं। मोनोलिथिक कर्नेलके विपरीत, इस प्रकार के कर्नेलअपने आप रनटाइम पर मॉड्यूल लोड करने में असमर्थ हैं। हाइब्रिड कर्नेल सूक्ष्म कर्नेल होते हैं जिनमें कर्नेल-स्पेस में कुछ गैर-आवश्यक कोड होते हैं ताकि कोड उपयोगकर्ता-स्थान में होने की तुलना में अधिक तेज़ी से चल सके। हाइब्रिड कर्नेलमोनोलिथिक और माइक्रोकर्नेल प्रारुप के बीच एक समझौता है। इसका तात्पर्य पारंपरिक माइक्रोकर्नेल के प्रदर्शन ओवरहेड को कम करने के लिए कर्नेल स्पेस में कुछ सेवाओं (जैसे प्रसार का ढेर या फाइल सिस्टम ) को चलाने से है, लेकिन फिर भी यूजर स्पेस में सर्वर के रूप में कर्नेल कोड (जैसे डिवाइस ड्राइवर) चल रहा है।

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

  • ड्राइवरों के लिए तेज़ विकास का समय जो मॉड्यूल के भीतर से काम कर सकते हैं। परीक्षण के लिए किसी रिबूट की आवश्यकता नहीं है (बशर्ते कर्नेल अस्थिर न हो)।
  • ऑन डिमांड कैपेबिलिटी बनाम नए ड्राइवर या सबसिस्टम जैसी चीजों के लिए पूरे कर्नेल को फिर से कंपाइल करने में समय बिताना।
  • तृतीय पक्ष प्रौद्योगिकी का तेज़ एकीकरण (विकास से संबंधित लेकिन फिर भी स्वयं के लिए प्रासंगिक)।

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

  • अधिक इंटरफेस से गुजरने के साथ, बग बढ़ने की संभावना मौजूद है (जिसका अर्थ है अधिक सुरक्षा छेद)।
  • प्रतीक अंतर जैसी समस्याओं से निपटने के दौरान मॉड्यूल बनाए रखना कुछ प्रशासकों के लिए भ्रमित करने वाला हो सकता है।

नैनोकर्नेल

एक नैनोकर्नेल वस्तुतः सभी सेवाओं का प्रतिनिधित्व करता है – प्रोग्राम करने प्रोग्रामेबल इंटरप्ट कंट्रोलर या घड़ी जैसे सबसे बुनियादी भी सम्मिलितहैं – डिवाइस ड्राइवरों के लिए कर्नेल मेमोरी आवश्यकता को पारंपरिक माइक्रोकर्नेल से भी छोटा बनाने के लिए।[42]


एक्सोकर्नल्स

ऑपरेटिंग सिस्टम प्रारुप के लिए एक्सोकर्नल्स अभी भी प्रायोगिक दृष्टिकोण हैं। वे कच्चे हार्डवेयर की सुरक्षा और बहुसंकेतन के लिए अपनी कार्यक्षमता को सीमित करने में अन्य प्रकार के कर्नेलसे भिन्न होते हैं, जिससे अनुप्रयोगों को विकसित करने के लिए कोई हार्डवेयर सार नहीं मिलता है। हार्डवेयर प्रबंधन से हार्डवेयर सुरक्षा का यह पृथक्करण एप्लिकेशन डेवलपर्स को यह निर्धारित करने में सक्षम बनाता है कि प्रत्येक विशिष्ट प्रोग्राम के लिए उपलब्ध हार्डवेयर का सबसे कुशल उपयोग कैसे किया जाए।

एक्सोकर्नल्स अपने आप में बहुत छोटे होते हैं। हालांकि, उनके साथ लाइब्रेरी ऑपरेटिंग सिस्टम (unikernel भी देखें) होते हैं, जो एक पारंपरिक ऑपरेटिंग सिस्टम की कार्यात्मकताओं के साथ एप्लिकेशन डेवलपर्स प्रदान करते हैं। यह प्रत्येक उपयोगकर्ता के लिए नीचे आता है जो अपने स्वयं के शेष कर्नेल को लगभग खरोंच से लिखता है, जो एक बहुत ही जोखिम भरा, जटिल और काफी चुनौतीपूर्ण काम है - विशेष रूप से समय-बाधित उत्पादन-उन्मुख वातावरण में, यही कारण है कि एक्सोकर्नल्स ने कभी नहीं किया पर पकड़ा।[citation needed] एक्सोकर्नेल-आधारित सिस्टम का एक प्रमुख लाभ यह है कि वे कई लाइब्रेरी ऑपरेटिंग सिस्टम को सम्मिलितकर सकते हैं, प्रत्येक एक अलग एपीआई निर्यात करता है, उदाहरण के लिए एक उच्च स्तरीय प्रयोक्ता इंटरफ़ेस विकास के लिए और एक रीयल-टाइम कंप्यूटिंग | रीयल-टाइम कंट्रोल के लिए।

मल्टी कर्नेल

एक मल्टीकर्नेल ऑपरेटिंग सिस्टम एक मल्टी-कोर प्रोसेसर | मल्टी-कोर मशीन को स्वतंत्र कोर के नेटवर्क के रूप में मानता है, जैसे कि यह एक वितरित सिस्टम हो। यह साझा स्मृति नहीं मानता बल्कि संदेश देना के रूप में अंतर-प्रक्रिया संचार लागू करता है।[43][44] बैरलफिश पहला ऑपरेटिंग सिस्टम था जिसे मल्टीकर्नेल के रूप में वर्णित किया गया था।

कर्नेल विकास का इतिहास

प्रारंभिक ऑपरेटिंग सिस्टम कर्नेल

कड़ाई से बोलना, एक कंप्यूटर चलाने के लिए एक ऑपरेटिंग सिस्टम (और इस प्रकार, एक कर्नेल) की आवश्यकता नहीं होती है। प्रोग्राम को सीधे बेअर मेटल मशीन पर लोड और निष्पादित किया जा सकता है, बशर्ते कि उन प्रोग्राम के लेखक बिना किसी हार्डवेयर एब्स्ट्रैक्शन या ऑपरेटिंग सिस्टम सपोर्ट के काम करने के इच्छुक हों। अधिकांश शुरुआती कंप्यूटर 1950 और 1960 के दशक के दौरान इस तरह से संचालित होते थे, जिन्हें विभिन्न कार्यक्रमों के निष्पादन के बीच रीसेट और पुनः लोड किया गया था। आखिरकार, छोटे सहायक प्रोग्राम जैसे प्रोग्राम लोडर और डिबगर ्स को रन के बीच मेमोरी में छोड़ दिया गया, या रीड ऑनली मैमोरी से लोड किया गया। जैसा कि इन्हें विकसित किया गया था, उन्होंने प्रारंभिक ऑपरेटिंग सिस्टम कर्नेलबनने का आधार बनाया। द बेयर मशीन | कुछ विडियो गेम कंसोल और एम्बेडेड सिस्टम पर आज भी नंगे धातु के दृष्टिकोण का उपयोग किया जाता है,[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]


क्लासिक मैक ओएस और macOS

Apple Inc. ने सबसे पहले 1984 में अपने Macintosh निजी कंप्यूटर के साथ बंडल करके अपना क्लासिक Mac OS लॉन्च किया। Apple Mac OS 8.6 में एक नैनोकर्नेल प्रारुप में चला गया। इसके विरुद्ध, आधुनिक macOS (मूल रूप से Mac OS X नाम दिया गया) डार्विन (ऑपरेटिंग सिस्टम) पर आधारित है, जो XNU नामक हाइब्रिड कर्नेल का उपयोग करता है, जिसे BSD#4;SD|4.3BSD कर्नेल और मच (कर्नेल) के संयोजन से बनाया गया था। ).[53]


माइक्रोसॉफ्ट विंडोज

Microsoft Windows को पहली बार 1985 में MS-DOS के ऐड-ऑन के रूप में रिलीज़ किया गया था। अन्य ऑपरेटिंग सिस्टम पर इसकी निर्भरता के कारण, विंडोज 95 से पहले विंडोज़ मी शुरुआती रिलीज को एक ऑपरेटिंग वातावरण माना जाता था (ऑपरेटिंग सिस्टम के साथ भ्रमित नहीं होना चाहिए)। यह उत्पाद लाइन 1980 और 1990 के दशक के दौरान विकसित होती रही, जिसमें विंडोज 9x श्रृंखला में 32-बिट एड्रेसिंग और प्री-एम्प्टिव मल्टीटास्किंग सम्मिलितथी; लेकिन 2000 में विंडोज मी की रिलीज के साथ समाप्त हो गया।

Microsoft ने Windows NT भी विकसित किया, एक बहुत ही समान इंटरफ़ेस वाला एक ऑपरेटिंग सिस्टम, लेकिन उच्च-अंत और व्यावसायिक उपयोगकर्ताओं के लिए अभिप्रेत है। यह लाइन 1993 में विंडोज एनटी 3.1 की रिलीज के साथ शुरू हुई थी, और अक्टूबर 2001 में विन्डोज़ एक्सपी की रिलीज के साथ सामान्य उपयोगकर्ताओं के लिए पेश की गई थी - मेरे पास विंडोज़ थी को पूरी तरह से अलग, अधिक परिष्कृत ऑपरेटिंग सिस्टम के साथ बदल दिया गया। यह वह लाइन है जो विंडोज़ 11 के साथ जारी रहती है।

विंडोज एनटी के कर्नेल की वास्तुकला को एक हाइब्रिड कर्नेल माना जाता है क्योंकि कर्नेल में क्लाइंट/सर्वर स्तरित सबसिस्टम मॉडल के साथ विंडो मैनेजर और आईपीसी मैनेजर्स जैसे कार्य होते हैं।[54] इसे संशोधित माइक्रोकर्नेल के रूप में प्रारुप किया गया था, क्योंकि Windows NT कर्नेल मच (कर्नेल) से प्रभावित था, लेकिन शुद्ध माइक्रोकर्नेल के सभी मानदंडों को पूरा नहीं करता है।

आईबीएम पर्यवेक्षक

पर्यवेक्षी कार्यक्रम या पर्यवेक्षक एक कंप्यूटर प्रोग्राम है, जो प्रायः एक ऑपरेटिंग सिस्टम का हिस्सा होता है, जो अन्य सबरूटीन के निष्पादन को नियंत्रित करता है और निर्धारण (कंप्यूटिंग) , इनपुट/आउटपुट संचालन, अपवाद से निपटने और इसी तरह के कार्यों को नियंत्रित करता है और डेटा में काम के प्रवाह को नियंत्रित करता है। प्रसंस्करण प्रणाली।

ऐतिहासिक रूप से, यह शब्द अनिवार्य रूप से आईबीएम के मेनफ़्रेम कंप्यूटर ऑपरेटिंग सिस्टम की लाइन से जुड़ा था जो OS/360 से शुरू हुआ था। अन्य ऑपरेटिंग सिस्टम में, पर्यवेक्षक को प्रायः कर्नेल कहा जाता है।

1970 के दशक में, आईबीएम ने हार्डवेयर से सुपरवाइजर स्टेट (कंप्यूटर साइंस) को और सार कर दिया, जिसके परिणामस्वरूप एक हाइपरविजर बना जो पूर्ण कल्पिताइजेशन को सक्षम करता है, यानी एक ही मशीन पर एक दूसरे से पूरी तरह से स्वतंत्र रूप से कई ऑपरेटिंग सिस्टम चलाने की क्षमता। इसलिए इस तरह के पहले सिस्टम को कल्पित मशीन या वीएम (ऑपरेटिंग सिस्टम) कहा गया।

माइक्रो कर्नेल का विकास

हालांकि मैक (कर्नेल), कार्नेगी मेलन विश्वविद्यालय में रिचर्ड राशिद द्वारा विकसित, सबसे प्रसिद्ध सामान्य-उद्देश्य वाला माइक्रोकर्नेल है, अन्य माइक्रोकर्नेल अधिक विशिष्ट उद्देश्यों के साथ विकसित किए गए हैं। L4 माइक्रोकर्नेल परिवार (मुख्य रूप से L3 और L4 कर्नेल) को यह प्रदर्शित करने के लिए बनाया गया था कि माइक्रोकर्नेल आवश्यक रूप से धीमे नहीं हैं।[55] Fiasco (L4 क्लोन) और पिस्ता (L4 क्लोन) जैसे नए कार्यान्वयन अलग-अलग एड्रेस स्पेस में अन्य L4 प्रक्रियाओं के बगल में Linux चलाने में सक्षम हैं।[56][57] इसके अतिरिक्त, क्यूएनएक्स एक माइक्रोकर्नेल है जो मुख्य रूप से एम्बेडेड सिस्टम में उपयोग किया जाता है,[58] और खुला स्रोत सॉफ्टवेयर MINIX, जबकि मूल रूप से शैक्षिक उद्देश्यों के लिए बनाया गया था, अब एक उच्च उपलब्धता और स्व-उपचार (कंप्यूटर विज्ञान)|स्व-चिकित्सा माइक्रोकर्नेल ओएस होने पर केंद्रित है।

यह भी देखें

  • ऑपरेटिंग सिस्टम कर्नेलकी तुलना
  • अंतःप्रक्रम संचार
  • ऑपरेटिंग सिस्टम
  • अप्रत्यक्ष स्मृति

टिप्पणियाँ

  1. It may depend on the Computer architecture
  2. Virtual addressing is most commonly achieved through a built-in memory management unit.
  3. 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. 1.0 1.1 "गुठली". Linfo. Bellevue Linux Users Group. Archived from the original on 8 December 2006. Retrieved 15 September 2016.
  2. Randal E. Bryant; David R. O’Hallaron (2016). कंप्यूटर सिस्टम: एक प्रोग्रामर का परिप्रेक्ष्य (Third ed.). Pearson. p. 17. ISBN 978-0134092669.
  3. cf. Daemon (computing)
  4. 4.0 4.1 Roch 2004
  5. 5.0 5.1 5.2 5.3 5.4 5.5 5.6 Wulf 1974 pp.337–345
  6. 6.0 6.1 Silberschatz 1991
  7. Tanenbaum, Andrew S. (2008). आधुनिक ऑपरेटिंग सिस्टम (3rd ed.). Prentice Hall. pp. 50–51. ISBN 978-0-13-600663-3. . . . लगभग सभी सिस्टम कॉल [हैं] एक पुस्तकालय प्रक्रिया को कॉल करके C प्रोग्राम से मंगाई जाती हैं। . . पुस्तकालय प्रक्रिया। . . उपयोगकर्ता मोड से कर्नेल मोड में स्विच करने और निष्पादन शुरू करने के लिए TRAP निर्देश निष्पादित करता है। . .
  8. Denning 1976
  9. Swift 2005, p.29 quote: "isolation, resource control, decision verification (checking), and error recovery."
  10. Schroeder 72
  11. 11.0 11.1 Linden 76
  12. 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.
  13. Silberschatz & Galvin, Operating System Concepts, 4th ed, pp. 445 & 446
  14. 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. 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. 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.
  17. 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.
  18. 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.
  19. 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.
  20. "महीन दाने वाली गिरी का अलगाव". mars-research.github.io (in English). Retrieved 15 September 2022.
  21. Fetzer, Mary. "ऑटोमैटिक डिवाइस ड्राइवर आइसोलेशन ऑपरेटिंग सिस्टम में बग्स से बचाता है". Pennsylvania State University via techxplore.com (in English). Retrieved 15 September 2022.
  22. Huang, Yongzhe; Narayanan, Vikram; Detweiler, David; Huang, Kaiming; Tan, Gang; Jaeger, Trent; Burtsev, Anton (2022). "KSplit: स्वचालित डिवाइस ड्राइवर अलगाव" (PDF). Retrieved 15 September 2022.
  23. 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.
  24. Dijkstra, E. W. Cooperating Sequential Processes. Math. Dep., Technological U., Eindhoven, Sept. 1965.
  25. 25.0 25.1 25.2 25.3 25.4 Brinch Hansen 70 pp.238–241
  26. 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.
  27. 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.
  28. Baiardi 1988
  29. 29.0 29.1 Levin 75
  30. Denning 1980
  31. 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] सिस्टम पर मामूली प्रभाव पड़ा है।
  32. 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. 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."
  34. "ओपन सोर्स: वॉयस फ्रॉम द ओपन सोर्स रेवोल्यूशन". 1-56592-582-3. 29 March 1999. Archived from the original on 1 February 2020. Retrieved 24 March 2019.
  35. 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. 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.
  37. "ऑपरेटिंग सिस्टम/कर्नेल मॉडल - विकिविश्वविद्यालय". en.wikiversity.org. Archived from the original on 2014-12-18. Retrieved 2014-12-18.
  38. 38.0 38.1 38.2 38.3 Liedtke 95
  39. Härtig 97
  40. Hansen 73, section 7.3 p.233 "interactions between different levels of protection require transmission of messages by value"
  41. Magee, Jim. डब्ल्यूडब्ल्यूडीसी 2000 सत्र 106 - मैक ओएस एक्स: कर्नेल. 14 minutes in. Archived from the original on 2021-10-30.
  42. "कीकोस नैनोकर्नेल आर्किटेक्चर". Archived from the original on 2011-06-21.
  43. 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
  44. The Barrelfish operating system, http://www.barrelfish.org/.
  45. Ball: Embedded Microprocessor Designs, p. 129
  46. Hansen 2001 (os), pp.17–18
  47. "C.ACM यूनिक्स पेपर का BSTJ संस्करण". bell-labs.com. Archived from the original on 2005-12-30. Retrieved 2006-08-17.
  48. Corbató, F. J.; Vissotsky, V. A. मल्टिक्स सिस्टम का परिचय और अवलोकन. 1965 Fall Joint Computer Conference. Archived from the original on 2011-07-09.
  49. 49.0 49.1 "एकल यूनिक्स विशिष्टता". The open group. Archived from the original on 2016-10-04. Retrieved 2016-09-29.
  50. "यूनिक्स का बदला". asymco.com. 29 September 2010. Archived from the original on 9 November 2010. Retrieved 2 October 2010.
  51. Wheeler, David A. (October 12, 2004). "Linux कर्नेल 2.6: यह अधिक मूल्य का है!".
  52. 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.
  53. Singh, Amit (December 2003). "एक्सएनयू: कर्नेल". Archived from the original on 2011-08-12.
  54. "विंडोज - माइक्रोसॉफ्ट विंडोज 10 होम और प्रो ओएस, लैपटॉप, पीसी, टैबलेट और अधिक के लिए आधिकारिक साइट". windows.com. Archived from the original on 2011-08-20. Retrieved 2019-03-24.
  55. "L4 माइक्रोकर्नेल परिवार - सिंहावलोकन". os.inf.tu-dresden.de. Archived from the original on 2006-08-21. Retrieved 2006-08-11.
  56. "Fiasco माइक्रोकर्नेल - सिंहावलोकन". os.inf.tu-dresden.de. Archived from the original on 2006-06-16. Retrieved 2006-07-10.
  57. Zoller (inaktiv), Heinz (7 December 2013). "L4Ka - L4Ka प्रोजेक्ट". www.l4ka.org. Archived from the original on 19 April 2001. Retrieved 24 March 2019.
  58. "क्यूएनएक्स ऑपरेटिंग सिस्टम". blackberry.qnx.com. Archived from the original on 2019-03-24. Retrieved 2019-03-24.


स्रोत


अग्रिम पठन


इस पेज में लापता आंतरिक लिंक की सूची

  • संरक्षण की अंगूठी
  • स्मृति सुरक्षा
  • अंतःप्रक्रम संचार
  • सी (प्रोग्रामिंग भाषा)
  • पदानुक्रमित सुरक्षा डोमेन
  • क्षमता-आधारित संबोधन
  • पेज टेबल
  • भाषा आधारित सुरक्षा
  • भाषा आधारित प्रणाली
  • जेएक्स (ऑपरेटिंग सिस्टम)
  • ताला (कंप्यूटर विज्ञान)
  • परमाणुता (प्रोग्रामिंग)
  • संदेश देना
  • साझा मेमोरी (इंटरप्रोसेस संचार)
  • दुरस्तह प्रकिया कॉल
  • ब्रिनच हैनसेन
  • तंत्र और नीति का पृथक्करण
  • प्रति ब्रिन्च हैनसेन
  • संकर गिरी
  • सी मानक पुस्तकालय
  • उच्च स्तरीय भाषा
  • वितरित प्रणाली
  • समय बताना
  • पहुँच नियंत्रण
  • स्मृति पदानुक्रम
  • UNIX- जैसे
  • डेटा परिवर्तन
  • फाइल प्रबंधन
  • सब कुछ एक फाइल है
  • कोड की स्रोत पंक्तियाँ
  • क्लासिक मैक ओएस
  • परिचालन लागत वातावरण
  • विंडोज एनटी की वास्तुकला
  • एक्सेप्शन हेंडलिंग
  • राज्य (कंप्यूटर विज्ञान)
  • करनेगी मेलों विश्वविद्याल
  • स्व-चिकित्सा (कंप्यूटर विज्ञान)
  • ऑपरेटिंग सिस्टम कर्नेल की तुलना

बाहरी संबंध