QNX रीयल-टाइम ऑपरेटिंग सिस्टम पर नोटों की श्रृंखला की निरंतरता। इस बार मैं QNX6
* में थ्रेड शेड्यूलिंग के बारे में बात करना चाहूंगा। जैसा कि पाठक
(जो श्रृंखला में पिछले नोट को पढ़ते हैं) पहले से ही जानते हैं, क्यूएनएक्स 6 माइक्रोकर्नेल थ्रेड्स को नियंत्रित करता है, प्रक्रियाओं को नहीं। और यह माइक्रोकर्नेल है जो थ्रेड के संदर्भ को लोड करता है जिसे अगले पल में नियंत्रण प्राप्त करना चाहिए। एक थ्रेड का विकल्प जिसे प्रोसेसर द्वारा निष्पादित किया जाएगा (यानी सक्रिय रूप से प्रोसेसर समय का उपयोग करें) थ्रेड का शेड्यूलिंग है।
जब थ्रेड शेड्यूलिंग होती है
QNX न्यूट्रीनो माइक्रोकर्नेल लगातार काम नहीं करता है, लेकिन केवल सिस्टम कॉल, अपवाद और व्यवधान के मामले में नियंत्रण प्राप्त करता है। इसके अलावा, माइक्रोन्यूक्लियस अपने काम के दौरान प्रवाह नियोजन करता है। इससे हम सही निष्कर्ष निकाल सकते हैं कि शेड्यूलिंग फ्लो का संचालन खुद से नहीं, बल्कि किसी घटना से होता है।
वास्तव में, ऐसी कुछ घटनाएं हैं:
- बाहर भीड़ हो रही है। यदि वर्तमान में निष्पादित होने वाले एक से अधिक प्राथमिकता वाला एक धागा तैयार अवस्था (READY) में प्रवेश कर गया है, तो माइक्रोकर्नल वर्तमान में निष्पादित थ्रेड, स्विच संदर्भों को बंद कर देगा और उच्च प्राथमिकता के साथ थ्रेड प्रारंभ करेगा। जो धागा पहले चल रहा था, वह निष्पादन कतार में पहले स्थान पर रहेगा।
- ब्लॉक कर रहा है। इसके निष्पादन के दौरान एक धागा (यानी, ऑपरेशन के दौरान) एक फ़ंक्शन को कॉल कर सकता है जो इसके अवरुद्ध होने का कारण होगा। उदाहरण के लिए, यह सिस्टम फ़ंक्शन
MsgSend()
(सीधे या अप्रत्यक्ष रूप से) का उपयोग करके एक MsgSend()
को पकड़ने या संदेश प्रसारित करने की कोशिश करेगा। इस मामले में, कर्नेल निष्पादन कतार से ऐसी प्रक्रिया को हटा देगा और नियंत्रण को दूसरे धागे पर स्थानांतरित कर देगा। - असाइनमेंट (नियंत्रण, उपज का हस्तांतरण)। एक धागा स्वेच्छा से नियंत्रण स्थानांतरित कर सकता है अगर वह
sched_yield()
फ़ंक्शन को कॉल करता है। इस स्थिति में, थ्रेड को निष्पादन कतार में अंतिम स्थान पर रखा जाता है और माइक्रोकर्नेल किसी अन्य थ्रेड पर नियंत्रण स्थानांतरित करता है (हो सकता है कि जिसने नियंत्रण दिया था)।
योजना को प्रभावित करने वाले प्रवाह पैरामीटर
QNX न्यूट्रीनो माइक्रोकर्नेल के मुख्य कार्यों में से एक (
और संदेश के बाद शायद सबसे महत्वपूर्ण ) थ्रेड शेड्यूलिंग है। यह वह माइक्रोकर्नल है जो संदर्भों को स्विच करता है और चयन करता है कि कौन सा धागा अगले बिंदु पर समय पर निष्पादित होगा। माइक्रोकर्नल यह सब सिर्फ उस तरह से नहीं करता है और अपनी बाईं एड़ी के अनुरोध पर नहीं, बल्कि निम्न प्रवाह मापदंडों के आधार पर करता है:
- स्ट्रीम प्राथमिकता (स्ट्रीम प्राथमिकता स्तर)। QNX6 RTOS में प्रत्येक धागा एक विशिष्ट प्राथमिकता पर चलता है। प्राथमिकता जितनी अधिक होगी, प्रोसेसर के पहले स्थान पर पहुंचने की संभावना उतनी ही अधिक होगी। यदि सिस्टम में READY स्थिति (निष्पादन के लिए तैयार) में दो या अधिक थ्रेड्स हैं, तो माइक्रोकर्नल उस थ्रेड पर नियंत्रण स्थानांतरित कर देगा जिसकी प्राथमिकता अधिक है।
- नियोजन का अनुशासन। सिस्टम में प्रत्येक थ्रेड को एक निश्चित नियोजन अनुशासन के साथ निष्पादित किया जाता है। माइक्रोकर्नल नियोजन अनुशासन को ध्यान में रखता है जब एक ही प्राथमिकता पर चल रहे सिस्टम में READY स्थिति में दो या अधिक थ्रेड्स होते हैं।
थ्रेड की प्राथमिकता
सुपरसुअर थ्रेड्स (
रूट के रूप में चल रही) और नियमित उपयोगकर्ता थ्रेड्स के लिए
0-63 की सीमा में एक नंबर है। बूट छवि तैयार करते समय औसत उपयोगकर्ता के लिए उपलब्ध प्राथमिकताओं की श्रेणी को बदला जा सकता है। ऐसा करने के लिए,
-p
विकल्प को निर्दिष्ट करें। यह भी ध्यान दिया जाना चाहिए कि शून्य (सबसे कम) प्राथमिकता पर,
idle
धागे को निष्पादित किया जाता है, जो हमेशा नियंत्रण प्राप्त करता है यदि सिस्टम की READY राज्य में उच्च प्राथमिकताओं के साथ अधिक धागे नहीं हैं।
QNX6 ऑपरेटिंग सिस्टम कई फ्लो प्लानिंग विषयों का समर्थन करता है:
FIFO , हिंडोला (चक्रीय, राउंड-रॉबिन, RR) और छिटपुट
** । इस थ्रेड विशेषता पर
केवल तभी विचार किया जाएगा जब माइक्रोकर्नेल को समान प्राथमिकता स्तर के साथ थ्रेड्स के बीच चुनना होगा। योजना विषयों को बाद में वर्णित किया जाएगा।
एक और कारक है जो स्विचिंग प्रवाह के क्रम को प्रभावित करता है। प्रोसेसर को चलाने और उपयोग करने के लिए तैयार सभी धागे (यानी READY राज्य में धागे) पंक्तिबद्ध हैं। सिस्टम में ऐसी
२५६ कतारें हैं (प्राथमिकताओं की संख्या से)। सभी चीजें समान हो रही हैं, जब माइक्रोक्राइन को एक ही प्राथमिकता के स्तर के साथ दो थ्रेड्स के बीच चुनना होता है, तो कतार में पहली बार थ्रेड को निष्पादित करना शुरू हो जाएगा। एक बार फिर, जब एक स्ट्रीम से बाहर निकलते समय पूर्वता होती है, तो इसे पहले कतार में रखा जाता है, और असाइनमेंट (
sched_yield()
कॉल
sched_yield()
), स्ट्रीम कतार में अंतिम हो जाती है।
FIFO योजना अनुशासन
यदि प्रवाह को एफआईएफओ शेड्यूलिंग अनुशासन (फर्स्ट इन फर्स्ट आउट, फ़र्स्ट इन, फ़र्स्ट आउट) दिया जाता है, तो यह तब तक चल सकता है जब तक आप चाहें। नियंत्रण को केवल दूसरे थ्रेड में स्थानांतरित किया जाएगा यदि थ्रेड को उच्च-प्राथमिकता वाले थ्रेड द्वारा सुधारा जाता है, तो थ्रेड अवरुद्ध हो जाता है या स्वेच्छा से नियंत्रण देता है। इस नियोजन अनुशासन का उपयोग करते हुए, एक धागा जो लंबी गणितीय गणना करता है, पूरी तरह से प्रोसेसर पर कब्जा कर सकता है (यानी, यह थ्रेड को समान और निम्न प्राथमिकता के साथ अनुमति नहीं देगा)।
हिंडोला अनुशासन योजना
यह नियोजन अनुशासन पूरी तरह से एफआईएफओ के समान है, सिवाय इसके कि थ्रेड को "अंतहीन रूप से" निष्पादित नहीं किया जाता है, लेकिन केवल एक निश्चित समय स्लॉट (टाइमलेस) के लिए काम करता है। समय की मात्रा समाप्त होने के बाद, माइक्रोन्यूक्लियस प्रक्रिया को क्रियान्वयन के लिए तैयार धागों की कतार के अंत में डालता है, और नियंत्रण को अगले थ्रेड (उसी प्राथमिकता स्तर पर) में स्थानांतरित कर दिया जाता है। यदि इस प्राथमिकता स्तर पर READY राज्य में कोई अन्य थ्रेड नहीं हैं, तो एक अन्य थ्रेड को समय स्लाइस आवंटित किया जाता है।
ऑपरेशन के लिए शेड्यूलिंग के हिंडोला अनुशासन के साथ थ्रेड्स को आवंटित किए जाने वाले समय की मात्रा को
sched_rr_get_interval()
फ़ंक्शन का उपयोग करके निर्धारित किया जा सकता है। वास्तव में, टाइमस्लाइक टिकसाइज से ठीक चार गुना है। बदले में, घड़ी अंतराल 40MHz के प्रोसेसर के साथ सिस्टम में 1ms और उच्चतर और धीमी प्रोसेसर वाले सिस्टम में 10ms है। यह पता चला है कि सामान्य x86 कंप्यूटर और लैपटॉप में, समय क्वांटम 4ms है।
छिटपुट योजना अनुशासन
FIFO शेड्यूलिंग में, एक थ्रेड जिसके लिए छिटपुट शेड्यूलिंग लागू किया जाता है, तब तक निष्पादित किया जाता है जब तक कि इसे अवरुद्ध नहीं किया जाता है या थ्रेड को उच्च प्राथमिकता के साथ बदल दिया जाता है। इसके अलावा, जैसे अनुकूली योजना में, एक प्रवाह जिसके लिए छिटपुट योजना को लागू किया जाता है, उसे कम प्राथमिकता मिलती है। हालांकि, छिटपुट योजना काफी सटीक प्रवाह नियंत्रण देती है।
छिटपुट योजना में, थ्रेड की प्राथमिकता गतिशील रूप से अग्रभूमि प्राथमिकता (अग्रभूमि, सामान्य प्राथमिकता) और पृष्ठभूमि (कम) प्राथमिकता के बीच बदल सकती है। इस छिटपुट संक्रमण को नियंत्रित करने के लिए निम्नलिखित मापदंडों का उपयोग किया जाता है:
- एक थ्रेड का प्रारंभिक बजट (प्रारंभिक बजट) (C) - उस समय की मात्रा जिसके दौरान एक थ्रेड सामान्य प्राथमिकता (N) से कम प्राथमिकता (L) प्राप्त करने से पहले चल सकता है।
- निम्न प्राथमिकता (L) - वह प्राथमिकता स्तर जिसकी धारा की प्राथमिकता कम हो जाएगी। कम प्राथमिकता (एल) के साथ, पृष्ठभूमि में धागा चलता है। यदि थ्रेड की एक सामान्य प्राथमिकता (एन) है, तो यह अग्रभूमि प्राथमिकता के साथ चलता है।
- पुनरावृत्ति अवधि (टी) - समय की अवधि जिसके दौरान धागा अपने निष्पादन बजट को खर्च कर सकता है।
- वर्तमान पुनःपूर्ति की अधिकतम संख्या (लंबित पुनःपूर्ति की अधिकतम संख्या) - यह मान प्रदर्शन किए गए पुनःपूर्ति संचालन की संख्या पर एक सीमा निर्धारित करता है, जिससे छिटपुट नियोजन के अनुशासन को आवंटित सिस्टम संसाधनों की मात्रा सीमित हो जाती है।
जैसा कि अंजीर से देखा जा सकता है। 1, छिटपुट नियोजन एल्गोरिथ्म थ्रेड सी के लिए प्रारंभिक निष्पादन बजट निर्धारित करता है, जिसे थ्रेड द्वारा इसके निष्पादन की प्रक्रिया में खाया जाता है और पैरामीटर टी द्वारा निर्धारित आवृत्ति के साथ फिर से भरना होता है। जब थ्रेड अवरुद्ध हो जाता है, थ्रेड बजट आर के खर्च किए गए हिस्से को कुछ सेट समय (उदाहरण के लिए, 4ms बाद) ), उस क्षण से गिना जाता है जब धागा तैयार अवस्था में चला जाता है।
अंजीर। 1.
प्रवाह निष्पादन अवधि की पुनरावृत्ति समय-समय पर होती हैसामान्य प्राथमिकता एन के साथ, धागा अपने प्रारंभिक निष्पादन बजट सी द्वारा निर्धारित समय की अवधि के लिए चलता है। इस अवधि की समाप्ति के बाद, धागा की प्राथमिकता कम स्तर एल तक कम हो जाती है जब तक कि पुनःपूर्ति ऑपरेशन नहीं होता है।
उदाहरण के लिए, कल्पना करें कि एक प्रणाली जिसमें प्रवाह कभी अवरुद्ध या बाधित नहीं होता है - अंजीर। 2।
अंजीर। 2.
थ्रेड की
प्राथमिकता तब तक कम हो जाती है जब तक कि इसका निष्पादन बजट फिर से न भर जाए।इस मामले में, धागा कम प्राथमिकता (पृष्ठभूमि मोड) के साथ एक स्तर पर जाएगा, जिस पर इसका निष्पादन सिस्टम में अन्य थ्रेड्स की प्राथमिकता पर निर्भर करेगा।
जैसे ही पुनःपूर्ति होती है, प्रवाह की प्राथमिकता प्रारंभिक स्तर तक बढ़ जाती है। इस प्रकार, एक ठीक से कॉन्फ़िगर की गई प्रणाली में, सी के अधिकतम समय के लिए एक थ्रेड हर समयावधि T को निष्पादित करता है। यह सुनिश्चित करता है कि प्राथमिकता एन के साथ निष्पादित प्रत्येक थ्रेड सिस्टम संसाधनों का केवल C / T प्रतिशत का उपयोग करेगा।
जब एक धागा कई बार अवरुद्ध हो जाता है, तो कई पुनरावृत्ति संचालन समय में विभिन्न बिंदुओं पर हो सकते हैं। इसका मतलब यह हो सकता है कि समय अवधि टी के भीतर प्रवाह निष्पादन बजट सी के मूल्य तक पहुंच जाएगा; हालाँकि, इस अवधि के दौरान, बजट निरंतर नहीं हो सकता है।
अंजीर। 3.
प्रवाह की
प्राथमिकता उच्च और निम्न के बीच भिन्न होती हैअंजीर में। चित्रा 3 से पता चलता है कि प्रत्येक 40 एमएस की पुनःपूर्ति अवधि टी के लिए, धारा सी के निष्पादन के लिए बजट 10 एमएस है।
- प्रवाह 3 एमएस के बाद अवरुद्ध है, इसलिए, 3 एमएस पुनःपूर्ति ऑपरेशन 40 एमएस में निष्पादन के लिए निर्धारित किया जाएगा, अर्थात। उस समय, पहली पुनःपूर्ति अवधि का पूरा होना।
- प्रवाह निष्पादन 6 वीं मिलीसेकंड पर शुरू होता है, और यह क्षण अगले पुनःपूर्ति अवधि टी की शुरुआत को चिह्नित करता है। प्रवाह निष्पादन बजट में अभी भी 7 एमएस मार्जिन है।
- प्रवाह को 7 एमएस के लिए अवरुद्ध किए बिना निष्पादित किया जाता है, जिसके परिणामस्वरूप प्रवाह निष्पादन बजट समाप्त हो जाता है, और प्रवाह की प्राथमिकता स्तर एल तक कम हो जाती है, जिस पर वह नियंत्रण प्राप्त कर सकता है या नहीं कर सकता है। 46 वीं मिलीसेकंड (40 + 6) के लिए एक 7 एमएस प्रतिकृति की योजना बनाई गई है, अर्थात्। अवधि के बाद टी।
- 40 वीं मिलीसेकंड पर, प्रवाह बजट 3 एमएस (आरेख में चरण 1 देखें) द्वारा फिर से भर दिया जाता है, जिसके परिणामस्वरूप प्रवाह की प्राथमिकता सामान्य हो जाती है।
- धागा अपने बजट के 3 एमएस खर्च करता है और फिर कम प्राथमिकता पर वापस स्विच करता है।
- 46 वीं मिलीसेकंड पर, थ्रेड बजट को 7 एमएस (चरण 3 देखें) द्वारा फिर से भर दिया जाता है, और थ्रेड फिर से सामान्य प्राथमिकता प्राप्त करता है।
और इसी तरह। इस प्रकार, दो प्राथमिकता स्तरों के बीच चलते हुए, धारा प्रणाली में एपेरियोडिक घटनाओं को अनुमानित और नियंत्रित रूप से कार्य करती है।
कार्यक्रम से योजना की प्राथमिकता और अनुशासन कैसे निर्धारित करें
स्टार्टअप पर प्रत्येक धागा अपनी प्राथमिकता और नियोजन अनुशासन को मूल धागे से विरासत में मिला है। ऑपरेशन के दौरान, थ्रेड इन विशेषताओं को बदल सकता है। इस प्रयोजन के लिए, QNX6 में निम्नलिखित कार्य मौजूद हैं:
एक पूरी प्रक्रिया नहीं, बल्कि एक अलग थ्रेड की योजना बनाने की प्राथमिकता और अनुशासन पाने या निर्धारित करने के लिए, आप
SchedGet()
और
SchedSet()
उपयोग कर सकते हैं।
थोड़ा प्रशासन
पिछली पोस्ट में, मैंने पहले से ही
pidin
कमांड को संदर्भित किया था। इस बार हम दो और टीमों से मिलेंगे जो QNX के लिए विशिष्ट हैं। हर QNX6 व्यवस्थापक को इन आदेशों का उपयोग करने में सक्षम होना चाहिए। और शायद सबसे महत्वपूर्ण कमांड का
use
।
use
उपयोगिता किसी तरह से
man
कमांड का एक एनालॉग है। उपयोगिता आपको निष्पादन योग्य मॉड्यूल (बाइनरी निष्पादन योग्य फ़ाइल, स्क्रिप्ट या साझा लाइब्रेरी) पर सहायता प्राप्त करने की अनुमति देती है।
use
सिद्धांत
man
से कुछ अलग है, क्योंकि सभी मदद की जानकारी निष्पादन योग्य मॉड्यूल में ही संग्रहीत है, और अलग से नहीं। कमांड को कहा जाता है, उदाहरण के लिए, बस:
# use sleep sleep - suspend execution for an interval (POSIX) sleep time Where: time is the number of seconds to sleep and can be a non-negative floating point number (0 <= time <= 4294967295).
उपयोगिता उपयोगिता कमांड के साथ काम करने में थोड़ी मदद प्रदर्शित करती है; सहायता प्रणाली में एक पूर्ण विवरण उपलब्ध है।
एक अन्य उपयोगी कमांड जो कि प्रत्येक स्वाभिमानी QNX6 व्यवस्थापक के शस्त्रागार में होनी चाहिए,
pidin
। यह उपयोगिता सिस्टम के बारे में विभिन्न प्रकार की जानकारी प्रदान करती है, जिसमें निष्पादन थ्रेड और प्रक्रियाएं शामिल हैं (इस मामले में, उपयोगिता
ps
उपयोगिता के समान है)। उदाहरण के लिए, सिस्टम के बारे में सामान्य जानकारी देखने के लिए, आपको निम्न कमांड चलाना चाहिए:
# pidin in CPU:X86 Release:6.5.0 FreeMem:166Mb/255Mb BootTime:Jul 05 15:53:27 MSKS 2011 Processes: 43, Threads: 107 Processor1: 131758 Pentium II Stepping 5 2593MHz FPU
मापदंडों के बिना उपयोगिता को कॉल करना सभी प्रक्रियाओं और थ्रेड्स पर जानकारी प्रदर्शित करता है। ब्याज की प्रक्रिया के बारे में जानकारी प्राप्त करने के लिए, उदाहरण के लिए, केवल-स्विच निर्दिष्ट करें:
# pidin -P io-audio pid tid name prio STATE Blocked 90127 1 sbin/io-audio 10o SIGWAITINFO 90127 2 sbin/io-audio 10o RECEIVE 1 90127 3 sbin/io-audio 10o RECEIVE 1 90127 4 sbin/io-audio 10o RECEIVE 1 90127 5 sbin/io-audio 50r INTR 90127 6 sbin/io-audio 50r RECEIVE 7
आप देख सकते हैं कि प्रक्रिया मेमोरी का उपयोग कैसे करती है, ऐसा करने के लिए, निम्नलिखित कमांड चलाएँ:
उपयोग की गई साझा लाइब्रेरी के बारे में भी जानकारी प्रदर्शित होती है। यह बहुत सुविधाजनक है, मेरी राय में।
pidin
उपयोगिता बहुत सारे आदेशों और विकल्पों का समर्थन करती है, एक सूची और विवरण जो QNX सहायता प्रणाली में पाया जा सकता है।
और आज के लिए आखिरी, लेकिन मूल्य से नहीं,
slay
उपयोगिता। जैसा कि आप अनुमान लगा सकते हैं, इस कमांड का उपयोग प्रक्रियाओं को सिग्नल भेजने के लिए किया जाता है। डिफ़ॉल्ट रूप से, एक SIGTERM संकेत भेजा जाता है, जो आमतौर पर प्रक्रिया को समाप्त करता है। आप एक और संकेत निर्दिष्ट कर सकते हैं जिसे प्रक्रिया में भेजा जाना चाहिए। इस उपयोग के साथ,
slay
मार कमांड के समान है, लेकिन सबसे दिलचस्प बात यह है कि
स्ले कमांड न केवल प्रक्रिया पहचानकर्ता (पीआईडी), बल्कि प्रक्रिया का नाम भी स्वीकार करता है। यह प्रशासन के लिए भी बहुत सुविधाजनक है। संकेतों को भेजने के अलावा, उपयोगिता का उपयोग प्रक्रिया नियोजन की प्राथमिकता या अनुशासन को बदलने के लिए किया जा सकता है। यदि आप एकल स्ट्रीम की विशेषताओं को बदलना चाहते हैं, तो आप
-T
स्विच को निर्दिष्ट कर सकते हैं। निम्नलिखित कुछ आदेश
io-audio
प्रक्रिया के 3 थ्रेड्स को शेड्यूल करने की प्राथमिकता और अनुशासन को बदलते हैं:
[22:47:33 root]# pidin -P io-audio pid tid name prio STATE Blocked 90127 1 sbin/io-audio 10o SIGWAITINFO 90127 2 sbin/io-audio 10o RECEIVE 1 90127 3 sbin/io-audio 10o RECEIVE 1 90127 4 sbin/io-audio 10o RECEIVE 1 90127 5 sbin/io-audio 50r INTR 90127 6 sbin/io-audio 50r RECEIVE 7 [22:47:36 root]# slay -T 3 -P 11r io-audio [22:47:38 root]# pidin -P io-audio pid tid name prio STATE Blocked 90127 1 sbin/io-audio 10o SIGWAITINFO 90127 2 sbin/io-audio 10o RECEIVE 1 90127 3 sbin/io-audio 11r RECEIVE 1 90127 4 sbin/io-audio 10o RECEIVE 1 90127 5 sbin/io-audio 50r INTR 90127 6 sbin/io-audio 50r RECEIVE 7
slay
उपयोगिता का एक पूर्ण विवरण QNX सहायता प्रणाली में उपलब्ध है।
बस के मामले में, मैं यह नोट करना चाहता था कि QNX6 में परिचित UNIX
ps
और
kill
यूटिलिटीज भी हैं। हालांकि, QNX6 का उपयोग
pidin
और
pidin
तुलना में बहुत अधिक सुविधाजनक है, क्योंकि वे सिस्टम की बारीकियों को ध्यान में रखते हैं।
निष्कर्ष
इस लेख को पढ़ने के बाद, आपको QNX6 में थ्रेड शेड्यूलिंग का विचार मिला, प्रक्रियाओं और थ्रेड्स को प्रबंधित करने के लिए प्राथमिकताओं और विषयों, योजना कार्यों और उपयोगिताओं की पर्याप्त जानकारी। QNX में एक दिलचस्प तकनीक, एडेप्टिव पार्टिशनिंग (अनुकूली अपघटन) भी है, जो आपको प्रक्रियाओं के समूह बनाने और उन्हें CPU समय का प्रतिशत असाइन करने की अनुमति देता है। सब कुछ एक साथ नहीं लाने के लिए, मैं निम्नलिखित नोटों में से एक में इस तकनीक का वर्णन करने की कोशिश करूंगा।
संदर्भ
- वास्तविक समय ऑपरेटिंग सिस्टम QNX न्यूट्रिनो 6.3। सिस्टम आर्किटेक्चर। आईएसबीएन 5-94157-827-एक्स
- वास्तविक समय ऑपरेटिंग सिस्टम QNX न्यूट्रिनो 6.3। उपयोगकर्ता मैनुअल। आईएसबीएन 978-5-9775-0370-9
- रोब क्रेटेन, "क्यूएनएक्स न्यूट्रिनो का परिचय 2. रियल-टाइम एप्लिकेशन डेवलपर्स के लिए एक गाइड," दूसरा संस्करण। आईएसबीएन 978-5-9775-0681-6
* इस लेख में QNX6 QNX 6.5.0 को संदर्भित करता है। चूंकि QNX न्यूट्रिनो कर्नेल को निम्न संस्करणों में से एक में संशोधित किया जा सकता है, इसलिए यहां उल्लिखित प्रवाह नियोजन तंत्र बदल सकता है।** QNX6 में एक और नियोजन अनुशासन (OTHER, o) भी है, जो गोल-रॉबिन (गोल-रॉबिन, आरआर, आर) के समान है।*** टिक अंतराल (टिकसाइज़) को बदला जा सकता है, उदाहरण के लिए, ClockPeriod()
फ़ंक्शन का उपयोग करके।