दर-मोनोटोनिक शेड्यूलिंग

कंप्यूटर विज्ञान में, दर-मोनोटोनिक शेड्यूलिंग (समय-निर्धारण) (आरएमएस) प्राथमिकता असाइनमेंट एल्गोरिदम है जिसका उपयोग स्थिर-प्राथमिकता शेड्यूलिंग क्लास के साथ रीयल-टाइम ऑपदरिंग सिस्टम (आरटीओएस) में किया जाता है। स्थैतिक प्राथमिकताएँ कार्य की चक्र अवधि के अनुसार निर्दिष्ट की जाती हैं, इसलिए छोटी चक्र अवधि के परिणामस्वरूप उच्च कार्य प्राथमिकता प्राप्त होती है।

ये ऑपरेटिंग सिस्टम सामान्यतः पूर्वव्यापी होते हैं और प्रतिक्रिया समय के संबंध में नियतात्मक सुविधाएं होती हैं। दर मोनोटोनिक विश्लेषण का उपयोग उन प्रणालियों के साथ संयोजन में किया जाता है जो किसी विशेष अनुप्रयोग के लिए शेड्यूलिंग सुविधाएं प्रदान करते हैं।

परिचय
दर-मोनोटोनिक विश्लेषण का एक सरल संस्करण मानता है कि थ्रेड्स में निम्नलिखित गुण हैं:


 * कोई संसाधन साझाकरण नहीं (प्रक्रियाएँ संसाधनों को साझा नहीं करती हैं, उदाहरण के लिए हार्डवेयर संसाधन, कतार, या किसी भी प्रकार का सेमाफोर अवरोधन या गैर-अवरुद्ध (व्यस्त-प्रतीक्षा)) आदि।
 * नियतात्मक समयबद्धन वास्तव में अवधि के बराबर होती हैं।
 * स्थिर प्राथमिकताएं (उच्चतम स्थिर प्राथमिकता वाला कार्य जो तत्काल चलने योग्य है, अन्य सभी कार्यों को शीघ्रता से पूरा करता है)।
 * दर मोनोटोनिक अधिवेशन के अनुसार सौंपी गई स्थिर प्राथमिकताएं (छोटी अवधि / समय सीमा के साथ कार्य उच्च प्राथमिकता दी जाती हैं)।
 * प्रसंग परिवर्तन समय और अन्य थ्रेड संचालन स्वतंत्र हैं और मॉडल पर कोई प्रभाव नहीं पड़ता है।

यह गणितीय मॉडल है जिसमें बंद प्रणाली में अवधियों का परिकलित सिमुलेशन होता है, जहां राउंड-रॉबिन और टाइम-शेयरिंग शेड्यूलर शेड्यूलिंग जरूरतों को पूरा करने में विफल रहते हैं। दर मोनोटोनिक अनुसूचन प्रणाली में सभी धागों के एक रन मॉडलिंग को देखता है और निर्धारित करता है कि प्रश्नगत सूत्रों के सेट के लिए गारंटियों को पूरा करने के लिए कितना समय की आवश्यकता है।

इष्टतमता
दर-मोनोटोनिक प्राथमिकता असाइनमेंट दी गई मान्यताओं के तहत इष्टतम है, जिसका अर्थ है कि यदि कोई स्थिर-प्राथमिकता शेड्यूलिंग एल्गोरिथ्म सभी समय सीमा को पूरा कर सकता है, तो दर-मोनोटोनिक एल्गोरिथ्म भी हो सकता है। समय सीमा-मोनोटोनिक शेड्यूलिंग एल्गोरिथ्म भी समान अवधि और समय सीमा के साथ इष्टतम है, वास्तव में इस स्तिथि में एल्गोरिदम समान हैं; के अतिरिक्त, समय-सीमा-मोनोटोनिक शेड्यूलिंग इष्टतम है जब समय सीमा अवधि से न्यूनतम होती है। उस कार्य मॉडल के लिए जिसमें समय सीमा अवधि से अधिक हो सकती है, ऑड्सली का एल्गोरिथ्म इस मॉडल के लिए एक सटीक समयबद्धता परीक्षण के साथ संपन्न है, इष्टतम प्राथमिकता असाइनमेंट मिलता है।

