多核调度
SMP(Symmetric Multiprocessing,对称多处理)是一种常见的多核处理器架构。它将多个处理器集成到一个计算机系统中,并通过共享系统总线和内存子系统来实现处理器之间的通信。
首先,SMP架构将一组处理器集中在同一个计算机上。这些处理器可以是物理上独立的芯片,也可以是在同一芯片上集成的多个核心。无论是物理上独立的处理器还是集成在同一芯片上的核心,它们都可以同时工作,处理不同的任务。
在SMP架构中,各处理器是对等的,也就是说它们具有相同的权限和地位。每个处理器都可以独立地执行任务,并且可以访问共享的系统总线和内存子系统。这意味着不同的处理器可以同时读取和写入内存,从而实现数据的共享和协同处理。
通过共享系统总线和内存子系统,SMP架构实现了处理器之间的通信和协作。处理器可以通过总线发送和接收数据,从而进行协同工作。例如,一个处理器可以将计算结果存储在内存中,而另一个处理器可以读取该结果并继续后续的计算。
根据处理器的实际物理属性,CPU可以分为超线程和多核。
超线程(SMT,Simultaneous Multithreading):超线程是一种技术,允许单个物理处理器核心模拟出多个逻辑处理器核心。这意味着在一个物理处理器核心上可以并行执行多个线程,从而提高处理器的利用率和性能。在Linux内核中,针对超线程技术,可以使用CONFIG_SCHED_SMT进行分类和配置。
多核(MC,Multiple Cores):多核处理器是指在一个集成电路芯片上集成了多个独立的物理处理器核心。每个核心都可以独立地执行任务,因此多核处理器可以同时处理多个线程或进程,从而提高系统的并行处理能力和整体性能。在Linux内核中,针对多核处理器,可以使用CONFIG_SCHED_MC进行分类和配置。
Linux内核对CPU管理主要是通过使用bitmap来实现,同时定义了四种状态