असल में, मैं आरपीजे से सहमत हूं। कोड उपयोगकर्ता-स्थान में होना चाहिए, जब तक कि यह वास्तव में आवश्यक न हो।
लेकिन, आपके प्रश्न पर जोर देने के लिए, किस स्थिति में?
कुछ लोग दावा करते हैं कि ड्राइवर को कर्नेल में होना चाहिए, जो सत्य नहीं है। कुछ ड्राइवर समय-समय पर संवेदनशील नहीं होते हैं, वास्तव में बहुत सारे ड्राइवर इस तरह होते हैं।
उदाहरण के लिए, फ़्रेमर, आरटीसी टाइमर, i2c डिवाइस, आदि। उन ड्राइवरों को आसानी से उपयोगकर्ता स्थान पर ले जाया जा सकता है। यहां तक कि कुछ फ़ाइल-सिस्टम भी हैं जो उपयोगकर्ता-स्थान में लिखे गए हैं।
आपको कर्नेल स्पेस पर जाना चाहिए जहां ओवरहेड, उदाहरण के लिए। उपयोगकर्ता-कर्नेल स्वैप, आपके कोड के लिए ठीक से काम करने के लिए अस्वीकार्य हो जाता है।
लेकिन इससे निपटने के लिए बहुत सारे तरीके हैं। उदाहरण के लिए,/dev/mem आपकी भौतिक स्मृति तक पहुंचने का एक अच्छा तरीका प्रदान करता है, जैसे आप इसे कर्नेल स्पेस से करते हैं।
जब लोग आरटीओएस जाने के बारे में बात करते हैं, तो मैं आमतौर पर संदेह करता हूं। इन दिनों, प्रोसेसर इतना शक्तिशाली है, कि ज्यादातर समय, वास्तविक समय पहलू नगण्य हो जाता है।
लेकिन यहां तक कि, मान लें कि आप सोनेट से बात कर रहे हैं, और आपको 50ms के भीतर सुरक्षा स्विचिंग करने की आवश्यकता है (वास्तव में भी कम, क्योंकि 50 मिमी बाधा पूरी अंगूठी पर लागू होती है), आप अभी भी स्विचिंग कर सकते हैं तेज़, अगर आपका हार्डवेयर इसका समर्थन करता है।
इन दिनों बहुत सारे फ़्रेमर आपको हार्डवेयर समर्थन दे सकते हैं जो आपको लिखने की आवश्यकता को कम कर देता है। आपका काम मूल रूप से जितनी जल्दी हो सके बाधा का जवाब देता है। और लिनक्स बिल्कुल बुरा नहीं है। मुझे मिली इंटरप्ट विलंबता कम 1ms थी, भले ही मेरे पास कई अन्य इंटरप्ट चल रहे हों (उदाहरण के लिए आईडीई, ईथरनेट इत्यादि)।
और यदि यह अभी भी पर्याप्त नहीं है, तो हो सकता है कि आपका हार्डवेयर डिज़ाइन गलत हो। हार्डवेयर पर कुछ चीजें बेहतर रहती हैं। और जब मैंने हार्डवेयर कहा, मेरा मतलब एएसआईसी, एफपीजीए, नेटवर्क प्रोसेसर, या अन्य उन्नत तर्क है।
सुरक्षा मुद्दों का उल्लेख नहीं करना है (क्या आपका कोड 100% हैकिंग सबूत है? मामूली बग एक विशाल बैक-दरवाजा बन सकता है!), संपार्श्विक क्षति के मुद्दों (एक सूक्ष्म बग आपके ऐप से कहीं अधिक प्रभावित हो सकता है) इत्यादि। –