2011-05-26 16 views
8

मैं अपने लिए एक सीखने के उपकरण के रूप में एक बहुत ही सरल ऑपरेटिंग सिस्टम लिख रहा हूं। मेरा वर्तमान कार्य हार्डवेयर जितना संभव हो उतना पता लगा रहा है।मैं x86 असेंबली में कोर की संख्या का पता कैसे लगा सकता हूं?

अब तक मैं सीपीयूआईडी निर्देश का उपयोग कर सीपीयू के बारे में बहुत सारी जानकारी प्राप्त करने में सक्षम हूं। एक चीज जो मुझे नहीं मिलती है वह संख्या या भौतिक और/या तार्किक कोर है। X86 असेंबली और सी के संयोजन का उपयोग करके ऐसा करने का कोई तरीका है?

मैं ऑपरेटिंग सिस्टम लिख रहा हूं, इसलिए कोड पर्यवेक्षक मोड में चलाया जा सकता है, और इस जानकारी के लिए क्वेरी करने के लिए कोई सिस्टम लाइब्रेरी नहीं है।

उत्तर

11

सिस्टम में सभी प्रोसेसर खोजने के लिए, आपको या तो एसीपीआई टेबल या इंटेल की एमपी कॉन्फ़िगरेशन तालिका को पार्स करना होगा। अन्य प्रोसेसर खोजने और शुरू करने के लिए एमपी कॉन्फ़िगरेशन तालिका का उपयोग करने के लिए ट्यूटोरियल के लिए Bringing SMP to your UP Operating System देखें। http://www.acpi.info/spec.htm पर एसीपीआई पर अधिक जानकारी प्राप्त करें। आप Detecting CPU Topology को भी देखना चाहते हैं, जो आपको बता सकता है कि कौन से प्रोसेसर और कोर सिस्टम पर भौतिक चिप पर हैं।

अपने ओएस पर काम करते समय, http://wiki.osdev.org आपका सबसे अच्छा दोस्त होगा। यह सामान्य हार्डवेयर और उपकरणों सहित ऑपरेटिंग सिस्टम विकास के विभिन्न हिस्सों पर जानकारी से भरा है।

+0

अच्छा अंतिम लिंक। धन्यवाद! –

+3

आप देख सकते हैं कि मैक ओएस एक्स [xnu/osfmk/i386/cpuid.c] में समस्या हल करता है (http://opensource.apple.com/source/xnu/xnu-1504.9.37/osfmk/i386/cpuid। सी) ('core_count' के लिए खोजें) और [xnu/osfmk/i386/cpu_topology.c] (http://opensource.apple.com/source/xnu/xnu-1504.9.37/osfmk/i386/cpu_topology.c) । –

+0

बढ़िया! धन्यवाद। – Conlan

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