如何检测x86汇编中的内核数量?

时间:2011-05-26 22:58:42

标签: assembly operating-system x86

我正在为自己编写一个非常简单的操作系统作为学习工具。我目前的任务是尽可能多地检测硬件。

到目前为止,我已经能够使用CPUID指令找到有关CPU的大量信息。我似乎无法找到的一件事是数字或物理和/或逻辑核心。有没有办法使用x86程序集和C?

的组合来完成此操作

我正在编写操作系统,因此代码可以在管理员模式下运行,并且没有系统库可以查询此信息。

1 个答案:

答案 0 :(得分:12)

要查找系统中的所有处理器,您必须解析ACPI表或Intel的MP配置表。有关使用MP配置表查找和启动其他处理器的教程,请参阅Bringing SMP to your UP Operating System。在http://www.acpi.info/spec.htm查找有关ACPI的更多信息。您可能还想查看Detecting CPU Topology,它可以告诉您哪些处理器和内核在系统中的哪个物理芯片上。

在操作系统时,http://wiki.osdev.org将是您最好的朋友。它充满了有关操作系统开发的所有不同部分的信息,包括通用硬件和工具。