न्यूनतम ऊपरी सीमा
लियू और लेलैंड ( 1973 ) ने प्रमाणित किया कि अद्वितीय अवधि के साथ $n$ आवधिक कार्यों के सेट के लिए, व्यवहार्य अनुसूची जो हमेशा समय सीमा को पूरा करेगी यदि सीपीयू उपयोग विशिष्ट सीमा से नीचे है (कार्यों की संख्या के आधार पर)। आरएमएस के लिए समय-निर्धारण परीक्षण है:
 * $$U = \sum_{i=1}^{n} {U_i} = \sum_{i=1}^{n} \frac{C_i}{T_i} \leq n({2}^{1/n} - 1)$$

जहां $U$ उपयोग कारक है, $C_{i}$ प्रक्रिया $i$ के लिए गणना समय है, $T_{i}$ प्रक्रिया $i$ के लिए रिलीज़ अवधि (एक अवधि बाद की समय सीमा के साथ) है, और $n$ निर्धारित की जाने वाली प्रक्रियाओं की संख्या है। उदाहरण के लिए, दो प्रक्रियाओं के लिए $U ≤ 0.8284$। जब प्रक्रियाओं की संख्या अनंत की ओर प्रवृत्त होती है, तो यह अभिव्यक्ति इस ओर प्रवृत्त होगी:


 * $$\lim_{n \rightarrow \infty} n(\sqrt[n]{2} - 1) = \ln 2 \approx 0.693147\ldots$$

इसलिए, $${n} \geq {10}$$ होने पर एक मोटा अनुमान यह है कि यदि कुल सीपीयू उपयोग, $U$, 70% से न्यूनतम है तो आरएमएस सभी समय सीमा को पूरा कर सकता है। सीपीयू का अन्य 30% निम्न-प्राथमिकता, गैर-वास्तविक समय कार्यों के लिए समर्पित किया जा सकता है। $n$ के छोटे मानों के लिए या ऐसे मामलों में जहां $U$ इस अनुमान के करीब है, परिकलित उपयोग सीमा का उपयोग किया जाना चाहिए।

व्यवहार में, $${i^{th}}$$ प्रक्रिया के लिए, $${C_i}$$ को सबसे खराब स्थिति (यानी सबसे लंबी) गणना समय का प्रतिनिधित्व करना चाहिए और $${T_i}$$ को सबसे खराब स्थिति की समय सीमा (यानी सबसे छोटी अवधि) का प्रतिनिधित्व करना चाहिए जिसमें सभी प्रसंस्करण होना चाहिए।

हार्मोनिक कार्य सेट के लिए ऊपरी सीमा
लियू और लेलैंड ने नोट किया कि इस सीमा को 1.0 के अधिकतम संभव मान तक शिथिल किया जा सकता है, यदि कार्यों के लिए $${T_m}$$, $${T_i}$$ जहां $${T_m} {>} {T_i}$$और $$i = 1...m-1$$, $${T_m}$$ एक पूर्णांक गुणक है $${T_i}$$, जिसका अर्थ यह है कि सभी कार्यों की एक अवधि होती है जो न केवल सबसे छोटी अवधि का गुणज होती है, $${T_1}$$, बल्कि इसके बजाय किसी भी कार्य की अवधि सभी छोटी अवधियों का गुणज होती है। इसे हार्मोनिक कार्य सेट के रूप में जाना जाता है। इसका एक उदाहरण होगा$$[{T_1},{T_2},{T_3},{T_4}] = [1, 3, 6, 12]$$। लियू और लेलैंड द्वारा यह स्वीकार किया गया है कि एक सामंजस्यपूर्ण कार्य निर्धारित करना हमेशा संभव नहीं होता है और व्यवहार में अन्य शमन उपाय, जैसे कि सॉफ्ट-टाइम समय सीमा वाले कार्यों के लिए बफरिंग या उच्च सीमा की अनुमति देने के लिए गतिशील प्राथमिकता असाइनमेंट दृष्टिकोण का उपयोग किया जा सकता है।

हार्मोनिक श्रृंखलाओं का सामान्यीकरण
कुओ और मोक ने दिखाया कि $K$ हार्मोनिक कार्य उपसमुच्चय (जिसे हार्मोनिक श्रृंखला के रूप में जाना जाता है) से बने कार्य सेट के लिए, सबसे न्यूनतम ऊपरी सीमा परीक्षण बन जाता है:
 * $$U = \sum_{i=1}^{n} \frac{C_i}{T_i} \leq K({2}^{1/K} - 1)$$

