小编Joe*_*Joe的帖子

了解上下文切换的开销成本

我总是读到/听说上下文切换的成本很高。我最近开始阅读 Robert Love 的“Linux 内核开发”,并完成了“进程和进程调度”一章。这让我对不同进程和线程之间的上下文切换成本有了一些了解(因为线程被视为进程)。我想解决这个问题,真正了解上下文切换的成本,最好是粗略地了解指令数量和时间损失。

为了简单起见,我们假设一个单核处理器正在运行两个具有相同良好权重的进程(proc1 和 proc2)。另外,假设目标延迟为 20 毫秒,因此每个进程的调度时间为 10 毫秒。当context_switch发生时,我假设当context_switch发生时,proc1 被挂起。此时proc2也暂停了?那么这是否意味着活动进程是某个内核线程或进程?如果是这样的话,这是否意味着 proc1 和 proc2 都无法在 Targeted_latency 内获得 10 毫秒的运行时间?例如(数字仅用于演示):

+-----------20ms-----------+

|---proc1---|--|---proc2---|
^____9ms____^__^____9ms____^
             |
            2ms of kernel executing context_switch()
Run Code Online (Sandbox Code Playgroud)

如果发生这种情况,从一个进程到另一个进程的context_switch()最终是否会调用context_switch()两次?一次从内核线程进入proc1,然后另一个从内核线程进入proc2

scheduling kernel multithreading

4
推荐指数
1
解决办法
4883
查看次数

标签 统计

kernel ×1

multithreading ×1

scheduling ×1