Featured image of post केवल 'तेज़' होना पर्याप्त क्यों नहीं है: रीयल-टाइम ऑपरेटिंग सिस्टम (RTOS), WCET, RMS बनाम EDF शेड्यूलिंग और मार्स पाथफाइंडर प्रायोरिटी इन्वर्ज़न

केवल 'तेज़' होना पर्याप्त क्यों नहीं है: रीयल-टाइम ऑपरेटिंग सिस्टम (RTOS), WCET, RMS बनाम EDF शेड्यूलिंग और मार्स पाथफाइंडर प्रायोरिटी इन्वर्ज़न

सबसे तेज़ गेमिंग पीसी किसी यात्री विमान को क्यों नहीं उड़ा सकता? RTOS, हार्ड/फर्म/सॉफ्ट समय-उपयोगिता फलनों, वर्स्ट-केस एग्जीक्यूशन टाइम (WCET), लियू और लेलैंड (1973) के RMS (ln 2 ≈ 69.3%) व EDF (100%) प्रमेयों, तथा 1997 के नासा मार्स पाथफाइंडर प्रायोरिटी इन्वर्ज़न और प्रायोरिटी इनहेरिटेंस/सीलिंग प्रोटोकॉल (PIP/PCP) का संपूर्ण गणितीय विश्लेषण।

1. ‘तेज़ (Fast)’ और ‘रीयल-टाइम (Real-Time)’ के बीच की मौलिक खाई

आम बोलचाल में ‘रीयल-टाइम प्रोसेसिंग’ को अक्सर ‘अत्यंत तेज़ निष्पादन’ का पर्याय मान लिया जाता है। परंतु कई गीगाहर्ट्ज़ के मल्टी-कोर सुपरस्केलर प्रोसेसर से लैस कोई आधुनिक सर्वर, जो औसतन 1 मिलीसेकंड में क्वेरी का उत्तर देता है, किसी यात्री विमान के Fly-by-Wire उड़ान नियंत्रण, कार के एयरबैग या हृदय के पेसमेकर को नियंत्रित करने के लिए कभी उपयोग नहीं किया जा सकता। क्यों? क्योंकि सामान्य प्रयोजन के कंप्यूटर औसत थ्रूपुट (Average Throughput) को अधिकतम करते हैं: यदि कोई गणना $99.999\%$ बार $0.5\,\text{ms}$ में पूरी होती है, किंतु दस लाख में से एक बार कैश मिस, पेज फ़ॉल्ट या गार्बेज कलेक्शन (GC) के कारण $200\,\text{ms}$ विलंबित हो जाती है, तो विमान दुर्घटनाग्रस्त हो जाएगा या एयरबैग यात्री के टकराने के बाद खुलेगा।

डोनाल्ड गिलीज़ और हरमन कोपेट्ज़ के शास्त्रीय सूत्रानुसार, रीयल-टाइम कंप्यूटिंग का स्वयंसिद्ध सिद्धांत कहता है कि किसी प्रणाली की शुद्धता केवल परिणाम की तार्किक और अंकगणितीय शुद्धता पर ही नहीं, बल्कि उस भौतिक समय $t$ पर भी निर्भर करती है जिस पर वह परिणाम अपनी समय-सीमा (Deadline $d_i$) के सापेक्ष उत्पन्न होता है। समय-उपयोगिता फलन (Time-Utility Function, $U(t)$) के आधार पर इन्हें तीन वर्गों में बाँटा जाता है:

$$U_{\text{hard}}(t) = \begin{cases} V & (t \le d) \\ -\infty & (t > d) \end{cases}, \qquad U_{\text{firm}}(t) = \begin{cases} V & (t \le d) \\ 0 & (t > d) \end{cases}, \qquad U_{\text{soft}}(t) = \begin{cases} V & (t \le d) \\ V e^{-\alpha(t-d)} & (t > d) \end{cases}$$
  • हार्ड रीयल-टाइम (Hard Real-Time): एक भी डेडलाइन चूकना ($t > d$) विनाशकारी विफलता ($U = -\infty$, जैसे उड़ान नियंत्रण, ABS ब्रेक) का कारण बनता है। इसके लिए ऑफ़लाइन गणितीय प्रमाण अनिवार्य है।
  • फर्म रीयल-टाइम (Firm Real-Time): देरी से प्राप्त परिणाम का मूल्य शून्य ($U = 0$) होता है और उसे तुरंत त्याग दिया जाता है (जैसे तेज़ कन्वेयर बेल्ट पर विज़न सॉर्टिंग, HFT ऑर्डर निरस्तीकरण)।
  • सॉफ्ट रीयल-टाइम (Soft Real-Time): डेडलाइन $d$ के बाद उपयोगिता धीरे-धीरे घटती है (जैसे 60 fps वीडियो स्ट्रीमिंग, VoIP कॉल)।
