5

चला रहा है, जबकि कर्नेल मोड और आईएसआर रूटीन के अंदर कुछ महत्वपूर्ण क्या हैं और न करें? उदाहरण के लिए -कर्नेल एक आईएसआर रूटीन

  • है संदर्भ-स्विचिंग विकलांग व्यवधान हैंडलर चलाते समय?
  • कोई संदर्भ स्विच तब हो सकता है जब कोई प्रक्रिया गंभीर
    अनुभाग में हो?
  • कर्नेल मोड मेरिट के अंदर कौन सी परिस्थितियां और बाधाओं को अक्षम करने में सक्षम हैं?

पृष्ठ-गलती पर एक प्रक्रिया स्विच कैसे हो सकता है, जहां एक प्रक्रिया डिस्क से डेटा प्राप्त करती है, लेकिन इंटरप्ट्स के अन्य अवसरों के दौरान नहीं होती है। यदि आप निष्पादन योग्य पथ को बाधित/पुनर्निर्धारित/पूर्व-खाली कर सकते हैं तो आप वर्गीकृत कैसे हो सकते हैं?

प्रक्रिया को कर्नेल मोड में या आईएसआर रूटीन को संभालने के दौरान किसी अन्य चीज को याद रखना क्या है?

उत्तर

4

संक्षेप में: कोई CONTEXT स्विच, कभी

इसका मतलब यह है:

  • नहीं पूर्वक्रय
  • mutexes पर कोई ताले (बजाय उपयोग स्पिन ताले और अपने गैर ISR समकक्षों IRQs निष्क्रिय करने के लिए spin_lock_irqsave साथ उन्हें प्राप्त सुनिश्चित) किसी भी कर्नेल में
  • कोई कॉल फ़ंक्शन जो सो सकता है (फ़ंक्शन के दस्तावेज़ों की जांच करें, कुछ फ़ंक्शंस में _cansleep वेरिएंट भी हैं)।

एक प्रक्रिया स्विच एक पृष्ठ दोष पर हो सकता है, लेकिन यह के बाद इसी ISR संसाधित किया गया है होता है। असल में एक पथ निर्धारित किया जा सकता है यदि यह एक आईएसआर नहीं है और यदि आपके पास स्पिनलॉक लॉक नहीं है। यदि आपके पास स्पिनलॉक है, तो आप रिलीज़ होने तक सोने से बचें।

चूंकि आईएसआर बहुत संयमित हैं, इसलिए आईआरक्यू का संचालन आम तौर पर आधा (जो आईएसआर संदर्भ में चलता है और महत्वपूर्ण नौकरी करता है) के बीच विभाजित होता है (जो बाद में कर्नेल थ्रेड के रूप में चलता है और जो भी करता है देरी हो सकती है) जो सो सकती है। अधिक जानकारी के लिए यह पृष्ठ देखें:

http://www.makelinux.net/ldd3/chp-10-sect-4