- Realtime Linux अब आधिकारिक रूप से kernel का हिस्सा बन गया है, इसलिए अब real-time operating system (RTOS) के बिना भी "real-time Linux" का उपयोग संभव होगा
- अगर आप audio equipment, industrial welding laser, या Mars rover जैसी प्रणालियों में "real-time Linux" इस्तेमाल करना चाहते हैं, तो यह विकल्प लंबे समय से मौजूद था (यह मानते हुए कि आप QNX जैसे विकल्पों का उपयोग नहीं कर रहे हैं)
- universities ने 1990 के दशक के उत्तरार्ध से अपने स्वयं के real-time kernel बनाना शुरू कर दिया था
- PREEMPT_RT नाम का patch set कम-से-कम 2005 से मौजूद है
- real-time work के कुछ पहलू, जैसे NO_HZ, बहुत पहले mainline kernel में आ गए थे, जिससे वे data center, cloud computing, या बहुत सारे CPU वाले किसी भी सिस्टम में उपयोग योग्य हो गए
PREEMPT_RT का mainline में विलय
- 6.12 kernel में PREEMPT_RT के mainline में merge होने की संभावना बहुत अधिक है
- Linus Torvalds के Open Source Summit Europe में शामिल होने के दौरान अंतिम मंजूरी दी गई
- Torvalds ने
printk के लिए मूल code लिखा था, जो एक debugging tool है जो यह पता लगा सकता है कि processes ठीक किस क्षण टकराते हैं, लेकिन साथ ही ऐसी latency जोड़ता है जो real-time computing के खिलाफ जाती है
- Phoronix blog real-time mainlining के लिए महत्वपूर्ण thread/atomic console support हेतु
printk changes के साथ-साथ PREEMPT_RT की kernel में प्रगति को track करता रहा है
Desktop Linux पर असर? बहुत कम
- advanced audio production या replication से आगे (और वह भी विवाद से परे नहीं), real-time kernel Windows को तेज़ नहीं करेगा और न ही programs को तेज़ बनाएगा
- लेकिन real-time Linux द्वारा दी जाने वाली guaranteed execution और worst-case latency उन systems के लिए बहुत उपयोगी है जो automotive brakes की निगरानी करते हैं, CNC machines को निर्देशित करते हैं, और complex multi-CPU systems को नियंत्रित करते हैं
- PREEMPT-RT को mainline kernel में शामिल करने से real-time systems का maintenance आसान होगा, क्योंकि tree के बाहर के patches को manage करने की ज़रूरत नहीं रहेगी
professional real-time OS solution providers पर प्रभाव
- Ubuntu ने 2023 में अपने distribution का real-time version देना शुरू किया था, लेकिन इसके लिए Ubuntu Pro subscription आवश्यक था
- Ubuntu robotics, automation, embedded Linux और अन्य real-time आवश्यकताओं के लिए fixes, patches, module integration, और testing प्रदान करते हुए अपना real-time release दे रहा था
- अब तक mission-critical systems के लिए professional real-time OS solution providers के लिए स्थिति अलग रही है, लेकिन आगे यह बदल सकती है
Linus Torvalds का दृष्टिकोण
- 2006 के Kernel Summit में Torvalds ने कहा था, "Linux से laser को control करना पागलपन है, लेकिन इस कमरे में हर व्यक्ति अपने-अपने तरीके से पागल है"
- उन्होंने यह भी कहा, "अगर आप Linux का उपयोग करके industrial welding laser को control करना चाहते हैं, तो PREEMPT_RT का उपयोग करने में मुझे कोई समस्या नहीं दिखती"
- लगभग 18 साल बाद, Torvalds, kernel team, और real-time के लंबे समय से maintainer और champion Steven Rostedt ने ऐसे कामों को और आसान बना दिया है
GN⁺ की राय
- real-time Linux का mainline में विलय Linux के उपयोग-क्षेत्र को और व्यापक करेगा और इसे विभिन्न क्षेत्रों में उपयोग योग्य बनाएगा
- खासकर उन industrial environments, embedded systems, और robotics जैसे क्षेत्रों में जहाँ real-time behavior महत्वपूर्ण है, वहाँ Linux के और व्यापक उपयोग की संभावना है
- हालांकि real-time Linux अपनाते समय hardware compatibility, system stability, और development complexity जैसे पहलुओं पर विचार करना होगा
- QNX, VxWorks, और INTEGRITY जैसे मौजूदा real-time OS भी अब भी अपने-अपने क्षेत्रों में प्रतिस्पर्धी हैं, इसलिए स्थिति के अनुसार सही विकल्प चुनना होगा
- आगे mainline में real-time Linux शामिल होने से development ecosystem और सक्रिय होगा, और विभिन्न hardware व software के support का दायरा बढ़ने की उम्मीद है
4 टिप्पणियां
यह अच्छा होता अगर इसमें कम-से-कम संक्षेप में यह बताया गया होता कि real-time operating system क्या है, PREEMPT_RT क्या है, और उसका real-time operating system से क्या संबंध है। विवरण लगभग न के बराबर है, इसलिए थोड़ा अफ़सोस होता है :(
Linux और Real-Time Operating System (RTOS) के बीच मुख्य अंतर real-time क्षमता और deterministic behavior में है। यह अंतर इस बात पर बड़ा प्रभाव डालता है कि सिस्टम को कितनी समय-सीमा के भीतर और कितनी सटीकता से प्रतिक्रिया देनी है, और इससे यह समझने में मदद मिलती है कि किस स्थिति में कौन-सा OS उपयुक्त है।
Linux: यह आमतौर पर संशोधित Linux kernel पर आधारित operating system है, जिसका उपयोग विभिन्न embedded hardware पर किया जाता है। यह user-friendly है और networking, file system, driver आदि जैसी कई सुविधाएँ प्रदान करता है, इसलिए जटिल applications के लिए उपयुक्त है।
RTOS (Real-Time Operating System): यह ऐसा operating system है जो यह सुनिश्चित करता है कि कार्य एक निर्धारित समय के भीतर पूरे हों। RTOS का उपयोग मुख्य रूप से उन क्षेत्रों में होता है जहाँ real-time प्रतिक्रिया महत्वपूर्ण होती है, जैसे industrial automation, medical equipment, automotive control systems आदि।
Linux की विशेषताएँ
Non-deterministic response time: Linux kernel मुख्य रूप से throughput और efficiency पर केंद्रित होकर डिज़ाइन किया गया है, इसलिए यह सटीक रूप से अनुमान लगाना संभव नहीं होता कि कोई task कब चलेगा। इसका कारण यह है कि scheduler अलग-अलग priority वाले tasks को manage करता है, और I/O operations, memory management जैसी जटिल प्रक्रियाएँ भी इसे प्रभावित करती हैं।
Preemption (preemptive interruption) की सीमाएँ: सामान्य Linux kernel कुछ real-time सुविधाएँ देता है, लेकिन kernel के सभी कार्यों को तुरंत रोका नहीं जा सकता। खासकर, जब kernel लंबे समय तक interrupts पर प्रतिक्रिया नहीं देता या किसी महत्वपूर्ण कार्य में व्यस्त रहता है, तब दूसरे tasks में देरी हो सकती है।
Latency में परिवर्तनशीलता: विभिन्न system tasks और multitasking environment में latency अनियमित रूप से बदल सकती है। यह network stack processing, disk I/O और अन्य कई कारकों से प्रभावित हो सकती है।
Real-time patch (PREEMPT-RT): real-time response बेहतर करने के लिए PREEMPT-RT patch लागू करके kernel की real-time क्षमता बढ़ाई जा सकती है। हालांकि, फिर भी यह RTOS की तरह पूरी तरह predictable response की गारंटी नहीं देता।
RTOS की विशेषताएँ
Deterministic response time: RTOS को इस तरह डिज़ाइन किया जाता है कि वह निश्चित समय के भीतर task पूरा होने की गारंटी दे। चूँकि कार्य निर्धारित समय के भीतर हर हाल में किया जाता है, इसलिए इसकी प्रतिक्रिया बहुत consistent और predictable होती है।
तेज़ interrupt handling: RTOS interrupts को तेज़ी से और प्राथमिकता के साथ process करता है, और अधिकांश स्थितियों में महत्वपूर्ण tasks को जल्दी संभालने के लिए interrupts को प्राथमिकता देता है। इससे hard real-time constraints पूरे किए जा सकते हैं।
छोटा और lightweight kernel: RTOS में केवल न्यूनतम आवश्यक features शामिल होते हैं, इसलिए यह बहुत हल्का होता है और task scheduling बहुत efficient रहती है। परिणामस्वरूप system load कम रहता है और कार्यों को सटीक रूप से डिज़ाइन किए गए timing के अनुसार चलाया जा सकता है।
Priority-based scheduling: task priorities स्पष्ट रूप से निर्धारित होती हैं, और उच्च priority वाले कार्यों को तुरंत process किया जा सकता है। इससे mission-critical environments में इसका उपयोग सुनिश्चित होता है।
Low Latency: RTOS बहुत कम latency के साथ real-time tasks को process करता है। जहाँ hardware स्तर पर तेज़ प्रतिक्रिया की आवश्यकता हो, वहाँ यह उपयुक्त है।
विशेषता || Linux RTOS
============================================================
Response time || non-deterministic, परिवर्तनशील deterministic, स्थिर response time की गारंटी
Priority handling || priority तो होती है, लेकिन real-time guarantee नहीं priority स्पष्ट होती है,
|| और उच्च priority tasks पहले process होते हैं
Kernel size || बड़ा और feature-rich छोटा और lightweight
Latency || network, disk I/O आदि के कारण बहुत कम, लगभग स्थिर
देरी संभव
System complexity || जटिल applications चलाने के लिए उपयुक्त सरल real-time tasks के लिए उपयुक्त
Application areas || multimedia, networking आदि industrial control, robotics, medical devices आदि
|| जटिल user interfaces
निष्कर्ष
Embedded Linux उन embedded systems के लिए उपयुक्त है जिन्हें network processing, multimedia applications और जटिल user interface की आवश्यकता होती है। real-time patch लागू करने पर real-time performance कुछ हद तक बेहतर हो सकती है, लेकिन यह RTOS जितना deterministic नहीं बनता।
RTOS समय-संवेदी mission-critical applications के लिए अनिवार्य है। जहाँ स्थिर response time की आवश्यकता हो, विशेष रूप से hardware control, industrial robots, aerospace और medical devices जैसे real-time constraints वाले environments में RTOS का उपयोग किया जाता है।
हमेशा QNX और VxWorks की वजह से सिरदर्द रहता था, लेकिन अब लगता है कि हर किसी के लिए इसे थोड़ा ज़्यादा आसानी से अपनाना संभव होगा।
Hacker News राय
कई वर्षों की मेहनत के बाद यह एक बड़ी उपलब्धि है
realtime kernel का असर देखने के लिए cyclictest utility को build और run करने की सिफारिश की गई
RT patchset के बिना 3ms latency पर एक-दो instruments चलाए जा सकते हैं
2000 के दशक के मध्य में Linux को realtime काम के लिए इस्तेमाल करने की कोशिश का अनुभव साझा किया गया
पूछा गया कि realtime programming कैसे की जाती है, इस पर कोई अच्छा resource है क्या
Torvalds ने printk का मूल code लिखा था, इस उल्लेख पर सवाल उठाया गया
यह CNC community के लिए बहुत मददगार होगा
इसे बहुत शानदार बताया गया
desktop users के लिए realtime kernel इस्तेमाल करने के नुकसानों के बारे में पूछा गया