यदि एक ही प्रोसेसर में n थ्रेड्स (T1, T2...Tn) चल रहे हैं n समानांतर में अलग-अलग कार्य और प्रत्येक थ्रेड द्वारा प्रत्येक कार्य को पूरा करने का समय क्रमशः (t1, t2...tn) है, तो कुल नहीं होगा सभी कार्यों को पूरा करने में लगने वाला समय Ttotal = max(t1, t2..tn) + (context switch time) के स्थान पर Ttotal = (t1+t2+..tn) + (total context switch time) होगा?

मुझे पता है कि थ्रेड्स शुरू करने से कुल प्रतीक्षा समय कम हो जाता है लेकिन क्या यह किसी भी मौके से सभी कार्यों के कुल प्रसंस्करण समय को कम कर देता है? मुझे इसमें संदेह है क्योंकि मुझे पता है कि ऐसी कोई अवधारणा नहीं है जिसमें एक एकल प्रोसेसर एक ही समय इकाई में कई कार्य चला सकता है।

1
tapopadma 19 जुलाई 2018, 04:16

2 जवाब

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

2
notXX 19 जुलाई 2018, 04:25

लिया गया कुल समय Ttotal = (t1+t2+..tn) + (total context switch time) होगा, क्योंकि प्रत्येक कार्य T(i) को t(i) समय की इकाइयों की आवश्यकता होगी।

हालांकि, चूंकि ये सभी कार्य एक दूसरे से अलग और अलग हैं, वे n थ्रेड्स के समानांतर में होते हैं और एक दूसरे से स्वतंत्र रूप से निष्पादित किए जा सकते हैं। इसलिए, वास्तव में, मल्टीथ्रेडिंग का उपयोग करते समय, वास्तव में ऐसा प्रतीत होता है कि लिया गया कुल समय Ttotal = max(t1, t2..tn) + (context switch time) है।

0
Arnav 19 जुलाई 2018, 04:30