ऐसे उदाहरण में जहां कोई भी कार्य अवधि दूसरे का पूर्णांक गुणज नहीं है, कार्य सेट को आकार 1 के $n$ हार्मोनिक कार्य उपसमुच्चय से बना माना जा सकता है और इसलिए $${K}{=}{n}$$ जो इस सामान्यीकरण को लियू और लेलैंड की न्यूनतम ऊपरी सीमा के बराबर बनाता है। जब $${K}{=}{1}$$, ऊपरी सीमा 1.0 हो जाती है, जो पूर्ण उपयोग का प्रतिनिधित्व करती है।

स्टोकेस्टिक सीमा
यह दिखाया गया है कि एक यादृच्छिक रूप से उत्पन्न आवधिक कार्य प्रणाली सामान्यतः सभी समय सीमा को पूरा करेगी जब उपयोग 88% या उससे न्यूनतम हो, हालांकि यह तथ्य सटीक कार्य आँकड़ों को जानने पर निर्भर करता है (अवधि, समय सीमा) जिसे सभी कार्य सेटों के लिए सुनिश्चित नहीं किया जा सकता है, और कुछ स्थितियों में लेखकों ने पाया कि उपयोग लियू और लेलैंड द्वारा प्रस्तुत न्न्यूनतम ऊपरी सीमा तक पहुंच गया है।

अतिपरवलयिक बाध्य
अतिपरवलयिक बाध्य लियू और लेलैंड द्वारा प्रस्तुत की तुलना में समयबद्धता के लिए एक सख्त पर्याप्त स्थिति है:
 * $$\prod_{i=1}^n (U_i +1) \leq 2$$,

जहाँ $U_{i}$ प्रत्येक कार्य के लिए सीपीयू उपयोग है। यह सबसे दृण ऊपरी सीमा है जिसे केवल व्यक्तिगत कार्य उपयोग कारकों का उपयोग करके पाया जा सकता है।

संसाधन साझाकरण
कई व्यावहारिक अनुप्रयोगों में, संसाधनों को साझा किया जाता है और असंपरिवर्तित आरएमएस प्राथमिकता व्युत्क्रम और गतिरोध के खतरों के अधीन होगा। व्यवहार में, यह पहले से छूट को भंग करके या वरीयता अंतर्निहित द्वारा हल किया जाता है। वैकल्पिक तरीकों में लॉक-फ्री एल्गोरिदम का उपयोग करना या विभिन्न प्राथमिकताओं के साथ धागे में एक म्यूटिक्स/सेमेफोर साझा करने से बचना है। यह ऐसा है कि संसाधन संघर्षों का परिणाम पहली जगह नहीं हो सकता है।

पूर्वक्रय को अक्षम करना

 * ई> और प्राइमिटिव जो सीपीयू को वास्तविक समय कर्नेल में बाधित करते हैं, उदा। माइक्रोसी/ओएस-II

प्राथमिकता अंतर्निहितता
मूलभूत प्राथमिकता अंतर्निहित प्रोटोकॉल उस कार्य की प्राथमिकता को बढ़ावा देता है जो संसाधन को उस कार्य की प्राथमिकता में रखता है जो अनुरोध किए जाने के समय उस संसाधन का अनुरोध करता है। संसाधन जारी होने पर, पदोन्नति से पहले का मूल प्राथमिकता स्तर बहाल हो जाता है। यह विधि गतिरोधों को नहीं रोकती है और श्रृंखलाबद्ध अवरोधन से ग्रस्त है। अर्थात्, यदि कोई उच्च-प्राथमिकता वाला कार्य अनुक्रम में कई साझा संसाधनों तक पहुँचता है, तो उसे प्रत्येक संसाधन के लिए निम्न-प्राथमिकता वाले कार्य पर प्रतीक्षा (ब्लॉक) करनी पड़ सकती है। लिनक्स कर्नेल के रीयल-टाइम पैच में इस सूत्र का कार्यान्वयन सम्मिलित है।

