2012-02-11 14 views
27

मुझे यह प्रश्न पूछने में खेद है कि यह पहले ही पूछे जा चुके हैं लेकिन मुझे उनसे स्पष्टता नहीं मिली। तो मैं निम्न संबंधित सवाल पूछ रहा हूँ प्रणाली कॉल (मोड स्विच) और संदर्भ स्विचसिस्टम कॉल और संदर्भ स्विच

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

  • इसका क्या अर्थ है कि जब सिस्टम कॉल को "उपयोगकर्ता संदर्भ" में कर्नेल निष्पादित किया जाता है।

  • विकिपीडिया लेख के अनुसार: http://en.wikipedia.org/wiki/Context_switch

एक संदर्भ स्विच सिस्टम कॉल के लिए आवश्यक नहीं है, लेकिन यह ऑपरेटिंग सिस्टम पर निर्भर करता है और एक संदर्भ स्विच एक प्रणाली कॉल के दौरान हो सकता है। मैं सोच रहा हूं कि मामले में क्या होगा जब संदर्भ स्विच सिस्टम कॉल के समय होता है। कोई उदाहरण?

उत्तर

51

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

एक पूर्ण संदर्भ स्विच में इन दोनों को स्वैप करना शामिल होगा, पुराने वर्तमान धागे/प्रक्रिया थोड़ी देर के लिए दूर हो जाती है और नई वर्तमान धागा/प्रक्रिया थोड़ी देर के लिए आती है। यह थ्रेड/प्रक्रिया शेड्यूलिंग का सार है।

अब, सिस्टम कॉल बहुत अलग हैं wr.r.t. एक दूसरे।

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

अब एक सिस्टम कॉल पर विचार करें जिसमें कॉलर को अवरुद्ध करना शामिल है जब तक कि कुछ घटना या डेटा की उपलब्धता न हो। म्यूटेक्स और रीडिंग फाइलों को मैनिपुलेट करना ऐसी सिस्टम कॉल के उदाहरण होंगे। इस मामले में कर्नेल को कॉलर के पूर्ण संदर्भ को सहेजने के लिए मजबूर किया जाता है, इसे अवरुद्ध के रूप में चिह्नित करें ताकि शेड्यूलर उस घटना या डेटा तक पहुंच न सके, और किसी अन्य तैयार थ्रेड/प्रक्रिया के संदर्भ को लोड न कर सके, ताकि यह चल सके ।

इस तरह सिस्टम कॉल संदर्भ स्विच से संबंधित हैं।

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

यदि प्रक्रियाओं में व्यक्तिगत पता रिक्त स्थान हैं, तो पता स्थान प्रक्रिया संदर्भ का हिस्सा भी है।इसलिए, जब कर्नेल को किसी प्रक्रिया की स्मृति (फ़ाइल डेटा या नेटवर्क पैकेट पढ़ने/लिखने के लिए) तक पहुंचने की आवश्यकता होती है, तो उसे 'पता स्थान', IOW की प्रक्रिया तक पहुंच होनी चाहिए, यह इसके संदर्भ में होना चाहिए (यह नहीं है मतलब, हालांकि, कर्नेल को एक विशिष्ट पता स्थान में स्मृति तक पहुंचने के लिए पूर्ण संदर्भ लोड करना होगा)।

क्या यह सहायक है?

+1

बहुत बढ़िया स्पष्टीकरण के लिए उपयुक्त हैं! धन्यवाद!! निश्चित रूप से सहायक :) – vjain27

+0

स्पष्टता के लिए धन्यवाद। मेरे मन में अभी भी एक बात है। यदि आने वाले प्रक्रिया पृष्ठों को बदल दिया गया था, तो उन्हें स्मृति (पृष्ठों) को स्मृति में बदलने के लिए भी लागत होगी, है ना? – zgulser

+0

@zgulser स्वाभाविक रूप से। –

-1

मोड स्विच तब होता है जब कोई उपयोगकर्ता केवल उन चीज़ों तक पहुंचना चाहता है जो कर्नेल मोड

+0

यह एक औसत टिप्पणी की तरह पढ़ता है, लेकिन एक उत्तर की तरह नहीं। उत्तर देने के दौरान कृपया कुछ * गंभीर * समय बिताएं - एक वाक्य को डंप करने के बजाय जिसमें कोई विराम चिह्न नहीं है और अच्छी तरह से पढ़ता है, कुछ विचारों को इसके पाठकों के लिए उपयोगी बनाने के किसी भी प्रयास के बिना छोड़ दिया गया। – GhostCat

संबंधित मुद्दे