2009-10-25 21 views
10

x86 पर वास्तविक मोड में, एक मल्टीप्रोसेसर सिस्टम में एक अलग प्रोसेसर पर कोड चलाने के लिए किन निर्देशों का उपयोग करने की आवश्यकता होगी? एकविभिन्न प्रोसेसर (x86 असेंबली) पर कोड चलाना

(मुझे लगता है कि वास्तविक ऑपरेटिंग सिस्टम जूते से पहले कुछ CPU रजिस्टरों निर्धारित करते हैं, और सिस्टम में हर CPU पर ऐसा करने के लिए, की जरूरत है कोडांतरक में कुछ पूर्व बूट कोड लिख रहा हूँ।)

+1

क्या आप वास्तविक मोड में एमपी भी कर सकते हैं? – Draemon

+0

कोई कारण नहीं है। एमपी के बारे में कुछ भी मोड-विशिष्ट नहीं है। –

+1

http://stackoverflow.com/questions/980999/what-does-multicore-assembly-language-look-like –

उत्तर

9

तो आपके पास स्टैंडअलोन (आपने कहा "प्री-बूट") प्रोग्राम, बूटलोडर की तरह, असली मोड में चल रहा है? और यह सामान्य BIOS के साथ एक पीसीआई पर है?

उस स्थिति में आपके पास केवल एक सीपीयू चल रहा है।

BSP sends AP an INIT IPI 
BSP DELAYs (10mSec) 
If (APIC_VERSION is not an 82489DX) { 
    BSP sends AP a STARTUP IPI 
    BSP DELAYs (200μSEC) 
    BSP sends AP a STARTUP IPI 
    BSP DELAYs (200μSEC) 
} 
BSP verifies synchronization with executing AP 

बसपा बूट प्रोसेसर है: आदेश स्पिन-अप करने के लिए अन्य सीपीयू इकाइयों एक ऑपरेटिंग सिस्टम आम तौर पर निष्पादित करेंगे क्या कहा जाता है सार्वभौमिक स्टार्टअप एल्गोरिथ्म जो इस प्रकार है में। एक एपी एक आवेदन प्रोसेसर है। एक आईपीआई एक अंतर प्रोसेसर बाधा है। आईपीआई करने के लिए, आपको एपीआईसी, पीसी आर्किटेक्चर में एक इंटरप्ट कंट्रोलर एक्सटेंशन सक्षम करने की आवश्यकता है जो बूटअप पर सक्षम नहीं है। यही कारण है कि कोड इस बात से चिंतित है कि यह किस तरह का आईसीयू संस्करण चल रहा है। यह सब काफी गहरी कर्नेल जादू है। आप उदाहरण के लिए लिनक्स, नेटबीएसडी, या अन्य * बीएसडी स्रोत कोड को देखने का प्रयास कर सकते हैं, लेकिन इसे पढ़ना आसान नहीं होगा। यदि आप वास्तव में जीतते हैं, तो आपको कहीं भी एक छोटा कर्नेल या स्टैंडअलोन एसएमपी परीक्षण प्रोग्राम मिल सकता है।

अधिक जानकारी के लिए, Intel Multiprocessor Specification देखें।

+0

धन्यवाद की एक डुप्ली की तरह दिखता है , यह सिर्फ मुझे आवश्यक जानकारी है! यह एक चुनौती होनी चाहिए ... –

संबंधित मुद्दे