विंडोज और लिनक्स थ्रेड अनुसूचक के बीच अंतर


4

जहाँ तक मैं बता सकता हूँ, दोनों का उपयोग करें:

  • बहुस्तरीय प्रतिक्रिया कतार
  • प्राथमिकता का स्तर (भिन्न श्रेणी)
  • दोनों धागे का प्रबंधन करते हैं न कि प्रक्रिया का

लेकिन बड़े अंतर क्या हैं?


क्या आप आश्वस्त हैं कि कोई भी है, कम से कम जब लिनक्स को सामान्य डिस्ट्रोस में से एक के रूप में आपूर्ति और स्थापित किया जाता है और कोई पुनर्निर्माण / पुनर्गठन नहीं किया गया है?

विकिपीडिया पृष्ठ और पुस्तक के शेड्यूलिंग के अध्याय के अनुसार मैं वहां पढ़ रहा हूं, लेकिन ज्यादातर लिनक्स को कवर किया गया है और विंडोज के बारे में मुश्किल से कुछ भी है। इसके अलावा, लाइनक्स के तहत कर्नेल संस्करणों के बीच और यहां तक ​​कि विंडोज पर XP / Vista / 7 के बीच भी अंतर प्रतीत होता है, इसलिए मैं बस कुछ सामान्य अंतरों की तलाश कर रहा हूं, यदि कोई हो।

बड़ा अंतर? ... ठीक है, एक लिनक्स के लिए यदि आप चाहें, तो आप विभिन्न के बीच चयन कर सकते हैं। लेकिन मुझे लगता है कि किसी भी उपयोगी तरीके से उत्तर देने के लिए प्रश्न बहुत व्यापक है। BTW: आप चाहिए निश्चित रूप से स्पष्ट करें कि आप थ्रेड अनुसूचक का मतलब है, नहीं cron और लिनक्स और विंडोज पर इसके विकल्प।
0xC0000022L

यह भी ध्यान दें कि लिनक्स में है अनेक शेड्यूलर। सबसे उल्लेखनीय पूरी तरह से निष्पक्ष समयबद्धक और मस्तिष्क F.ck अनुसूचक हैं।
new123456

आपको फिर से विंडोज़ पूछना पड़ सकता है। फिर से पूछें। दोनों का अध्ययन करें। मतभेदों का पता लगाएं। एक कंप्यूटर विज्ञान स्टैटेक्सचेंज साइट पर अधिक तकनीकी प्रश्न पूछ सकते हैं जो शायद बहुत विशिष्ट नहीं हैं। आप क्या किताब पढ़ रहे हैं? विलियम स्टालिंग में ओएस पर एक महान पुस्तक है जो शेड्यूलिंग को कवर करती है लेकिन मुझे नहीं लगता कि यह ओएस विशिष्ट है
barlop

जवाबों:


6

इसके अनुसार MSDN पर शेड्यूलिंग प्राथमिकताएँ :

थ्रेड्स को उनकी शेड्यूलिंग प्राथमिकता के आधार पर चलाने के लिए निर्धारित किया गया है। से प्रत्येक   थ्रेड को शेड्यूलिंग प्राथमिकता दी गई है। प्राथमिकता स्तर की सीमा होती है   शून्य से (सबसे कम प्राथमिकता) से 31 (सर्वोच्च प्राथमिकता) तक। सिर्फ   शून्य-पृष्ठ थ्रेड में शून्य की प्राथमिकता हो सकती है। (शून्य-पृष्ठ सूत्र है   एक सिस्टम थ्रेड किसी भी मुक्त पृष्ठों को शून्य करने के लिए जिम्मेदार है जब वहाँ हैं   कोई अन्य सूत्र जिसे चलाने की आवश्यकता है।)

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

  • इसकी प्रक्रिया की प्राथमिकता वर्ग
  • अपनी प्रक्रिया की प्राथमिकता वर्ग के भीतर धागे का प्राथमिकता स्तर

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

जैसा कि दूसरों ने उल्लेख किया है, लिनक्स प्रक्रिया का व्यवहार करता है और शेड्यूलिंग परिप्रेक्ष्य से समान है। लिनक्स में प्रक्रिया / थ्रेड शेड्यूलिंग कॉन्फ़िगर करने योग्य है, विभिन्न शेड्यूलिंग एल्गोरिदम हैं और कुछ को केएएस को फिर से जोड़कर कॉन्फ़िगर किया जा सकता है:

ध्यान दें कि ऊपर डिफ़ॉल्ट का मतलब है कि वेनिला कर्नेल में डिफ़ॉल्ट है। डिफॉल्ट कर्नेल के साथ कुछ डिस्ट्रो शिप जो कि अलग-अलग डिफॉल्ट शेड्यूलर का उपयोग करने के लिए पूर्वनिर्मित है।

