क्या लिनक्स पर अधिक धागे वाली प्रक्रिया में एक थ्रेड के साथ प्रक्रिया की तुलना में अधिक सीपीयू समय होगा?लिनक्स पर अधिक धागे के साथ प्रक्रिया में एक थ्रेड के साथ प्रक्रिया की तुलना में अधिक सीपीयू समय होगा?
लिनक्स प्रक्रियाओं और धागे में कार्य संरचना द्वारा वर्णित किया गया है, और scheduling is based on tasks।
current->counter >>= 1;
p->counter = current->counter;
में:
जब एक नई प्रक्रिया बनाई गई है,
do_fork()
दोनों वर्तमान (पैरेंट) के काउंटर क्षेत्र और पी (बच्चे) निम्नलिखित तरीके से प्रक्रियाओं सेट: मैं भी this पाया दूसरे शब्दों में, माता-पिता को छोड़ी गई टिकों की संख्या दो हिस्सों में विभाजित है, एक माता पिता के लिए और एक बच्चे के लिए। यह उपयोगकर्ताओं को निम्नलिखित विधि का उपयोग करके असीमित मात्रा में CPU समय प्राप्त करने से रोकने के लिए किया जाता है: मूल प्रक्रिया एक बाल प्रक्रिया बनाती है जो एक ही कोड चलाती है और फिर खुद को मार देती है; सृजन दर को सही ढंग से समायोजित करके, बच्चे की प्रक्रिया हमेशा अपने माता-पिता की समाप्ति की मात्रा से पहले एक ताजा क्वांटम प्राप्त करेगी। यह प्रोग्रामिंग चाल काम नहीं करती है क्योंकि कर्नेल फोर्क इनाम नहीं देता है। इसी प्रकार, कोई उपयोगकर्ता शैल में बहुत सारी पृष्ठभूमि प्रक्रियाओं को शुरू करके या ग्राफिकल डेस्कटॉप पर बहुत सारी विंडो खोलकर प्रोसेसर का अनुचित हिस्सा नहीं लगा सकता है। आम तौर पर बोलते हुए, एक प्रक्रिया संसाधनों को हॉग नहीं कर सकती है (जब तक कि यह कई वंशजों को फोर्क करके स्वयं को वास्तविक समय नीति प्रदान करने के लिए विशेषाधिकार न हो)।
असल में मुझे कर्नेल स्रोतों में यह नहीं मिला, लेकिन शायद यह मेरी गलती है, शायद मैंने गलत कर्नेल संस्करण देखा है।
लेकिन बाद में क्या होता है, क्या प्रत्येक थ्रेड शेड्यूलिंग में एक अलग प्रक्रिया की तरह भाग लेता है? क्या दस धागे वाली प्रक्रिया एक थ्रेड के साथ प्रक्रिया की तुलना में दस गुना अधिक टिक प्राप्त करेगी? इस अर्थ में आईओ के बारे में क्या?
ऐसे विस्तृत उत्तर के लिए धन्यवाद! क्या यह सही है कि समूह समूह इस तरह से समूहों के आईओ को सीमित कर रहे हैं? – van
हां, हालांकि मुझे जटिल पदानुक्रमों के लिए I/O शेड्यूलर की वर्तमान स्थिति का समर्थन नहीं है, देखें: http://lwn.net/Articles/427961/ – ninjalj
मैं प्रति सत्र आईडी cpu cgroups के बारे में आपका बयान सत्यापित करने का प्रयास करता हूं । और जैसा कि मैं देख सकता था कि यह मेरे उबंटू 12.04 लैपटॉप http://pastebin.com/0Fjp2BQy के लिए सच नहीं है। RedHat 6.3 की स्थिति भी सबसे खराब है, सभी प्रक्रिया एक cgroup "/" में है। क्या यह विशिष्ट विशिष्ट है? या मैं क्या गलत कर रहा हूँ? – van