OS线程调度与cpu使用关系

Wei Guo

据我所知,对于线程调度,Linux 实现了一个公平的调度程序,而 Windows 实现了循环 (RR) 调度程序:每个线程都有一个执行时间片(如果我错了,请纠正我)。

我想知道,CPU使用率与线程调度有关吗?

例如:有2个线程同时执行,系统时间片为15ms。cpu只有1个核心。

线程A需要10ms完成任务,然后休眠5ms,循环运行。

线程 B 需要 5ms 来完成工作,然后休眠 10ms,同样处于循环中。

  1. CPU使用率会是100%吗?

  2. 线程是如何调度的?线程 A 会用完所有的时间然后调度出去吗?

另一个场景:如果我运行了一个线程 A,它就会被某种条件(例如网络)阻塞。CPU 100% 会影响这个线程的唤醒时间吗?例如,一个线程 B 可能正在这个时间窗口中运行,线程 A 会被操作系统抢占吗?

苏梅特

那么CPU使用率会是100%吗?

理想情况下,答案是肯定的,理想情况下,我的意思是,您没有考虑执行上下文切换所浪费的时间实际上,CPU 利用率通过一直保持忙碌而增加,但仍然有一些时间浪费在进行上下文切换(从一个进程或线程切换到另一个进程或线程所需的时间)。

但我会说,在您的情况下,两个线程的时间限制完美对齐,以实现最大的 CPU 利用率。

线程是如何调度的?线程 A 会用完所有的时间然后调度出去吗?

嗯,这真的取决于,在大多数现代操作系统实现中,如果就绪队列中有另一个进程,则当前进程在 CPU 完成后立即被调度出去,无论它是否还有剩余的时间量。所以是的,如果您正在考虑现代操作系统设计,那么线程 A 会在 10 毫秒后立即调度。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章