Linux是如何获知处理器数量的
Linux对SMP的支持已经相当成熟了。在配置SMP时,需要MP Spec的支持,本文简略的描述下,Linux是如何通过MP Spec获知CPU数量的。
setup_arch()->get_smp_config()->__get_smp_config(0)->check_physptr()->smp_read_mpc()->MP_processor_info()->generic_processor_info()
MP_processor_info()对MPC的信息表格进行遍历,而每个CPU在MPC的信息表格中均对应一项。如果发现当前表项为MP_PROCESSOR便调用函数generic_processor_info(),此函数每执行一次将num_processor加1。因此在遍历结束之后,系统便获知了系统中的处理器数量。