प्राथमिकता सीलिंग प्रोटोकॉल प्रत्येक सेमफोर को एक सीलिंग प्राथमिकता प्रदान करके बुनियादी प्राथमिकता अंतर्निहित प्रोटोकॉल को बढ़ाता है, जो सर्वोच्च कार्य की प्राथमिकता है जो कभी भी सेमफोर तक पहुंच जाएगा। यदि उसकी प्राथमिकता उस धारा के लिए अधिकतम प्राथमिकता से न्यूनतम है तो कोई कार्य निम्न प्राथमिकता वाले खंड को पूर्वनिर्धारित नहीं कर सकता है। यह विधि गतिरोधों को रोकती है और एक निम्न-प्राथमिकता महत्वपूर्ण खंड की अधिकांश लंबाई में ब्लॉक समय को सीमाबद्ध करती है। इस विधि को उपापचनीय किया जा सकता है, इसमें यह अनावश्यक अवरोध उत्पन्न कर सकता है। प्राथमिकता सीलिंग प्रोटोकॉल वीएक्सवर्क्स रियल-टाइम कर्नल में उपलब्ध है। इसे उच्चतम लॉकर प्राथमिकता प्रोटोकॉल (एचएलपी) के रूप में भी जाना जाता है।

प्राथमिकता अंतर्निहित एल्गोरिदम को दो मापदंडों की विशेषता हो सकती है। सबसे पहले, अंतर्निहित लेजी (केवल जब आवश्यक हो) या तत्काल (एक संघर्ष से पहले प्राथमिकता को बढ़ावा दें)। दूसरा अंतर्निहित प्रतिउत्पादक (न्यूनतम मात्रा में वृद्धि) या अनुमानवादी (न्यूनतम मात्रा में वृद्धि) है।

व्यवहार में, लेजी और तत्काल एल्गोरिदम के बीच कोई गणितीय अंतर नहीं है (लियू-लेलैंड सिस्टम उपयोग के संदर्भ में), और तत्काल एल्गोरिदम लागू करने के लिए अधिक कुशल हैं, और इसलिए वे अधिकांश व्यावहारिक प्रणालियों द्वारा उपयोग किए जाते हैं।

बुनियादी प्राथमिकता अंतर्निहित के उपयोग का एक उदाहरण "मार्स पाथफाइंडर रीसेट बग" से संबंधित है, सेमाफोर के लिए निर्माण ध्वज को मंगल में बदल दिया गया ताकि प्राथमिकता अन्तर्निहित को सक्षम बनाया जा सके।

इंटरप्ट सर्विस रूटीन (सेवा नियमित अवरोध)
सभी इंटरप्ट सर्विस रूटीन (आईएसआर), चाहे उनके पास कठिन वास्तविक समय की समय सीमा हो या नहीं, उन स्तिथियों में शेड्यूलेबिलिटी निर्धारित करने के लिए आरएमएस विश्लेषण में सम्मिलित किया जाना चाहिए जहां आईएसआर की प्राथमिकताएं सभी शेड्यूलर-नियंत्रित कार्यों से ऊपर हैं। आईएसआर को पहले से ही आरएमएस नियमों के तहत उचित रूप से प्राथमिकता दी जा सकती है यदि इसकी प्रसंस्करण अवधि सबसे छोटी, गैर-आईएसआर प्रक्रिया से न्यूनतम है। हालाँकि, महत्वपूर्ण समय सीमा के साथ किसी भी गैर-आईएसआर प्रक्रिया अवधि से अधिक अवधि/समय सीमा वाले आईएसआर के परिणामस्वरूप आरएमएस का उल्लंघन होता है और किसी कार्य सेट की शेड्यूलेबिलिटी निर्धारित करने के लिए गणना की गई सीमाओं के उपयोग को रोकता है।

