How can I detect the number of cores in x86 assembly?
I am writing a very simple operating system as a learning tool for myself. My current task is detecting as much about the hardware as possible.
I have so far been able to find a lot of information about the CPU using the CPUID instruction. The one thing I can't seem to find is the number or physical and/or logical cores. Is there a way to do this using a combination of x86 assembly and C?
I am writing the operating system, so the code can be run in supervisor mode, and there are no system libraries to query for this information.
In order to find all of the processors in a system, you must parse either the ACPI tables or Intel's MP configuration table. See Bringing SMP to your UP Operating System for a tutorial on using the MP configuration table to find and start other processors. Find more information on ACPI at http://www.acpi.info/spec.htm. You may also want to check out Detecting CPU Topology, which can tell you which processors and cores are on which physical chip within a system.
When working on your OS, http://wiki.osdev.org will be your best friend. It is full of information on all of the different parts of operating system development, including common hardware and tools.
链接地址: http://www.djcxy.com/p/82354.html上一篇: 英特尔8086汇编中的CS和IP寄存器的用途是什么?
下一篇: 我如何检测x86汇编中的内核数量?