वास्तुशिल्प आयामसामान्य प्रयोजन OS (GPOS: Linux / Windows / macOS)रीयल-टाइम OS (RTOS: VxWorks / QNX / FreeRTOS / seL4)
प्राथमिक अनुकूलन लक्ष्यऔसत थ्रूपुट और निष्पक्षता (CFS / EEVDF) को अधिकतम करनाकालिक नियतात्मकता (Determinism) और वर्स्ट-केस रिस्पॉन्स टाइम (WCRT) की गारंटी
इंटरप्ट और डिस्पैच विलंबमाइक्रोसेकंड से दसियों मिलीसेकंड (अनिश्चित लंबी-पूंछ वितरण)सैकड़ों नैनोसेकंड से कुछ माइक्रोसेकंड (सख्त $O(1)$ हार्डवेयर सीमा)
कर्नेल प्रीएम्प्टिबिलिटीनॉन-प्रीएम्प्टिबल स्पिनलॉक पथों वाला मोनोलिथिक कर्नेलपूर्णतः प्रीएम्प्टिबल कर्नेल या न्यूनतम माइक्रोकर्नेल (QNX, seL4)
मेमोरी और हार्डवेयर नियंत्रणपेज फ़ॉल्ट के साथ वर्चुअल मेमोरी, malloc, GC, पूर्ण सट्टा निष्पादनस्थैतिक विभाजन, $O(1)$ पूल, ऑन-चिप स्क्रैचपैड (TCM) और कैश लॉकिंग

2. वर्स्ट-केस एग्जीक्यूशन टाइम (WCET) विश्लेषण का दुःस्वप्न

प्रत्येक रीयल-टाइम शेड्यूलिंग सिद्धांत यह मानकर चलता है कि हमें प्रत्येक टास्क $\tau_i$ का अधिकतम संभावित निष्पादन समय (Worst-Case Execution Time, $C_i$) पहले से ज्ञात है। यहीं आधुनिक कंप्यूटर आर्किटेक्चर का सबसे बड़ा विरोधाभास सामने आता है: CPU की औसत गति बढ़ाने के लिए बनाई गई लगभग सभी हार्डवेयर तकनीकें (L1/L2/L3 कैश, ब्रांच प्रेडिक्शन, आउट-ऑफ़-ऑर्डर निष्पादन OoO, TLB, DVFS और नॉन-मास्केबल सिस्टम मैनेजमेंट इंटरप्ट SMI) WCET की पूर्वानुमेयता को पूरी तरह नष्ट कर देती हैं।

कैश से युक्त Out-of-Order पाइपलाइनों में तो टाइमिंग एनोमली (Timing Anomalies) तक देखी जाती है: किसी निर्देश का स्थानीय कैश हिट होना सट्टा पथ को साझा बस पर पहले कब्ज़ा करने दे सकता है, जिससे प्रोग्राम का कुल निष्पादन समय कैश मिस होने की तुलना में अधिक लंबा हो जाता है! इसीलिए सुरक्षा-महत्वपूर्ण प्रणालियाँ (DO-178C Level A, ISO 26262 ASIL-D) नियतात्मक स्क्रैचपैड SRAM / TCM और कैश लॉकिंग (Cache Locking) का उपयोग करती हैं, तथा कंट्रोल-फ़्लो ग्राफ़ (CFG) पर एब्स्ट्रैक्ट इंटरप्रिटेशन और इम्प्लिसिट पाथ एनुमरेशन तकनीक (IPET) द्वारा पूर्णांक रैखिक प्रोग्रामिंग (ILP) हल करके WCET की सख्त ऊपरी सीमा निकालती हैं:

$$\text{WCET} = \max \sum_{i=1}^{N} c_i x_i \quad \text{प्रतिबंध:} \quad \sum_{j} d_{j \to i} = x_i = \sum_{k} d_{i \to k} \quad (\text{प्रवाह संरक्षण और लूप सीमाएँ})$$

3. लियू और लेलैंड (1973): आवधिक शेड्यूलिंग प्रमेय (RMS बनाम EDF)