गलत प्राथमिकता वाले ISRs को न्यूनतम करना
गलत-प्राथमिकता वाले आईएसआर को न्यूनतम करने का विधि यह है कि यदि संभव हो तो आईएसआर की अवधि को न्यूनतम अवधि के बराबर करके विश्लेषण को समायोजित किया जाए। इस छोटी अवधि को लागू करने के परिणामस्वरूप प्राथमिकता दी जाती है जो आरएमएस के अनुरूप होती है, लेकिन इसके परिणामस्वरूप आईएसआर के लिए एक उच्च उपयोग कारक होता है और इसलिए कुल उपयोग कारक के लिए, जो अभी भी स्वीकार्य सीमा से नीचे हो सकता है और इसलिए समयबद्धता सिद्ध की जा सकती है। ए उदाहरण के रूप में, हार्डवेयर आईएसआर पर विचार करें जिसका संगणना समय है, $${C_{isr}}$$ 500 माइक्रोसेकंड और अवधि की, $${T_{isr}}$$, 4 मिलीसेकंड का। यदि सबसे छोटे अनुसूचक-नियंत्रित कार्य की अवधि है, $${T_1}$$ 1 मिलीसेकंड का, तब आईएसआर की प्राथमिकता अधिक होगी, लेकिन दर न्यूनतम होगी, जो आरएमएस का उल्लंघन करती है। शेड्यूलेबिलिटी साबित करने के प्रयोजनों के लिए, सेट करें $${T_{isr}}={T_1}$$ और आईएसआर के लिए उपयोग कारक की पुनर्गणना करें (जो कुल उपयोग कारक को भी बढ़ाता है)। इस स्तिथि में, $${U_{isr}}{=}{C_{isr}}/{T_{isr}}$$ से बदल जाएगा $${0.5 ms}/{4 ms}{=}0.125$$ को $${0.5 ms}/{1 ms}{=}0.5$$. इस उपयोग कारक का उपयोग कार्य सेट के लिए कुल उपयोग कारक को जोड़ते समय और शेड्यूल करने की क्षमता को साबित करने के लिए ऊपरी सीमा से तुलना करने के लिए किया जाएगा। इस बात पर जोर दिया जाना चाहिए कि आईएसआर की अवधि को समायोजित करना केवल विश्लेषण के लिए है और आईएसआर की सही अवधि अपरिवर्तित रहती है।

गलत-प्रयुक्त आईएसआर को न्यूनतम करने के लिए अन्य विधि यह है कि आईएसआर का उपयोग केवल नया सेमफोर/म्यूटिक्स सेट करने के लिए किया जाए, जबकि समय-प्रधान प्रसंस्करण को एक नई प्रक्रिया में ले जाया जाए, जिसे आरएमएस का उपयोग करके उचित रूप से प्राथमिकता दी गई है और नए सेमफोर/म्यूटेक्स पर ब्लॉक किया जाएगा। अनुसूचिता का निर्धारण करते समय, आईएसआर गतिविधि के कारण सीपीयू उपयोग का मार्जिन न्यूनतम ऊपरी सीमा से घटा दिया जाना चाहिए। नगण्य उपयोग वाले आई एस आर की उपेक्षा की जा सकती है।

उदाहरण 1
आरएमएस के तहत, P2 की उच्चतम दर (यानी सबसे न्यूनतम अवधि) है और इसलिए उसकी सर्वोच्च प्राथमिकता होगी, उसके बाद P1 और अंत में P3 होगी।

न्यूनतम ऊपरी सीमा
उपयोगिता होगी: $$\frac{1}{8} + \frac{2}{5} + \frac{2}{10} = 0.725$$.

के लिए पर्याप्त स्थिति $$3\,$$ प्रक्रियाएं, जिसके तहत हम यह निष्कर्ष निकाल सकते हैं कि सिस्टम शेड्यूल (अनुसूची) करने योग्य है:


 * $${U_{lub}} = 3(2^\frac{1}{3} - 1) = 0.77976 > 0.693\ldots

(0.693 \text{ is utilization bound for RMS for } n=\infty \ldots )$$ क्योंकि $$0.77976 \geq 0.725$$, और क्योंकि लिस्ट अपर बाउंड के नीचे होना एक पर्याप्त स्थिति है, इसलिए सिस्टम को शेड्यूल करने की अनुमति है।

उदाहरण 2
आरएमएस के तहत, P2 की उच्चतम दर (यानी सबसे न्यूनतम अवधि) है और इसलिए इसकी सर्वोच्च प्राथमिकता होगी, इसके बाद P3 और अंत में P1 होगी।

न्यूनतम ऊपरी सीमा
लियू और लेलैंड बाउंड का उपयोग करना, जैसा कि उदाहरण 1 में है, के लिए पर्याप्त स्थिति $$3\,$$ प्रक्रियाएं, जिसके तहत हम यह निष्कर्ष निकाल सकते हैं कि कार्य निर्धारित करने योग्य है, बनी हुई है:


 * $${U_{lub}} = 3(2^\frac{1}{3} - 1) = 0.77976$$

कुल उपयोग होगा: $$\frac{3}{16} + \frac{2}{5} + \frac{2}{10} = 0.7875$$.

