Как определить количество ядер в сборке x86?

Я пишу очень простую операционную систему в качестве инструмента обучения для себя. Моя текущая задача - узнать как можно больше об оборудовании.

До сих пор я смог найти много информации о процессоре, используя инструкцию CPUID. Единственное, чего я не могу найти, так это количества, физических или логических ядер. Есть ли способ сделать это, используя комбинацию сборки x86 и C?

Я пишу операционную систему, поэтому код можно запускать в режиме супервизора, и нет системных библиотек для запроса этой информации.

1 ответ

Решение

Чтобы найти все процессоры в системе, вы должны проанализировать либо таблицы ACPI, либо таблицу конфигурации Intel MP. См. Раздел " Включение SMP в вашу операционную систему UP" для обучения использованию таблицы конфигурации MP для поиска и запуска других процессоров. Более подробную информацию о ACPI можно найти по адресу http://www.acpi.info/spec.htm. Вы также можете проверить определение топологии ЦП, которая может сказать вам, какие процессоры и ядра находятся на каком физическом чипе в системе.

При работе в вашей ОС, http://wiki.osdev.org/ будет вашим лучшим другом. Он полон информации обо всех различных частях разработки операционной системы, включая общее оборудование и инструменты.

Другие вопросы по тегам