Wie kann ich die Anzahl der Kerne in der x86-Baugruppe ermitteln?

8

Ich schreibe ein sehr einfaches Betriebssystem als Lernwerkzeug für mich. Meine aktuelle Aufgabe ist es, so viel über die Hardware wie möglich zu erkennen.

Ich konnte bisher mit der CPUID-Anweisung eine Menge Informationen über die CPU finden. Die eine Sache, die ich nicht zu finden scheint, ist die Anzahl oder physische und / oder logische Kerne. Gibt es eine Möglichkeit, dies mit einer Kombination aus x86-Assembly und C zu tun?

Ich schreibe das Betriebssystem, damit der Code im Supervisormodus ausgeführt werden kann und keine Systembibliotheken nach diesen Informationen suchen können.

    
Conlan 26.05.2011, 22:58
quelle

1 Antwort

11

Um alle Prozessoren in einem System zu finden, müssen Sie entweder die ACPI-Tabellen oder die MP-Konfigurationstabelle von Intel analysieren. Unter Bringen von SMP zu Ihrem UP-Betriebssystem finden Sie ein Tutorial zur Verwendung der MP-Konfigurationstabelle zum Suchen und Starten anderer Prozessoren. Weitere Informationen zu ACPI finden Sie unter Ссылка . Sie können auch CPU-Topologie erkennen auschecken, die Ihnen sagen kann, welche Prozessoren und Kerne auf welchem ​​physischen Chip sind innerhalb eines Systems.

Wenn Sie an Ihrem Betriebssystem arbeiten, wird Ссылка Ihr bester Freund sein. Es enthält viele Informationen zu den verschiedenen Teilen der Betriebssystementwicklung, einschließlich gängiger Hardware und Tools.

    
ughoavgfhw 26.05.2011, 23:14
quelle

Tags und Links