2012-02-22 15 views
13

मैं लिनक्स कर्नेल के लिए नौसिखिया हूँ।
मैं जानता हूँ कि दो संदर्भ
1. प्रक्रिया प्रसंग उपयोगकर्ता अंतरिक्ष में या कर्नेल अंतरिक्ष में चल देखते हैं कि,: किस संदर्भ कर्नेल थ्रेड में
2. इंटरप्ट प्रसंगलिनक्स में कर्नेल थ्रेड किस संदर्भ में चलता है?

((पूर्व के लिए सिस्टम कॉल का हिस्सा है) किसी भी उपयोगकर्ता थ्रेड से संबंधित नहीं, पूर्व के लिए: फ्लश कार्य) चलता है?

क्या लिनक्स कर्नेल में प्रक्रिया और इंटरप्ट संदर्भ के अलावा कोई अन्य संदर्भ है?

उत्तर

15

कर्नेल थ्रेड कर्नेल स्पेस में process contexts में चलाया जाता है। हालांकि कुछ कर्नेल धागे हैं जो इंटरप्ट को भी संभालते हैं। उन्हें threaded interrupt handlers कहा जाता है। लेकिन वे अभी भी प्रक्रिया संदर्भ में भागते हैं!

Here 2 संदर्भों के बीच महत्वपूर्ण अंतर का एक उत्कृष्ट स्पष्टीकरण है!

यहां एक ऐसा है जो आपको और समझने में मदद करेगा!

What context does the scheduler code run in?

जहाँ तक मुझे पता है, इस प्रक्रिया और बीच में के रूप में केवल 2 संदर्भों कर रहे हैं।

+6

अनिवार्य रूप से गिरी धागे की * बिंदु * कर्नेल प्रक्रिया के संदर्भ में कोड निष्पादित करने के लिए अनुमति देने के लिए है, लेकिन सीधे नहीं एक विशेष यूज़रस्पेस की ओर से प्रक्रिया। – caf

+0

@ पवन: थ्रेडेड इंटरप्ट हैंडलर (सॉफ्टक्रैक) इंटरप्ट संदर्भ (आप सो नहीं सकते हैं) की विशेषताओं को प्रदर्शित करते हैं, इसलिए दावा करते हैं कि वे प्रक्रिया संदर्भ हैं विरोधाभासी है। –

+0

@ jorgensen यदि आप यहां जीपीआईओ दस्तावेज पढ़ते हैं- http: //www.kernel.org/doc/Documentation/gpio.txt, यह कहता है- 'ऐसे जीपीआईओ तक पहुंचने के लिए एक संदर्भ की आवश्यकता होती है जो कि सो सकती है, उदाहरण के लिए एक थ्रेडेड आईआरक्यू हैंडलर' तो इसका तात्पर्य है कि थ्रेडेड इंटरप्ट हैंडलर सही सो सकते हैं? आप softirqs के बारे में सही हैं। लेकिन वे एकमात्र तरह के थ्रेडेड इंटरप्ट हैंडलर नहीं हैं? या, यहां तक ​​कि, क्या यह वास्तव में softirqs को संदर्भित करता है जब वे थ्रेडेड इंटरप्ट हैंडलर कहते हैं? –

0

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

1

कुछ हद तक राज्य हैं-कुछ दूसरों के विशेषज्ञ हो सकते हैं। http://www.kernel.org/doc/htmldocs/kernel-hacking.html भी देखें।

  • एनएमआई संदर्भ (in_nmi())
  • कठिन बाधा संदर्भ (in_irq())
  • नरम बाधा संदर्भ (in_softirq())
  • (tasklet, टाइमर, और workqueue संदर्भों)
  • परमाणु संदर्भ (in_atomic())। संभावित रूप से प्रवेश द्वार, दूसरों के बीच, spin_lock हैं।
  • RCU संदर्भ, उदाहरण के लिए rcu_read_lock के साथ प्रवेश
  • उपयोगकर्ता प्रसंग
संबंधित मुद्दे