¿Cómo identifica un sistema operativo / software la cantidad de núcleos (lógicos) en un sistema?

Esta es una pregunta amplia, por lo que la respuesta realmente depende de qué sistema operativo y qué CPU se estén utilizando.

Trataré de responder esto desde el PoV de Linux, y tomando solo x86 y ARM, por ejemplo, como se puede hacer referencia a la fuente.


En los sistemas basados ​​en x86, hay varias formas de conocer la cantidad de núcleos lógicos, entre los cuales Linux generalmente intentará lo que está codificado allí en la tabla ACPI [1], algunos sistemas más antiguos usan MP [2]. Algunos sistemas están utilizando SFI (Simple Firmware Interface), sinceramente, no conozco ningún ejemplo real de esto.

Fuente de referencia aquí [3].

Algún otro sistema basado en x86 incorporado puede usar el árbol de dispositivos.

En los sistemas basados ​​en ARM, es mucho peor, casi todo está codificado. Hay un enlace smp_prepare_cpus () que todo ARM SoC tiene que implementar.

Nota: el número de núcleos lógicos no es la historia completa, la imagen completa incluiría cuántas CPU, la topología, los núcleos lógicos y su diseño dentro de cada CPU, cómo se enrutan las interrupciones a los núcleos individuales: arquitectura de coherencia de caché entre los núcleos, etc.


[1] Configuración avanzada e interfaz de energía

[2] Especificación de multiprocesador

[3] Referencia cruzada de Linux

En la familia x86, la información proviene en última instancia de la instrucción cpuid . El algoritmo no es para los débiles: consulte CPUID en wikipedia o la documentación de Intel aquí: http://www.intel.com/content/dam

More Interesting

¿Cómo es el Dr. BR Ambedkar Institute of Technology en Bangalore para CSE, especialmente en términos de ubicaciones?

¿En qué circunstancias se ejecutarían 100 procesos del sistema operativo más rápido en 5 lotes en serie de 20 en lugar de todos en paralelo?

¿Por qué no hay un solo tipo de puerta lógica?

¿Qué aplicaciones tienen los idiomas formales y por qué forman parte del plan de estudios en la mayoría de las universidades?

Cómo encontrar esperanza en mi vida

¿Cuáles son las oportunidades además de la codificación para la ingeniería en graduados de informática?

¿Cuál es la mejor ingeniería informática o ingeniería civil?

Estoy confundido entre los grados de informática e ingeniería. Me encanta CS pero la gente dice que es para estudiantes con bajas calificaciones. ¿Qué tengo que hacer?

¿Por dónde empiezo si quiero aprender temas de ingeniería informática durante el verano?

¿Puedo triplicarme en ingeniería informática, ingeniería eléctrica e ingeniería aeroespacial?

Cómo usar el diseño orientado a objetos en Objective-C

Mi puntaje GRE es 312 (163Q 149V 3.5AW) y puntaje de pregrado: 8.74 / 10. ¿Qué universidades debo solicitar para MS en ECE en EE. UU.?

¿Cuál es la diferencia entre una computadora y una IA?

¿Cuáles son las últimas bibliotecas y marcos en Android que debe conocer que aumentan su valor como desarrollador de Android?

¿Debo obtener una licenciatura / maestría en informática o una licenciatura en ingeniería informática con un CS menor?