जहाँ तक मैं बता सकता हूँ, दोनों का उपयोग करें:
- बहुस्तरीय प्रतिक्रिया कतार
- प्राथमिकता का स्तर (भिन्न श्रेणी)
- दोनों धागे का प्रबंधन करते हैं न कि प्रक्रिया का
लेकिन बड़े अंतर क्या हैं?
cron और लिनक्स और विंडोज पर इसके विकल्प।
जहाँ तक मैं बता सकता हूँ, दोनों का उपयोग करें:
लेकिन बड़े अंतर क्या हैं?
cron और लिनक्स और विंडोज पर इसके विकल्प।
जवाबों:
इसके अनुसार MSDN पर शेड्यूलिंग प्राथमिकताएँ :
थ्रेड्स को उनकी शेड्यूलिंग प्राथमिकता के आधार पर चलाने के लिए निर्धारित किया गया है। से प्रत्येक थ्रेड को शेड्यूलिंग प्राथमिकता दी गई है। प्राथमिकता स्तर की सीमा होती है शून्य से (सबसे कम प्राथमिकता) से 31 (सर्वोच्च प्राथमिकता) तक। सिर्फ शून्य-पृष्ठ थ्रेड में शून्य की प्राथमिकता हो सकती है। (शून्य-पृष्ठ सूत्र है एक सिस्टम थ्रेड किसी भी मुक्त पृष्ठों को शून्य करने के लिए जिम्मेदार है जब वहाँ हैं कोई अन्य सूत्र जिसे चलाने की आवश्यकता है।)
सिस्टम सभी थ्रेड्स को समान प्राथमिकता के साथ मानता है। सिस्टम सभी धागे के लिए एक राउंड-रॉबिन फैशन में समय स्लाइस प्रदान करता है सर्वोच्च प्राथमिकता के साथ। यदि इनमें से कोई भी धागा चलाने के लिए तैयार नहीं है, सिस्टम सभी थ्रेड्स के लिए एक राउंड-रॉबिन फैशन में समय स्लाइस प्रदान करता है अगली सर्वोच्च प्राथमिकता के साथ। यदि एक उच्च प्राथमिकता वाला धागा बन जाता है चलाने के लिए उपलब्ध, सिस्टम कम-प्राथमिकता को निष्पादित करना बंद कर देता है थ्रेड (इसके समय के स्लाइस का उपयोग करके इसे समाप्त करने की अनुमति के बिना), और उच्च प्राथमिकता वाले धागे को एक पूर्णकालिक टुकड़ा प्रदान करता है। प्रत्येक थ्रेड की प्राथमिकता निम्नलिखित मानदंडों द्वारा निर्धारित की जाती है:
- इसकी प्रक्रिया की प्राथमिकता वर्ग
- अपनी प्रक्रिया की प्राथमिकता वर्ग के भीतर धागे का प्राथमिकता स्तर
मेरा मानना है कि यह थ्रेड शेड्यूलर एक एल्गोरिथ्म का वर्णन करता है बहुस्तरीय कतार , जो मल्टीलेवल फीडबैक कतार की तुलना में बहुत सरल शेड्यूलिंग एल्गोरिदम है। ध्यान दें कि विंडोज ' प्रक्रिया अनुसूचक का उपयोग करता है बहुस्तरीय प्रतिक्रिया कतार , इसके अनुसार विकिपीडिया । विंडोज 7 और विंडोज सर्वर 2008 आर 2 के बाद से, वहाँ भी है उपयोगकर्ता-मोड निर्धारण जो प्रक्रियाओं को अपने स्वयं के थ्रेड शेड्यूलिंग का प्रबंधन करने देता है।
जैसा कि दूसरों ने उल्लेख किया है, लिनक्स प्रक्रिया का व्यवहार करता है और शेड्यूलिंग परिप्रेक्ष्य से समान है। लिनक्स में प्रक्रिया / थ्रेड शेड्यूलिंग कॉन्फ़िगर करने योग्य है, विभिन्न शेड्यूलिंग एल्गोरिदम हैं और कुछ को केएएस को फिर से जोड़कर कॉन्फ़िगर किया जा सकता है:
ध्यान दें कि ऊपर डिफ़ॉल्ट का मतलब है कि वेनिला कर्नेल में डिफ़ॉल्ट है। डिफॉल्ट कर्नेल के साथ कुछ डिस्ट्रो शिप जो कि अलग-अलग डिफॉल्ट शेड्यूलर का उपयोग करने के लिए पूर्वनिर्मित है।
शेड्यूलिंग एल्गोरिदम के अलावा, वहाँ भी हैं अनुसूचक नीतियां : SCHED_FIFO, SCHED_ATCH, SCHED_IDLE, SCHED_OTHER और SCHED_RR; जिसे रनटाइम में बदला जा सकता है जो उस प्रक्रिया के प्रकार का कार्यभार बताता है।
वर्तमान डिफ़ॉल्ट शेड्यूलर पूरी तरह से उचित समयबद्धक, शेड्यूलिंग निष्पक्षता बनाए रखने के लिए एक लाल-काले पेड़ का उपयोग करता है। से लिनक्स 2.6 के अंदर पूरी तरह से उचित समयबद्धक :
CFS के पीछे मुख्य विचार संतुलन (निष्पक्षता) को बनाए रखना है कार्यों के लिए प्रोसेसर समय प्रदान करना। इसका मतलब है कि प्रक्रियाएं होनी चाहिए प्रोसेसर की एक उचित राशि दी। जब कार्यों का समय समाप्त हो जाता है शेष राशि का अर्थ है कि एक या अधिक कार्यों को उचित राशि नहीं दी गई है दूसरों के सापेक्ष समय), फिर उन कार्यों का संतुलन होना चाहिए निष्पादन के लिए समय दिया गया।
शेष राशि का निर्धारण करने के लिए, सीएफएस समय की मात्रा को बनाए रखता है वर्चुअल रनटाइम नामक किसी दिए गए कार्य को प्रदान किया गया। किसी कार्य का वर्चुअल रनटाइम छोटा - मतलब समय की छोटी राशि a कार्य को प्रोसेसर तक पहुंच की अनुमति दी गई है - इसकी आवश्यकता जितनी अधिक होगी प्रोसेसर के लिए। सीएफएस में स्लीपर की अवधारणा भी शामिल है यह सुनिश्चित करने के लिए निष्पक्षता कि वर्तमान में रन करने योग्य नहीं हैं (के लिए) उदाहरण के लिए, I / O की प्रतीक्षा में प्रोसेसर का एक तुलनीय हिस्सा मिलता है जब उन्हें अंततः इसकी आवश्यकता होगी।
लेकिन एक रन कतार में कार्यों को बनाए रखने के बजाय, जैसा कि अंदर किया गया है पूर्व लिनक्स अनुसूचक, सीएफएस एक समय-क्रमित लाल-काला बनाए रखता है पेड़ (चित्र 1 देखें)। एक लाल-काला पेड़ एक पेड़ है जिसमें कुछ जोड़े होते हैं दिलचस्प और उपयोगी गुण। सबसे पहले, यह आत्म संतुलन है, जो इसका मतलब है कि पेड़ में कोई भी रास्ता कभी भी दोगुना से ज्यादा नहीं होगा कोई और। दूसरा, पेड़ पर परिचालन ओ (लॉग एन) समय में होता है (जहाँ n पेड़ में नोड्स की संख्या है)। इसका मतलब है कि आप कर सकते हैं किसी कार्य को जल्दी और कुशलता से सम्मिलित करना या हटाना।
तो मुख्य अंतर:
विंडोज
लिनक्स
यदि आप कर्नेल शेड्यूलर का उल्लेख कर रहे हैं (और कुछ टिप्पणियों की तरह आवधिक कार्य अनुसूचक नहीं), तो लिनक्स में यह बहुत आसान है: शेड्यूलिंग के संदर्भ में, लिनक्स थ्रेड्स और प्रक्रियाओं के बीच कोई अंतर नहीं करता है। कर्नेल के दृष्टिकोण से, वे सिर्फ शेड्यूलिंग यूनिट हैं; अंतर में निर्भर करता है वजन संदर्भ स्विच के। इसे कभी-कभी ए भी कहा जाता है एक-से-एक थ्रेडिंग मॉडल ।
जैसा कि विंडोज इंटर्नल के संबंध में कम जानकारी उपलब्ध है, थोड़ा कहा जा सकता है। हालांकि, विंडोज ने ऐतिहासिक रूप से प्रक्रियाओं और थ्रेड्स के बीच अंतर किया है, इसलिए यह अधिक संभावना है कि शेड्यूलिंग के संदर्भ में उन्हें अलग तरीके से व्यवहार किया जाता है।
C2H5OH, आप यह क्यों कहेंगे कि जब सब कुछ उपलब्ध है, तो विंडोज इंटर्नल पर कोई प्रलेखन नहीं है? मुझे पता नहीं... आप यहाँ मूल बातें पढ़ सकते हैं, http://msdn.microsoft.com/en-us/library/windows/desktop/ms684259(v=vs.85).aspx
विकिपीडिया (थ्रेड्स (कंप्यूटिंग)) पर एक लेख है जो अधिकांश अंतर बताता है, लेकिन उद्धृत स्रोतों के बिना, इसलिए ...