多核处理器利用线程级并行,这意味着多个线程并行运行.假设一个进程只有一个线程,那么其他核心在执行这个进程时是否保持空闲状态?在
linux系统中,调度程序将进程和线程视为一项任务.它在调度时不区分进程和线程.那么,这是否意味着不同的内核并行执行不同进程的不同线程?
当上下文切换发生时,这是仅发生在一个内核还是cpu的所有内核?
最佳答案 你是对的:从
Linux调度程序的角度来看,进程和线程是相同的.这些任务根据调度程序的规则排队等待轮到他们.
存在调度规则,例如优先级或CPU亲和性(以防止线程迁移到另一个核心并保留缓存数据).
上下文切换可能在每个固定时间量(时间片)上发生在核心上,因为CPU周期性地自动运行一些内核代码以允许抢占.根据调度程序的规则,可以为多个时间片运行任务.当线程调用使其不可运行的函数(例如,等待IO)时,也可能发生上下文切换.
在某些情况下,如果不是全部,每个核心都有一个调度过程可以完成所有这些操作.
superuser也有类似的问题