可能导致正在运行的进程自愿或非自愿放弃CPU的原因是什么?

可能导致正在运行的进程自愿或非自愿放弃CPU的原因是什么?

哪些原因可能导致正在运行的进程自愿或非自愿地放弃CPU?因为任一时刻只能有一个进程在 CPU/Core 中运行。

答案1

大多数系统调用(本质上是那些将进程放入服务队列的系统调用)都会导致内核调度程序获取下一个最紧急的进程并使其运行。对于多核来说稍微复杂一些,并且进程可以分配给特定的核心或 CPU。

处理器时间也按最大时隙分配,并且在每个时钟周期,调度程序检查当前进程是否已用完其整个时间片。如果是,则它被挂起(即不从tick中断返回)并且它的临时nice值被增加,因此它距离调度队列的头部更远。这可以确保执行频繁 I/O 的程序获得大量短时隙,而占用 CPU 的程序则获得一些长时隙。

所有这些都描述了相当早期的 Unix 系统(因为我最近没有在那个级别上工作),但它可能没有太大变化。您无法对原始设计进行太多改进。

相关内容