POSIX XSH 2.8.4 Process Scheduling के बीच विसंगति को समझना धागे और प्रक्रियाओं के लिए शेड्यूलिंग विशेषताओं के व्यवहार को परिभाषित करता है। sched_*
इंटरफेस को प्रक्रिया की शेड्यूलिंग गुणों को प्रभावित करने के लिए निर्दिष्ट किया गया है, धागा नहीं। यह निम्न मार्ग में स्पष्ट किया जाता है:POSIX और Linux/glibc sched_ * फ़ंक्शंस
POSIX मॉडल एक या अधिक थ्रेड प्रोसेसर (ओं) पर ऑपरेटिंग सिस्टम द्वारा निर्धारित किया गया हो सहित सिस्टम संसाधन, के एकीकरण का एक "प्रक्रिया" व्यवहार करता है यह नियंत्रित करता है । यद्यपि एक प्रक्रिया में शेड्यूलिंग विशेषताओं का अपना सेट होता है, लेकिन नीचे वर्णित व्यक्तिगत थ्रेड के शेड्यूलिंग व्यवहार पर इन पर अप्रत्यक्ष प्रभाव (यदि कोई है) है।
और
प्रणाली शेड्यूलिंग विवाद गुंजाइश के साथ धागे के लिए, प्रक्रिया अनुसूचन विशेषताओं शेड्यूलिंग गुण या या तो धागा या एक अंतर्निहित गिरी शेड्यूलिंग कि धागा करने के लिए समर्पित संस्था के व्यवहार पर कोई प्रभाव नहीं होगा।
इस बात का मेरे पढ़ने कि, एक प्रणाली है जहाँ केवल "प्रणाली शेड्यूलिंग विवाद गुंजाइश" समर्थित है (लिनक्स/एक ऐसी प्रणाली glibc है) पर, sched_*
कार्यों बिल्कुल नहीं नमूदार प्रभाव होना चाहिए है।
यह लिनक्स/ग्लिब पर वर्तमान व्यवहार की वास्तविकता के विपरीत है जहां sched_*
किसी विशेष थ्रेड के शेड्यूलिंग विशेषताओं को सेट करता है।
एक तरफ बेहतर सामान्य रूप में इस स्थिति को समझने के लिए इच्छुक से, मुझे लगता है मैं इन महत्वपूर्ण प्रश्न हैं लगता है:
वहाँ इस विसंगति के लिए तर्क के किसी भी प्रलेखन है?
क्या मेरा मानक सही है? विशेष रूप से, यह वास्तव में मुझे आश्चर्यजनक लगता है कि
sched_setparam
औरsched_setscheduler
को एकल-थ्रेडेड एप्लिकेशन में कोई प्रभाव नहीं डाला जाएगा (जहां मुख्य धागा डिफ़ॉल्ट शेड्यूलिंग नीति का उपयोग कर रहा है, जिसे बदला नहीं जा सकता है, और सिस्टम विवाद स्कोप)।मानक
sched_*
फ़ंक्शंस की उपयोगिता क्या है? ऐसा लगता है कि उनके पास अधिकांश कार्यान्वयन पर कोई प्रभाव नहीं पड़ता है, और प्रक्रिया विवाद स्कोप का समर्थन करने वाले कार्यान्वयन पर भी कम प्रभाव पड़ता है। क्या कोई उनके इच्छित उद्देश्य का वर्णन कर सकता है?
यदि यह स्टैक ओवरफ्लो नहीं था, तो यहां एक लौ युद्ध शुरू हो गया होगा। – ssice