जवाबों:
कर्नेल मोड
इस मोड में चलने वाले प्रोग्राम में अंतर्निहित हार्डवेयर की पूरी पहुंच है। यह किसी भी सीपीयू अनुदेश को निष्पादित कर सकता है, किसी भी मेमोरी पते तक पहुंच सकता है और अनिवार्य रूप से वह कुछ भी कर सकता है जो वह चाहता है।
इस मोड में उपयोगकर्ता मोड कोड निष्पादित ओएस के एपीआई के माध्यम से हार्डवेयर संशोधन के लिए प्रतिबंधित है। यह नहीं कर सकते हैं सीधे हार्डवेयर तक सब पर ।
यहां दिलचस्प बात यह है कि आम आर्किटेक्चर पर, यह हार्डवेयर के माध्यम से लागू किया जाता है - न केवल ओएस। विशेष रूप से, x86 वास्तुकला में सुरक्षा के छल्ले हैं ।
इस तरह के अलगाव का बड़ा फायदा यह है कि जब कोई प्रोग्राम उपयोगकर्ता मोड में चल रहा है, तो यह हमेशा घातक नहीं होता है। वास्तव में, आधुनिक प्रणालियों पर, यह आमतौर पर नहीं है।
की जाँच करें जेफ के writeup। यह उसका सामान्य अच्छा सामान है।
संक्षिप्त उत्तर है: यह सिर्फ आपको बताता है कि कार्यक्रम अपना समय कहां बिता रहे हैं।
लंबे उत्तर के लिए, मैं इसे दो चरणों में समझाता हूँ। प्रथम:
1. कर्नेल मोड में प्रवेश करना
प्रत्येक नियमित कोड जो आप लिखते हैं, "उपयोगकर्ता मोड" में चलता है।
कार्यक्रम उनके लिए आम कार्यों को करने के लिए पुस्तकालयों का उपयोग कर सकते हैं। यह यूजर मोड कोड भी है।
कुछ बिंदु पर, प्रोग्राम को सिस्टम से एक कोर फ़ंक्शन की आवश्यकता हो सकती है। उदाहरण के लिए:
यह आवश्यक - हार्डवेयर के करीब - कार्यक्षमता कर्नेल का हिस्सा है। यह आपके कंप्यूटर पर सब कुछ के पीछे केंद्रीय कार्यक्रम है। यह कार्य करने के लिए आवश्यक सभी कार्यक्रमों का प्रबंधन करता है।
कर्नेल में एक फ़ंक्शन का उपयोग करने के लिए, प्रोग्राम निष्पादन पथ शाब्दिक रूप से उपयोगकर्ता मोड से कर्नेल कोड तक एक छलांग लगाता है। कर्नेल यह काम करता है, और निष्पादन मोड को वापस उपयोगकर्ता मोड में ले जाता है।
जब कोई प्रोग्राम कर्नेल मोड में बहुत समय बिताता है, तो अक्सर इसका मतलब है कि यह हार्डवेयर से संबंधित बहुत सारी गतिविधि कर रहा है। उदाहरण के लिए, डिस्क चाहता है या वीडियो स्ट्रीमिंग। हार्डवेयर में खराबी भी हो सकती है; प्रसंस्करण धीमा कर रहा है और कर्नेल अंतरिक्ष में समय की एक असामान्य राशि खर्च करने के लिए कार्यक्रम का कारण बनता है।
2 अंतर
कर्नेल स्थान में कोड उच्च प्रदर्शन है। कर्नेल के अन्य भाग इसे सीधे कॉल कर सकते हैं, और कोड में सिस्टम के हर संसाधन तक सीधी पहुंच है, बिना किसी सीमा के जाँच के। कर्नेल / उपयोगकर्ता मोड के बीच स्विच करना भी एक महंगा ऑपरेशन है, जिसे कर्नेल कोड में सब कुछ चलाने से पूरी तरह से बचा जाता है।
कर्नेल के अंदर हालांकि, सुरक्षा जाँच, क्रैश से सुरक्षा, या मेमोरी के गलत हिस्सों पर लिखने के लिए बहुत जगह नहीं है। ये ऐसी सेवाएँ हैं जो कर्नेल अन्य कार्यक्रमों को प्रदान कर सकता है। यह विश्वास करता है कि कार्यक्रम अलग-अलग दिखते हैं (प्रोग्राम एक आभासी, सैंडबॉक्स / प्रतिबंधित वातावरण में रहते हैं) और इसलिए प्रोग्रामों के अंदर / बाहर आने वाली सभी चीजों का अनुवाद और रखवाली की जा सकती है।
कर्नेल में स्वयं को अधिक सुरक्षा नहीं मिल सकती क्योंकि इसकी रक्षा के लिए इसके पीछे कुछ भी नहीं है। यह प्रणाली का दिल है, और जब वह रुक जाता है, तो सब कुछ समाप्त हो जाता है। आपको एक कर्नेल घबराहट, या विंडोज पर, प्रसिद्ध बीएसओडी मिलता है।
यह कर्नेल आधारित कोड का जोखिम भी है, और कम प्रदर्शन आवश्यकताओं के साथ अधिक सबसिस्टम को उपयोगकर्ताओं के लिए स्थानांतरित किया जा रहा है। हालाँकि, आवश्यक हार्डवेयर संबंधित भाग आमतौर पर कर्नेल कोड होते हैं, जो जल्द ही बदलने वाले नहीं हैं।
यह अंतर है कि वर्तमान में निष्पादित कोड को हार्डवेयर के विभिन्न टुकड़ों के साथ सीधे बातचीत करने की अनुमति है या नहीं। कर्नेल मोड कोड डिवाइस बसों को लिख सकता है, मेमोरी मैपिंग बदल सकता है, चल रही प्रक्रियाओं को स्विच कर सकता है, और इसके आगे। उपयोगकर्ता मोड गणना कर सकता है, और यह दुनिया के बाकी हिस्सों के साथ बातचीत करने के लिए सिस्टम कॉल कर सकता है।