-20 से 19 तक क्यों अच्छाई नहीं होती है?


22

niceआदेश आप एक प्रोग्राम की शेड्यूलिंग प्राथमिकता ( "सुंदरता") को समायोजित करने के लिए अनुमति देता है। सभी यूनिक्स-जैसी प्रणालियों पर मैंने उपयोग किया है, पूर्णांक की एक श्रेणी द्वारा स्पष्टता निर्दिष्ट की जाती है, जहां -20 सबसे अनुकूल शेड्यूलिंग प्राथमिकता है, 0 डिफ़ॉल्ट है, और 19 सबसे कम अनुकूल है।

डिफ़ॉल्ट के रूप में 0 होने से पर्याप्तता सहज होती है, लेकिन -20 और 19 को सीमा के समापन बिंदु के रूप में क्यों चुना गया? क्यों नहीं -128 और 127, जो एक हस्ताक्षरित 8-बिट बाइट में बिल्कुल फिट होगा? या क्यों नहीं -100 से 100, जो दशमलव-दिमाग वाले मनुष्यों के लिए अधिक सहज है, या इसी तरह लेकिन थोड़ा अधिक एर्गोनोमिक रूप से, -99 से 99? क्या -20 से 19 की सीमा को मनमाने ढंग से चुना गया था, या क्या यह अनुसूचक के आंतरिक संबंधों से कुछ संबंध रखता है जो niceमूल रूप से हस्तक्षेप करते हैं? (मैं समझता हूं कि आज ऐसा कोई संबंध नहीं है, कम से कम लिनक्स के लिए, जिसका अनुसूचक 0 से 139 की सीमा में प्राथमिकताओं का उपयोग करता है। हालांकि, मैं -20 से 19 के लिए ऐतिहासिक कारणों में दिलचस्पी रखता हूं।)


4
मुझे यह बताते हुए एक संदर्भ नहीं मिल रहा है कि उस विशिष्ट रेंज को क्यों चुना गया था, लेकिन ध्यान दें कि V7 में प्राथमिकता एक हस्ताक्षरित बाइट में फिट होती है - proc.h देखें - और सेट्री फ़ंक्शन प्राथमिकता को निर्धारित करता है min(127, (recent CPU usage on a scale of 0 to 15) + 50 + pp->p_nice - 20), और प्राथमिकताएं <25 के लिए आरक्षित थीं निर्बाध चीजें करने वाली प्रक्रियाएं। इसलिए अच्छाई को एक सीमित दायरे की तरह होना पड़ा।
मार्क प्लॉटनिक

जवाबों:


7

आंतरिक चुस्ती का स्तर 0-39 है, लेकिन वेतन वृद्धि सकारात्मक या नकारात्मक है। स्रोत । तो इसका उत्तर यह है कि niceकमांड द्वारा स्वीकार किए गए संख्या (सकारात्मक और नकारात्मक) वे हैं जो आपको 20 से प्राप्त होते हैं, डिफ़ॉल्ट स्तर, 0-39 रेंज में कहीं भी।

तो 0-39 क्यों? विशिष्ट रेंज वह थी जो डिजाइनरों के मूल कार्यान्वयन में काम की थी। अधिक सकारात्मक मान होने का कारण यह है कि प्राथमिकता के निर्धारण में प्रक्रिया के हालिया सीपीयू उपयोग में अच्छा स्तर जोड़ा गया है। लगभग राउंड-रॉबिन शेड्यूलिंग प्रदान करने के लिए, कर्नेल इस बात पर नज़र रखता है कि प्रत्येक प्रक्रिया ने हाल ही में कितने सीपीयू को जला दिया था और उन प्रक्रियाओं पर स्विच कर दिया था जो कि नहीं थी। उच्च स्तर, उच्च सीपीयू समय जितना लगता है कि यह प्रक्रिया हुई है, और जितनी बार शेड्यूलर उस प्रक्रिया को सोएगा या उसे सो जाएगा। मौरिस जे। बाच, अप्रेंटिस-हॉल 1986, द्वारा UNIX ऑपरेटिंग सिस्टम का डिज़ाइन देखें । 8.1 (विशेष रूप से अच्छाई के लिए 8.1.4)। आईएसबीएन 0-13-201799-7।


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

-4

आप गलत हैं: यदि आप एक यूनिक्स पर हैं जहां अच्छा () इंटरफ़ेस अभी भी समझ में आता है, NZEROतो डिफ़ॉल्ट अच्छा मूल्य है और NZERO is 20

बात को और अधिक स्पष्ट करने के लिए: आपने कमांड के बारे में पूछा niceऔर उसी समय निरपेक्ष स्तरों का उल्लेख किया, लेकिन अच्छी कमांड पूर्ण मूल्यों का प्रबंधन नहीं करती है, बल्कि वर्तमान स्तर तक अपेक्षाकृत वृद्धि करती है। डिफ़ॉल्ट स्थिति के मामले में, अच्छा स्तर NZERO20 है।

अच्छे मूल्य 0..2 * NZERO-1 या 0..39 हैं

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


2
आप शेल इंटरफ़ेस और सी इंटरफ़ेस को भ्रमित करते हैं। यह प्रश्न niceशेल कमांड के बारे में है ।
गिल्स एसओ- बुराई को रोकना '

वैसे यह आप ही हैं जो चीजों को भ्रमित करते हैं। अच्छी कमांड केवल डेल्टास के बारे में जानती है लेकिन सवाल में अच्छे मूल्यों का उल्लेख है। प्रश्न अच्छे मूल्यों के बारे में था और मैंने इसका उत्तर दिया।
विद्वान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.