मैं समझ सकता हूं कि कोई प्रोग्राम कैसे लिख सकता है जो एकाधिक प्रक्रियाओं या धागे का उपयोग करता है: कांटा() एक नई प्रक्रिया और आईपीसी का उपयोग करें, या एकाधिक धागे बनाएं और संचार तंत्र के उन प्रकारों का उपयोग करें।यह नियंत्रित करने के लिए कि कौन सी कोर एक प्रक्रिया चलती है?
मैं संदर्भ स्विचिंग को भी समझता हूं। यही है, केवल एक बार सीपीयू के साथ, ऑपरेटिंग सिस्टम प्रत्येक प्रक्रिया के लिए समय निर्धारित करता है (और वहां कई शेड्यूलिंग एल्गोरिदम हैं) और इस प्रकार हम एक साथ कई प्रक्रियाओं को चलाने के लिए प्राप्त करते हैं।
और अब हम मल्टी कोर प्रोसेसर (या मल्टी-प्रोसेसर कंप्यूटर) है, हम दो प्रक्रियाओं दो अलग-अलग कोर पर एक साथ चल सकते थे।
मेरा प्रश्न पिछले परिदृश्य के बारे में है: कर्नेल नियंत्रण जो कोर एक प्रक्रिया पर चलता है कैसे करता है? कौन सी सिस्टम कॉल (लिनक्स में, या यहां तक कि विंडोज़) एक विशिष्ट कोर पर एक प्रक्रिया निर्धारित करता है?
कारण मैं पूछ रहा हूँ: मैं स्कूल है जहाँ हम कंप्यूटिंग में हाल ही में एक विषय का पता लगाने के लिए कर रहे हैं के लिए एक परियोजना पर काम कर रहा हूँ - और मैं मल्टी कोर आर्किटेक्चर चुना है। इस तरह के पर्यावरण में कार्यक्रम कैसे करें (डेडलॉक या रेस की स्थिति के लिए कैसे देखना है) पर बहुत सारी सामग्री प्रतीत होती है लेकिन अलग-अलग कोर को नियंत्रित करने पर ज्यादा कुछ नहीं। मुझे कुछ प्रदर्शन कार्यक्रम लिखने और कुछ असेंबली निर्देश या सी कोड को प्रस्तुत करने में सक्षम होना पसंद है "देखें, मैं दूसरे कोर पर एक अनंत लूप चला रहा हूं, के लिए CPU उपयोग में स्पाइक को देखें जो विशिष्ट कोर "।
कोई कोड उदाहरण? या ट्यूटोरियल?
संपादित करें: स्पष्टीकरण के लिए - कई लोगों ने कहा है कि इस ओएस का उद्देश्य है, और कहा कि एक ओएस इस का ख्याल रखना चाहिए। मैं पूरी तरह से सहमत! लेकिन फिर मैं जो पूछ रहा हूं (या महसूस करने की कोशिश कर रहा हूं) वह है जो ऑपरेटिंग सिस्टम वास्तव में ऐसा करता है। शेड्यूलिंग एल्गोरिदम नहीं, लेकिन अधिक "कोर को चुनने के बाद, कोर प्रारंभ निर्देशों को लाने के लिए कौन से निर्देश निष्पादित किए जाने चाहिए?"
संभव यहाँ जवाब: http://stackoverflow.com/questions/980999/what-does-multicore-assembly-language-look-like, उत्तर में से एक स्टार्टअप इंटरप्रोसेसर इंटरप्ट का वर्णन करता है, जिसे एक सीपीयू कोर से चिपसेट एपीआईसी में भेजा जा रहा है, और इसका उपयोग दूसरे सीपीयू को शुरू करने और उस पर कोड चलाने के लिए किया जा सकता है सीपीयू एक विशिष्ट पते पर –
हमारे स्वयं के ओएस में एसएमपी शुरू करने का न्यूनतम उदाहरण: http://stackoverflow.com/a/33651438/895245 उस के साथ बजाना + स्मृति को सिंक्रनाइज़ करना तरीका होना चाहिए। –