我的意思是如果线程的量子时间是20毫秒,那么在上下文切换和其他(5毫秒)执行时花费的时间(15毫秒)是什么?
答案 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页上定义的调度过程包括:
还有一些语句表明上下文切换包含在量子或时间片中。例如,再次在RR中说:
“每个进程直到下一个量子必须等待不超过(n-1)x q个时间单位。”