आपने "कर्नेल" या "उपयोगकर्ता" मोड में चल रहे अनुप्रयोगों के बारे में सुना होगा। जब वे अपना काम करते हैं तो ऑपरेटिंग सिस्टम कैसे काम करते हैं, यह सब नीचे है। एक बार जब आप इसे समझ लेते हैं, तो उपयोगकर्ता मोड और कर्नेल मोड के बीच अंतर को समझना आसान हो जाता है।
यह समझना कि एक ऑपरेटिंग सिस्टम क्या करता है
एक कंप्यूटर में हार्डवेयर, इलेक्ट्रॉनिक घटक और सॉफ्टवेयर होते हैं, उस हार्डवेयर द्वारा निष्पादित कंप्यूटर कोड। लेकिन जो बात कम स्पष्ट हो सकती है वह यह है कि वे एक साथ कैसे काम करते हैं।
कंप्यूटर का सबसे आवश्यक तत्व बिट या "बाइनरी डिजिट" है। कंप्यूटर जो कुछ भी करता है उसे इकाई और शून्य के रूप में दर्शाया जाता है। विभिन्न कंप्यूटर घटक अलग-अलग तरीकों से बिट्स का प्रतिनिधित्व करते हैं। एक सीपीयू में, सूक्ष्म ट्रांजिस्टर या तो चालू या बंद होने के द्वारा एक और शून्य का प्रतिनिधित्व करते हैं। उन ट्रांजिस्टरों को तार्किक संरचनाओं में व्यवस्थित किया जाता है, जिन्हें लॉजिक गेट कहा जाता है।
इलेक्ट्रॉनिक कंप्यूटर मेमोरी में, बिट्स को मेमोरी सेल्स द्वारा दर्शाया जाता है, जिनका चार्ज या तो एक निश्चित सीमा से ऊपर या नीचे होता है। एक यांत्रिक हार्ड ड्राइव पर, बिट्स को एक कताई प्लेट पर मापा गया चुंबकीय उतार-चढ़ाव के रूप में दर्शाया जाता है। ऑप्टिकल डिस्क पर, गड्ढे और भूमि जो लेजर प्रकाश को प्रतिबिंबित करती है या नहीं करती है, वही काम करती है।
कोई फर्क नहीं पड़ता कि बाइनरी कोड का भौतिक प्रतिनिधित्व कैसे प्राप्त किया जाता है, आप अंततः सभी उपभोक्ता कंप्यूटर घटकों को इस कच्चे मशीन कोड में कम कर सकते हैं।
तो आप कंप्यूटर के मानव-अनुकूल इंटरफेस से कंप्यूटर में ही कच्ची, निम्न-स्तरीय प्रक्रियाओं तक कैसे जाते हैं? यहीं पर ऑपरेटिंग सिस्टम आता है। यह सीधे कंप्यूटर के हार्डवेयर को नियंत्रित करता है।
यह सॉफ़्टवेयर उन सभी अनुप्रयोगों (और इसलिए उपयोगकर्ता) को मशीन कोड निर्देशों में अनुवाद करता है जो सीपीयू और अन्य घटक समझते हैं। इस प्रक्रिया में सबसे महत्वपूर्ण सॉफ्टवेयर कर्नेल है।
कर्नेल क्या है?
कर्नेल, जैसा कि नाम से पता चलता है, ऑपरेटिंग सिस्टम का मूल है। कर्नेल एक सॉफ्टवेयर है जो रैम में रहता है और कंप्यूटर जो कुछ भी करता है उसे निर्देशित करता है। जब कुछ स्मृति में लिखा जाता है, तो वह कर्नेल होता है जो निष्पादन को निर्देशित करता है।
कर्नेल जानता है कि GPU और नेटवर्क कार्ड जैसे हार्डवेयर के साथ कैसे इंटरफेस करना है, लेकिन यह नहीं जानता कि कंप्यूटर उद्योग में सामान्य मानकों पर भरोसा करते हुए उन्हें अपनी पूरी क्षमता से कैसे संचालित किया जाए।
हार्डवेयर ड्राइवर यहां खेल में आते हैं। ड्राइवर आपके ऑपरेटिंग सिस्टम को बताते हैं कि विशिष्ट घटकों के साथ कैसे काम करना है, इसलिए आपको एनवीडिया और एएमडी जीपीयू के लिए अलग-अलग ड्राइवरों की आवश्यकता है, उदाहरण के लिए।
सही ड्राइवरों से लैस, कर्नेल कंप्यूटर के भीतर अंतिम अधिकार है, जिसमें ऐसे काम करना शामिल है जो डेटा को विनाशकारी रूप से नष्ट कर सकते हैं।
एप्लिकेशन प्रोग्रामिंग इंटरफेस (एपीआई) की भूमिका
MS-DOS के दिनों में, सॉफ़्टवेयर डेवलपर्स को अपना सॉफ़्टवेयर विशेष रूप से उपयोगकर्ता के हार्डवेयर के लिए लिखना पड़ता था। MS-DOS सिस्टम पर इसका सबसे कुख्यात उदाहरण साउंड कार्ड ड्राइवर थे।
किसी दिए गए वीडियो गेम को सबसे लोकप्रिय कार्ड (साउंड ब्लास्टर, एड-लिब, ग्रेविस अल्ट्रासाउंड, आदि) का समर्थन करना होगा और आशा है कि अधिकांश खिलाड़ी कवर किए गए थे। आज, चीजें बहुत अलग तरह से काम करती हैं, एपीआई के लिए धन्यवाद।
Microsoft DirectX एक बेहतरीन उदाहरण है। यदि आप गहराई से स्पष्टीकरण चाहते हैं, तो देखें कि DirectX क्या है और यह महत्वपूर्ण क्यों है? हालांकि, सबसे महत्वपूर्ण बात यह जानना है कि एपीआई सॉफ्टवेयर डेवलपर्स के लिए GPU जैसे घटकों से हार्डवेयर संसाधनों के लिए पूछने के लिए एक मानक तरीका प्रदान करता है। इसके अतिरिक्त, हार्डवेयर निर्माताओं को केवल यह सुनिश्चित करना चाहिए कि उनके उत्पाद DirectX का अनुपालन करते हैं ताकि किसी भी संगत सॉफ़्टवेयर के साथ पूर्ण संगतता सुनिश्चित हो सके।
एपीआई अपने हार्डवेयर ड्राइवरों के साथ सॉफ्टवेयर अनुप्रयोगों और निम्न-स्तरीय कर्नेल के बीच अनुवाद की एक परत प्रदान करते हैं। हां, यह थोड़ा प्रदर्शन दंड के साथ आता है। फिर भी, आधुनिक कंप्यूटरों पर, यह नगण्य है, और यह कई प्रकार के लाभों के साथ आता है, जहां हम अंततः उपयोगकर्ता मोड और कर्नेल मोड में आते हैं।
उपयोगकर्ता मोड बनाम कर्नेल मोड
आधुनिक ऑपरेटिंग सिस्टम सैकड़ों या हजारों "प्रक्रियाओं" को एक साथ चलाते हैं, गतिशील रूप से उन्हें उनकी प्राथमिकताओं और गणना शक्ति आवश्यकताओं के आधार पर आवश्यकतानुसार CPU समय देते हैं।
जब आप कोई एप्लिकेशन लॉन्च करते हैं, तो यह प्रक्रियाएं उत्पन्न करता है, और CPU उन्हें उपयोगकर्ता मोड या कर्नेल मोड में निष्पादित कर सकता है।
उपयोगकर्ता मोड में चलने वाली एक विंडोज़ प्रक्रिया के पास केवल अपने निजी वर्चुअल मेमोरी एड्रेस स्पेस और हैंडल टेबल तक पहुंच होती है। सॉफ्टवेयर इन तालिकाओं का उपयोग रैम में डेटा स्टोर करने और संसाधनों का अनुरोध करने के लिए करता है। मेमोरी या अन्य हार्डवेयर तक कोई सीधी पहुंच नहीं है, और यह ऑपरेटिंग सिस्टम पर निर्भर करता है कि वह वर्चुअल स्पेस को कंप्यूटर के वास्तविक हार्डवेयर से मैप करे।
यह कई कारणों से अच्छा है, लेकिन सबसे महत्वपूर्ण लाभ यह है कि एप्लिकेशन अपने वर्चुअल मेमोरी एड्रेस स्पेस के बाहर डेटा को अधिलेखित या परिवर्तित नहीं कर सकता है। इसके अलावा, कुछ फ़ंक्शन उपयोगकर्ता-मोड प्रक्रियाओं के लिए ऑफ-लिमिट हैं, मुख्य रूप से वे जो सिस्टम को क्रैश कर सकते हैं या डेटा को नष्ट कर सकते हैं।
जब कोई प्रक्रिया लॉन्च होती है या कर्नेल मोड में उन्नत होती है, तो उसके पास सिस्टम संसाधनों तक पूर्ण पहुंच होती है, यहां तक कि ऑपरेटिंग सिस्टम के लिए आरक्षित संसाधनों तक भी। इसलिए, सिद्धांत रूप में, यह महत्वपूर्ण डेटा को अधिलेखित कर सकता है जिसे ऑपरेटिंग सिस्टम को ठीक से चलाने की आवश्यकता है।
ट्रैप और अपवाद
यह समझना महत्वपूर्ण है कि ये दो मोड हार्डवेयर स्तर पर सीपीयू द्वारा ही लागू किए जाते हैं। यदि उपयोगकर्ता मोड में चल रहा कोई एप्लिकेशन कुछ ऐसा करने का प्रयास करता है जिसके लिए कर्नेल-मोड एक्सेस की आवश्यकता होती है, तो यह "ट्रैप" या "अपवाद" उत्पन्न करता है। ऑपरेटिंग सिस्टम तब एप्लिकेशन से निपटेगा, आमतौर पर इसे बंद करके और क्रैश लॉग उत्पन्न करके ताकि डेवलपर्स देख सकें कि जब चीजें पटरी से उतर गईं तो मेमोरी में क्या हुआ।
कर्नेल मोड के खतरे:मौत की नीली स्क्रीन
यदि आपने कभी ब्लू स्क्रीन ऑफ़ डेथ का अनुभव किया है (जिसने नहीं किया है?) जिसने आपके कंप्यूटर को स्विच ऑफ या रीस्टार्ट करने के लिए मजबूर किया है, तो एक अच्छा मौका है कि यह कर्नेल-मोड प्रक्रिया को दोष देने के लिए था।
जब कर्नेल मोड में एक प्रक्रिया कुछ ऐसा करती है जो उसे नहीं करना चाहिए, तो ऑपरेटिंग सिस्टम इससे उबर नहीं सकता है, और पूरा कंप्यूटर रुक जाता है। जब एक उपयोगकर्ता-मोड प्रक्रिया खराब हो जाती है, केवल एप्लिकेशन क्रैश हो जाता है, और शेष सॉफ़्टवेयर और ऑपरेटिंग सिस्टम बिना किसी समस्या के चल सकता है।
यह एक ऐसा क्षेत्र है जहां एपीआई एक आवश्यक भूमिका निभाते हैं क्योंकि यह एपीआई कर्नेल-मोड विशेषाधिकारों के लिए पूछ रहा है। उपयोक्ता-मोड अनुप्रयोग अनिवार्य रूप से उन अनुरोधों को प्रत्यायोजित करते हैं जिनके लिए एपीआई को कर्नेल-मोड विशेषाधिकारों की आवश्यकता होती।
यही कारण है कि कर्नेल-मोड आमतौर पर केवल निम्न-स्तरीय सिस्टम प्रक्रियाओं को दिया जाता है जिन्हें सीधे कंप्यूटर के हार्डवेयर तक पहुंचने की आवश्यकता होती है। आमतौर पर, इस विशेषाधिकार को एक प्रक्रिया तक बढ़ा दिया जाता है क्योंकि इसे उपयोगकर्ता मोड की तुलना में अधिक प्रदर्शन की आवश्यकता होती है। कुछ सीपीयू निर्देश केवल कर्नेल मोड में काम करते हैं, इसलिए यदि किसी प्रक्रिया को उन कार्यों का उपयोग करने की आवश्यकता होती है, तो इसे ऊंचा करना होगा।
अगर आपको मौत की ब्लू स्क्रीन से परेशानी हो रही है, तो विंडोज 10 के लिए हमारी ब्लू स्क्रीन ऑफ डेथ ट्रबलशूटिंग गाइड पढ़ना सुनिश्चित करें!