我正在为自己编写一个非常简单的操作系统作为学习工具。我目前的任务是尽可能多地检测硬件。
到目前为止,我已经能够使用CPUID指令找到有关CPU的大量信息。我似乎无法找到的一件事是数字或物理和/或逻辑核心。有没有办法使用x86程序集和C?
的组合来完成此操作我正在编写操作系统,因此代码可以在管理员模式下运行,并且没有系统库可以查询此信息。
答案 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将是您最好的朋友。它充满了有关操作系统开发的所有不同部分的信息,包括通用硬件和工具。