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

.net 上下文切换时间是否包含在线程量子时间中?,.net,multithreading,context-switch,.net,Multithreading,Context Switch,我的意思是,如果线程的量子时间是20毫秒,那么在上下文切换中会花费15毫秒,在执行时会花费5毫秒?这是一个实现细节 Linux上的情况是,当进程/线程调度器将CPU分配给线程时,该线程被认为正在运行。它执行的从内核模式切换回用户模式的代码被视为代表该进程/线程执行的内核代码,因此上下文切换时间被视为线程/进程运行时。我将转储平均花费75%时间切换上下文的任何操作系统。我只希望当许多优先级较高的线程通过I/O中断/信号以不幸、快速的顺序准备就绪,从而导致就绪线程集中的“顺序”更改时,才会在可传递的

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

这是一个实现细节


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

我将转储平均花费75%时间切换上下文的任何操作系统。我只希望当许多优先级较高的线程通过I/O中断/信号以不幸、快速的顺序准备就绪,从而导致就绪线程集中的“顺序”更改时,才会在可传递的基础上产生这样的负载

最好是开发人员/海报在提到抢占式内核时不再经常使用“quantum”和“time slice”等术语。除了在严重过载的盒子上,滴答声中断只在超时其他阻塞调用和休眠间隔时有用

到底是谁想出了“量子”这个词?“量子”是不可分割的,而99.9%的家庭线程大部分时间都在等待I/O或其他线程,运行时间少于滴答周期,当它们准备就绪时,会立即分配一个内核并使其运行,并且几乎不会因为“时间片”的出现而被偷窥


“时间片”听起来像是60年代的东西,而不是2012年的抢占式内核对驱动程序中断/信号做出快速响应,并立即使等待的线程准备就绪/运行

在.NET中没有“上下文切换”这样的东西,因为.NET不是一个操作系统,而且 所有这些与线程相关的CLR库都只是操作系统API的包装器


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

我想这取决于实现细节

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

CPU调度程序从就绪队列中选取第一个进程,将计时器设置为在1个时间段后中断,并调度该进程

其中,第203页定义的派送流程包括:

上下文切换 切换到用户模式 跳转到PC 还有一些语句指示上下文开关包含在量程或时间片中。例如,在RR中,它再次表示:

每个进程必须等待不超过n-1 x q时间单位,直到其下一个量子


你知道使用.NET线程池进行上下文切换花了多少时间吗?我没说75%。这些数字只是一个例子。我想知道上下文切换时间是否是给线程的执行时间的一部分?在.Net中进行上下文切换需要多长时间?