系统相关
首页 > 系统相关> > Linux SMP启动流程(一)

Linux SMP启动流程(一)

作者:互联网

Linux SMP启动流程(一)

1 SMP硬件体系结构

2 CPU拓扑结构简介

在这里插入图片描述
注:对于ARM 架构,目前由于不支持超线程技术,只有DIE和MC两个Topology Level。

Linux定义了四种CPU状态:possible、present、online、active,可见[kernel/cpu.c:1960]

const unsigned long cpu_bit_bitmap[BITS_PER_LONG+1][BITS_TO_LONGS(NR_CPUS)] = {

	MASK_DECLARE_8(0),	MASK_DECLARE_8(8),
	MASK_DECLARE_8(16),	MASK_DECLARE_8(24),
#if BITS_PER_LONG > 32
	MASK_DECLARE_8(32),	MASK_DECLARE_8(40),
	MASK_DECLARE_8(48),	MASK_DECLARE_8(56),
#endif
};
EXPORT_SYMBOL_GPL(cpu_bit_bitmap);

const DECLARE_BITMAP(cpu_all_bits, NR_CPUS) = CPU_BITS_ALL;
EXPORT_SYMBOL(cpu_all_bits);

//表示系统中有多少可以运行的CPU核心
#ifdef CONFIG_INIT_ALL_POSSIBLE
struct cpumask __cpu_possible_mask __read_mostly
	= {CPU_BITS_ALL};
#else
struct cpumask __cpu_possible_mask __read_mostly;
#endif
EXPORT_SYMBOL(__cpu_possible_mask);

//表示系统中有多少个处于工作状态的CPU核心
struct cpumask __cpu_online_mask __read_mostly;
EXPORT_SYMBOL(__cpu_online_mask);

//表示系统中有多少个具备online条件的CPU核心,不一定都处于online状态,
//有的CPU核心可能被热拔插了
struct cpumask __cpu_present_mask __read_mostly;
EXPORT_SYMBOL(__cpu_present_mask);

//表示系统中有多少个活跃的CPU
struct cpumask __cpu_active_mask __read_mostly;
EXPORT_SYMBOL(__cpu_active_mask);

标签:__,struct,流程,mask,cpu,cpumask,Linux,SMP,CPU
来源: https://blog.csdn.net/u013836909/article/details/94203517