तब से $$0.77976 {<} 0.7875$$ लियू और लेलैंड बाउंड द्वारा सिस्टम को शेड्यूल करने योग्य नहीं होने के लिए निर्धारित किया गया है।

अतिपरवलयिक बाध्य
सख्त हाइपरबोलिक बाउंड का उपयोग निम्नानुसार है:


 * $$\prod_{i=1}^n (U_i +1) = (\frac{3}{16}+1) * (\frac{2}{5}+1) * (\frac{2}{10}+1) = 1.995 \leq 2$$

यह पाया गया है कि कार्य सेट शेड्यूल करने योग्य है।

उदाहरण 3
आरएमएस के तहत, P2 की उच्चतम दर (यानी सबसे न्यूनतम अवधि) है और इसलिए इसकी सर्वोच्च प्राथमिकता होगी, इसके बाद P3 और अंत में P1 होगी।

न्यूनतम ऊपरी सीमा
लियू और लेलैंड बाउंड का उपयोग करना, जैसा कि उदाहरण 1 में है, के लिए पर्याप्त स्थिति $$3\,$$ प्रक्रियाएं, जिसके तहत हम यह निष्कर्ष निकाल सकते हैं कि कार्य निर्धारित करने योग्य है, बनी हुई है:


 * $${U_{lub}} = 3(2^\frac{1}{3} - 1) = 0.77976$$

कुल उपयोग होगा: $$\frac{7}{32} + \frac{2}{5} + \frac{2}{10} = 0.81875$$.

तब से $$0.77976 {<} 0.81875$$ लियू और लेलैंड बाउंड द्वारा सिस्टम को शेड्यूल करने योग्य नहीं होने के लिए निर्धारित किया गया है।

अतिपरवलयिक बाध्य
सख्त हाइपरबोलिक बाउंड का उपयोग निम्नानुसार है:


 * $$\prod_{i=1}^n (U_i +1) = (\frac{7}{32}+1) * (\frac{2}{5}+1) * (\frac{2}{10}+1) = 2.0475$$

तब से $$2.0 {<} 2.0475$$ सिस्टम को हाइपरबोलिक बाउंड द्वारा शेड्यूल करने योग्य नहीं होने के लिए निर्धारित किया गया है।

हार्मोनिक कार्य सेट विश्लेषण
क्योंकि $${T_3}={2{T_2}}$$, कार्य 2 और 3 को हार्मोनिक कार्य उपसमूह माना जा सकता है। कार्य 1 अपना स्वयं का हार्मोनिक कार्य उपसमूह बनाता है। इसलिए, हार्मोनिक कार्य उपसमुच्चय, $K$, की संख्या 2 है।$${U_{lub,harmonic}} = K(2^\frac{1}{K} - 1) = 2(2^\frac{1}{2} - 1) = 0.828$$ऊपर (0.81875) परिकलित कुल उपयोग कारक का उपयोग करते हुए, चूंकि $$0.81875 < 0.828$$ सिस्टम शेड्यूल करने योग्य होने के लिए निर्धारित है।

यह भी देखें

 * समय सीमा-मोनोटोनिक शेड्यूलिंग।
 * डीओओएस, समय और स्थान विभाजित वास्तविक समय ऑपरेटिंग सिस्टम है जिसमें एक कार्यशील दर मोनोटोनिक शेड्यूलर सम्मिलित है।
 * गतिशील प्राथमिकता निर्धारण।
 * सबसे पहले समयसीमा का पहला निर्धारण।
 * आरटीईएमएस ओपन-सोर्स रीयल-टाइम ऑपरेटिंग सिस्टम है जिसमें वर्किंग रेट मोनोटोनिक शेड्यूलर सम्मिलित है।
 * शेड्यूलिंग (कंप्यूटिंग)।

अग्रिम पठन

 * , Chapter 6.
 * , Chapter 6.
 * , Chapter 6.

बाहरी संबंध

 * Mars Pathfinder Bug from Research @ Microsoft
 * What really happened on Mars Rover Pathfinder by Mike Jones from The Risks Digest, Vol. 19, Issue 49
 * The actual reason for the Mars Pathfinder Bug, by those who actually dealt with it, rather than someone whose company and therefore stock value depended upon the description of the problem, or someone who heard someone talking about the problem.