मैक ओएस एक्स में मल्टीप्रोसेसिंग


2

क्या मैक ओएस एक्स एक इंटेल आई 7 क्वाड कोर प्रोसेसर में विभिन्न कोर को प्रक्रियाएं वितरित करने में सक्षम होगा, भले ही एप्लिकेशन बहु-थ्रेडेड न हों?

जवाबों:


3

एक थ्रेड वह होता है जो ओएस देखता है और इसे चलाने के लिए कोर पर शेड्यूल करता है।

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

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

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

उप-प्रक्रियाओं को स्पॉन करने वाले कार्यक्रमों के लिए भी यही सच है। I / O या अंतर-प्रक्रिया सिंक्रनाइज़ेशन समस्याएँ हो सकती हैं जो सभी स्पॉन्स्ड सब-प्रोसेस को सही मायने में सभी समय में समानांतर चलने से रोकती हैं।


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

मैं व्यक्तिगत रूप से एक उच्च घड़ी की गति पर अधिक कोर ले जाऊंगा। उन कार्यों में आम तौर पर सीपीयू गहन नहीं होते हैं, इसलिए अधिक समवर्ती धागे को चलाने में सक्षम होने के कारण एक या दो धागे को थोड़ी तेजी से चलाने में सक्षम होने से अधिक लाभ होगा।
Ian C.

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

1
@ जेसन बिल्कुल। ओएस के दृष्टिकोण से यह सभी विभिन्न कार्यक्रमों से कई, कई धागे देखता है। और यदि संभव हो तो समानांतर में यह उन सभी को शेड्यूल करेगा। तो रूबी धागा और अपाचे धागा और ग्रहण आईडीई धागे सभी एक साथ चल सकते हैं।
Ian C.

1

यदि एप्लिकेशन स्वयं मल्टीथ्रेडेड नहीं है, तो यह एक ही कोर पर रहेगा। यदि आपके पास कई एकल थ्रेडेड एप्लिकेशन हैं जो चल रहे हैं तो यह मान लेना उचित है कि ओएस एक्स उन्हें उचित रूप से कोर के बीच वितरित करेगा।


आह, लेकिन यह धारणा है कि मैं सत्यापित करने की कोशिश कर रहा हूं। अभी तक इस तथ्य का पता लगाना मुश्किल है।
Jason

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

मुझे बोर होने दो और एक आखिरी पूछताछ करो। तकनीकी कारण क्या होगा कि एक 3D गेम जैसे ऐप दोहरे कोर की तुलना में क्वाड पर कम कुशलता से प्रदर्शन करेगा। मैं उस कथन को बार-बार देखता हूं, लेकिन बिना किसी तकनीकी कारण के इसे वापस करने के लिए।
Jason

1
@ जैसन मेरा अनुमान है कि गेम बहुत सारे डेटा संग्रहीत करता है जो कि अगले फ्रेम को उत्पन्न करने के लिए गणना करता है। यदि पिछली बार की तुलना में थ्रेड एक अलग कोर पर चलता है, तो इस बात की संभावना बढ़ जाती है कि डेटा कैश में नहीं होगा और पुनर्प्राप्त होने में अधिक समय लगेगा। इसके अलावा, मुझे लगता है कि अधिकांश स्थान जो अधिक प्रोसेसर का दावा करते हैं, बेकार है जब तक कि ऐप उनका समर्थन नहीं करता है यह इस धारणा से दूर है कि यदि कोई प्रोसेसर समय सक्रिय रूप से उपयोग नहीं किया जा रहा है तो अधिकांश प्रक्रियाएं कम होती हैं।
ughoavgfhw

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