मान लीजिए एकल प्रोसेसर पर $n$ स्वतंत्र आवधिक टास्क $\Gamma = \{\tau_1, \dots, \tau_n\}$ हैं, जहाँ प्रत्येक टास्क $\tau_i = (C_i, T_i, D_i)$ (WCET $C_i$, आवर्तकाल $T_i$, अंतर्निहित डेडलाइन $D_i = T_i$) द्वारा परिभाषित है। कुल प्रोसेसर उपयोगिता (Total Utilization) है:

$$U = \sum_{i=1}^{n} \frac{C_i}{T_i}$$

1973 में सी. एल. लियू और जेम्स डब्ल्यू. लेलैंड ने स्थैतिक और गतिशील प्राथमिकताओं के ऐतिहासिक प्रमेय सिद्ध किए:

3.1 रेट मोनोटोनिक शेड्यूलिंग (RMS) और $\ln 2 \approx 69.3\%$ की सीमा

स्थिर-प्राथमिकता प्रीएम्प्टिव शेड्यूलिंग में, Rate Monotonic (RMS) नियम आवर्तकाल के व्युत्क्रमानुपात में प्राथमिकता देता है: जिस टास्क का आवर्तकाल $T_i$ जितना छोटा होगा (आवृत्ति $1/T_i$ जितनी अधिक होगी), उसकी स्थैतिक प्राथमिकता उतनी ही उच्च होगी। लियू और लेलैंड ने क्रिटिकल इंस्टेंट प्रमेय (टास्क $\tau_i$ का सबसे खराब रिस्पॉन्स टाइम तब होता है जब वह सभी उच्च-प्राथमिकता वाले टास्क के साथ $t=0$ पर एक साथ रिलीज़ होता है) और सभी स्थिर-प्राथमिकता एल्गोरिदम में RMS की इष्टतमता सिद्ध की, जिसकी न्यूनतम ऊपरी उपयोगिता सीमा है:

$$U = \sum_{i=1}^{n} \frac{C_i}{T_i} \le U_{\text{lub}}(n) = n\left(2^{1/n} - 1\right) \xrightarrow{n \to \infty} \ln 2 \approx 0.6931 \quad (69.3\%)$$

ध्यान दें: $69.3\%$ केवल एक पर्याप्त शर्त (Sufficient Condition) है, आवश्यक शर्त नहीं! यदि आवर्तकाल हार्मोनिक (Harmonic) हैं (प्रत्येक बड़ा आवर्तकाल छोटे आवर्तकाल का पूर्णांक गुणज है, जैसे $5\,\text{ms}, 10\,\text{ms}, 20\,\text{ms}$), तो RMS भी 100% उपयोगिता तक शेड्यूल कर सकता है। सामान्य टास्क समूहों के लिए जोसेफ और पांड्या (1986) का रिस्पॉन्स-टाइम विश्लेषण (RTA) फ़िक्स्ड-पॉइंट पुनरावृत्ति द्वारा सटीक आवश्यक और पर्याप्त परीक्षण ($R_i \le D_i$) प्रदान करता है:

$$R_i^{(k+1)} = C_i + \sum_{j \in hp(i)} \left\lceil \frac{R_i^{(k)}}{T_j} \right\rceil C_j$$

3.2 अर्लिएस्ट डेडलाइन फर्स्ट (EDF) और $100\%$ इष्टतमता

गतिशील-प्राथमिकता प्रीएम्प्टिव शेड्यूलिंग में, Earliest Deadline First (EDF) हर क्षण उस तैयार जॉब को सर्वोच्च प्राथमिकता देता है जिसकी निरपेक्ष डेडलाइन $d_{i,k} = r_{i,k} + D_i$ सबसे निकट है। एकल प्रोसेसर पर EDF द्वारा शेड्यूल किए जाने की आवश्यक और पर्याप्त शर्त भौतिक सीमा तक पहुँचती है:

$$U = \sum_{i=1}^{n} \frac{C_i}{T_i} \le 1.00 \quad (100\%)$$

उदाहरण: $\tau_1 = (C_1=2, T_1=5)$ और $\tau_2 = (C_2=4, T_2=7)$ के लिए कुल उपयोगिता $U = 97.14\%$ है। RMS के तहत $t=5$ पर आने वाला $\tau_{1,2}$ ($d=10$) केवल $1\,\text{ms}$ शेष बचे $\tau_{2,1}$ ($d=7$) को प्रीएम्प्ट कर देता है, जिससे $R_2 = 8 > 7$ (डेडलाइन मिस!) हो जाता है। इसके विपरीत EDF $t=5$ पर देखता है कि $d_{2,1}=7 < d_{1,2}=10$, इसलिए वह प्रीएम्पशन रोककर $\tau_{2,1}$ को $t=6 \le 7$ पर सुरक्षित पूरा कराता है!