शेड्यूलिंग एल्गोरिदम के अलावा, वहाँ भी हैं अनुसूचक नीतियां : SCHED_FIFO, SCHED_ATCH, SCHED_IDLE, SCHED_OTHER और SCHED_RR; जिसे रनटाइम में बदला जा सकता है जो उस प्रक्रिया के प्रकार का कार्यभार बताता है।

वर्तमान डिफ़ॉल्ट शेड्यूलर पूरी तरह से उचित समयबद्धक, शेड्यूलिंग निष्पक्षता बनाए रखने के लिए एक लाल-काले पेड़ का उपयोग करता है। से लिनक्स 2.6 के अंदर पूरी तरह से उचित समयबद्धक :

CFS के पीछे मुख्य विचार संतुलन (निष्पक्षता) को बनाए रखना है   कार्यों के लिए प्रोसेसर समय प्रदान करना। इसका मतलब है कि प्रक्रियाएं होनी चाहिए   प्रोसेसर की एक उचित राशि दी। जब कार्यों का समय समाप्त हो जाता है   शेष राशि का अर्थ है कि एक या अधिक कार्यों को उचित राशि नहीं दी गई है   दूसरों के सापेक्ष समय), फिर उन कार्यों का संतुलन होना चाहिए   निष्पादन के लिए समय दिया गया।

शेष राशि का निर्धारण करने के लिए, सीएफएस समय की मात्रा को बनाए रखता है   वर्चुअल रनटाइम नामक किसी दिए गए कार्य को प्रदान किया गया।   किसी कार्य का वर्चुअल रनटाइम छोटा - मतलब समय की छोटी राशि a   कार्य को प्रोसेसर तक पहुंच की अनुमति दी गई है - इसकी आवश्यकता जितनी अधिक होगी   प्रोसेसर के लिए। सीएफएस में स्लीपर की अवधारणा भी शामिल है   यह सुनिश्चित करने के लिए निष्पक्षता कि वर्तमान में रन करने योग्य नहीं हैं (के लिए)   उदाहरण के लिए, I / O की प्रतीक्षा में प्रोसेसर का एक तुलनीय हिस्सा मिलता है   जब उन्हें अंततः इसकी आवश्यकता होगी।

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

तो मुख्य अंतर:

विंडोज

  • मल्टीलेवल फीडबैक कतार + थ्रेड शेड्यूलिंग का उपयोग करते हुए मल्टीलेवल कतार का उपयोग करते हुए प्रक्रिया निर्धारण। थ्रेड शेड्यूलर केवल सर्वोच्च प्राथमिकता वाला थ्रेड चुनता है, प्रक्रिया शेड्यूलर होशियार है और फीडबैक कतार का उपयोग करता है।

लिनक्स

  • एकीकृत प्रक्रिया और थ्रेड शेड्यूलर, विन्यास योग्य, डिफ़ॉल्ट रूप से सीएफएस का उपयोग करता है। अनुसूचक निष्पक्षता के एक मीट्रिक का उपयोग करता है और उच्च प्राथमिकता प्रक्रियाओं के लिए सीपीयू के वितरण को तिरछा करने के लिए प्राथमिकता का उपयोग करता है।

3
लेकिन Winoows प्रक्रिया निष्पादन की इकाइयाँ नहीं हैं; वे संसाधनों के लिए कंटेनर हैं (यदि प्रक्रिया चल रही है, तो कम से कम एक धागा सहित)। प्रक्रिया शेड्यूलिंग और थ्रेड शेड्यूलिंग के बीच अंतर करना मुझे गलत लगता है। मुझे लगता है कि आपका पहला स्रोत या तो पुराना है या पुराना है, और आप विकिपीडिया प्रविष्टि में बहुत अधिक पढ़ रहे हैं। शेड्यूलर के साथ बातचीत करने का एकमात्र तरीका अपने थ्रेड्स के लिए आधारभूत प्राथमिकता प्रदान करना है।
Ian Ni-Lewis

1

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

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


1

C2H5OH, आप यह क्यों कहेंगे कि जब सब कुछ उपलब्ध है, तो विंडोज इंटर्नल पर कोई प्रलेखन नहीं है? मुझे पता नहीं... आप यहाँ मूल बातें पढ़ सकते हैं, http://msdn.microsoft.com/en-us/library/windows/desktop/ms684259(v=vs.85).aspx

विकिपीडिया (थ्रेड्स (कंप्यूटिंग)) पर एक लेख है जो अधिकांश अंतर बताता है, लेकिन उद्धृत स्रोतों के बिना, इसलिए ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.