Как определить количество ядер в сборке x86? - PullRequest
10 голосов
/ 27 мая 2011

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

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

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

1 Ответ

13 голосов
/ 27 мая 2011

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

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

...