上下文切换时间是否包含在线程量子时间内?

时间:2012-06-27 10:30:24

标签: .net multithreading context-switch

我的意思是如果线程的量子时间是20毫秒,那么在上下文切换和其他(5毫秒)执行时花费的时间(15毫秒)是什么?

4 个答案:

答案 0 :(得分:0)

这是一个实施细节。

Linux上发生的事情是,当进程/线程调度程序将CPU分配给线程时,该线程被视为正在运行。它执行的代码从内核模式切换回用户模式被认为是代表该进程/线程执行的内核代码,因此上下文切换时间被视为线程/进程运行时。

答案 1 :(得分:0)

我会转储任何平均花费75%的时间上下文切换的操作系统。当大量优先级线程由I / O中断/信号以不幸的快速序列准备好时,我只期望这种负载是传递的,因此导致就绪线程集中的“顺序”变化。

开发人员/海报在提到抢先内核时经常停止使用“量子”和“时间片”这样的术语会更好。除了严重超载的盒子外,滴答中断仅用于超时其他阻塞呼叫和间隔休眠。

谁想出了'量子'这个术语呢? “量子”是不可分割的,而99.9%的家庭线程在大多数情况下等待I / O或彼此等待,运行时间少于滴答期间,立即分配核心并在准备就绪时运行并且几乎没有因为他们的“时间片”而被掠夺。

'time-slice'听起来像60年代的东西,而不是在2012年,先发制人的内核迅速响应驱动程序中断/信号并立即使那些正在等待准备/运行的线程。

答案 2 :(得分:0)

没有“.NET中的Context Switch”这样的东西,因为.NET不是一个操作系统 所有那些与线程相关的CLR库都只是OS的API包装。

所以问题应该是:“在Windows上进行上下文切换需要多长时间?”

答案 3 :(得分:0)

我想这取决于实现细节。

第十版“操作系统概念”(Silberschartz,Gagne,Galvin)在解释循环调度(第210页)时说:

“ CPU调度程序从就绪队列中选择第一个进程,将计时器设置为在1个时间段后中断,然后分派该进程。”

第203页上定义的调度过程包括:

  • 上下文切换
  • 切换到用户模式
  • 跳到PC

还有一些语句表明上下文切换包含在量子或时间片中。例如,再次在RR中说:

“每个进程直到下一个量子必须等待不超过(n-1)x q个时间单位。”