फिर भी औद्योगिक RTOS (VxWorks, FreeRTOS, QNX, AUTOSAR) RMS/DMS को चुनते हैं क्योंकि क्षणिक ओवरलोड ($U > 1.0$) की स्थिति में EDF में विनाशकारी डोमिनो प्रभाव (Domino Effect) उत्पन्न होता है जहाँ एक लेट जॉब CPU पर कब्ज़ा कर सभी आगामी टास्क को क्रमिक रूप से विफल कर देता है, जबकि RMS ओवरलोड में भी उच्च-प्राथमिकता वाले टास्क को $100\%$ सुरक्षित रखता है और बिटमैप व CLZ निर्देश द्वारा $O(1)$ समय में चलता है।

तुलना मानदंडRate Monotonic (RMS: स्थिर प्राथमिकता)Earliest Deadline First (EDF: गतिशील प्राथमिकता)
प्राथमिकता निर्धारणस्थैतिक: छोटा आवर्तकाल $T_i \implies$ उच्च प्राथमिकतागतिशील: निकटतम निरपेक्ष डेडलाइन $d_{i,k} \implies$ उच्च प्राथमिकता
उपयोगिता सीमापर्याप्त: $n(2^{1/n}-1) \to 69.3\%$ (हार्मोनिक आवर्तकाल में $100\%$)आवश्यक और पर्याप्त: सदैव $100\%$ ($\sum C_i/T_i \le 1$)
कर्नेल डिस्पैच जटिलता$O(1)$ (प्राथमिकता बिटमैप + हार्डवेयर CLZ निर्देश)$O(\log n)$ (गतिशील मिन-हीप या रेड-ब्लैक ट्री आवश्यक)
ओवरलोड ($U > 1$) में व्यवहारस्थिर और सुरक्षित: उच्च-प्राथमिकता वाले मुख्य टास्क $100\%$ सुरक्षितविनाशकारी डोमिनो प्रभाव: सभी टास्क की श्रृंखलाबद्ध विफलता

4. 1997 नासा मार्स पाथफाइंडर घटना और ‘प्रायोरिटी इन्वर्ज़न’ का निदान

जुलाई 1997 में मंगल ग्रह पर सफलतापूर्वक उतरने के बाद, नासा के Mars Pathfinder यान (IBM RAD6000 CPU और VxWorks RTOS) में अचानक वॉचडॉग टाइमर के कारण बार-बार पूरे सिस्टम का रीसेट होने लगा, जिससे बहुमूल्य वैज्ञानिक डेटा नष्ट होने लगा।

