并发 七月 15, 2019

并发编程之上下文切换

文章字数 1.3k 阅读约需 1 mins.

CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换。

上下文切换过高,会导致CPU像个搬运工,频繁在寄存器和运行队列直接奔波 ,更多的时间花在了线程切换,而不是真正工作的线程上。直接的消耗包括CPU寄存器需要保存和加载,系统调度器的代码需要执行。间接消耗在于多核 cache之间的共享数据。

  • 使用Lmbench可以测量上下文切换的时长。
  • 使用vmstat可以测量上下文切换的次数。
  • 对于抢占式操作系统而言, 大体有几种:
  • ...
查看全文
0%