इसका कारण साझा ‘इन्फॉर्मेशन बस’ म्यूटेक्स $M$ के इर्द-गिर्द तीन टास्क के बीच हुआ असीमित प्राथमिकता उत्क्रमण (Unbounded Priority Inversion) था:

  • निम्न-प्राथमिकता वाले मौसम टास्क $\tau_L$ (ASI/MET) ने साझा म्यूटेक्स $M$ को लॉक किया;
  • उच्च-प्राथमिकता वाले बस प्रबंधन टास्क $\tau_H$ (bc_dist) ने जागकर $M$ की माँग की और ब्लॉक (Blocked) हो गया;
  • इससे पहले कि $\tau_L$ म्यूटेक्स $M$ को अनलॉक कर पाता, मध्यम-प्राथमिकता वाले संचार टास्क $\tau_M$ (जिन्हें $M$ की कोई आवश्यकता नहीं थी!) आ गए। चूँकि $\text{Priority}(\tau_M) > \text{Priority}(\tau_L)$, इसलिए $\tau_M$ ने $\tau_L$ को प्रीएम्प्ट कर लंबे समय तक CPU पर कब्ज़ा कर लिया, जिससे $\tau_L$ लॉक नहीं खोल सका और सर्वोच्च प्राथमिकता वाला $\tau_H$ अनिश्चित काल के लिए अटका रह गया जब तक कि वॉचडॉग ने पूरे यान को रीबूट नहीं कर दिया!
  flowchart TD
    subgraph Bug["मार्स पाथफाइंडर पर असीमित प्रायोरिटी इन्वर्ज़न (1997)"]
        B1["1. निम्न-प्राथमिकता टास्क τ_L म्यूटेक्स M को लॉक करता है"] --> B2["2. उच्च-प्राथमिकता टास्क τ_H म्यूटेक्स M माँगता है और BLOCKED हो जाता है"]
        B2 --> B3["3. मध्यम-प्राथमिकता टास्क τ_M (M से असंबंधित) आता है!<br/>Priority(τ_M) > Priority(τ_L) होने के कारण τ_M, τ_L को हटाकर CPU ले लेता है"]
        B3 --> B4["4. τ_L म्यूटेक्स M को मुक्त नहीं कर पाता -> τ_H अनिश्चित काल के लिए अटका रहता है<br/>वॉचडॉग टाइमआउट होने पर मंगल यान का संपूर्ण सिस्टम रीसेट हो जाता है!"]
    end
  flowchart TD
    subgraph Fix["शा, राजकुमार और लेहोत्ज़की (1990) के सिंक्रोनाइज़ेशन प्रोटोकॉल"]
        F1["समाधान A: प्रायोरिटी इनहेरिटेंस प्रोटोकॉल (PIP)<br/>जैसे ही τ_H लॉक M पर ब्लॉक होता है, कर्नेल तुरंत τ_L की प्रभावी प्राथमिकता को<br/>τ_H के उच्च स्तर पर बढ़ा देता है! τ_M हस्तक्षेप नहीं कर पाता और τ_L तुरंत M को छोड़ देता है"]
        F2["समाधान B: इमीडिएट प्रायोरिटी सीलिंग प्रोटोकॉल (ICPP)<br/>प्रत्येक म्यूटेक्स M को एक सीलिंग Ceil(M) = उसके उपयोगकर्ताओं की सर्वोच्च प्राथमिकता मिलती है।<br/>लॉक लेते ही तुरंत Ceil(M) पर पदोन्नति: शून्य डेडलॉक और अधिकतम केवल 1 बार ब्लॉकिंग (B_i)!"]
        F1 --> F2
    end

इसका सटीक गणितीय समाधान शा, राजकुमार और लेहोत्ज़की ने 1990 में ही सिद्ध कर दिया था:

  1. प्रायोरिटी इनहेरिटेंस प्रोटोकॉल (PIP: Priority Inheritance Protocol): जब उच्च-प्राथमिकता वाला $\tau_H$ किसी निम्न-प्राथमिकता वाले $\tau_L$ द्वारा धारित म्यूटेक्स $M$ पर ब्लॉक होता है, तो कर्नेल अस्थायी रूप से $\tau_L$ की प्रभावी प्राथमिकता को बढ़ाकर $\tau_H$ के बराबर कर देता है, जिससे मध्यम टास्क $\tau_M$ उसे प्रीएम्प्ट नहीं कर सकता। पृथ्वी पर बग को पुनरुत्पादित करने के बाद JPL इंजीनियरों ने 19 करोड़ किलोमीटर दूर मंगल ग्रह पर VxWorks के C शेल में एक कमांड भेजकर लाइव RAM में ग्लोबल वेरिएबल SEM_INVERSION_SAFE को 0 से 1 में बदल दिया और मिशन को बचा लिया!
  2. प्रायोरिटी सीलिंग प्रोटोकॉल (PCP / ICPP: Immediate Priority Ceiling Protocol): चूँकि PIP में अभी भी चेन्ड ब्लॉकिंग (Chained Blocking) और डेडलॉक संभव है, इसलिए ICPP (POSIX PTHREAD_PRIO_PROTECT और AUTOSAR OS मानक) प्रत्येक म्यूटेक्स $M_k$ को एक स्थैतिक सीलिंग $\text{Ceil}(M_k) = \max\{\text{Priority}(\tau_i) \mid \tau_i \text{ उपयोग करता है } M_k\}$ प्रदान करता है और किसी भी टास्क द्वारा $M_k$ को लॉक करते ही उसी क्षण उसकी प्राथमिकता को $\text{Ceil}(M_k)$ तक बढ़ा देता है। यह गणितीय रूप से 100% डेडलॉक-मुक्ति की गारंटी देता है और अधिकतम ब्लॉकिंग समय को अधिकतम एक क्रिटिकल सेक्शन ($B_i$) तक सीमित रखता है:
$$R_i^{(k+1)} = C_i + B_i + \sum_{j \in hp(i)} \left\lceil \frac{R_i^{(k)}}{T_j} \right\rceil C_j$$
comments powered by Disqus