我最近开始学习 CPU 和操作系统的工作原理,对带有提供多任务处理的操作系统的单 CPU 机器的操作感到有些困惑。
假设我的机器只有一个 CPU,这意味着在任何给定时间,只能运行一个进程。
现在,我只能假设操作系统用来控制对宝贵CPU时间的访问的调度器也是一个进程。
因此,在这台机器中,用户进程或调度系统进程在任何给定时间点都在运行,但不能同时运行。
所以这里有一个问题:
一旦调度器将 CPU 的控制权交给另一个进程,它如何重新获得 CPU 时间来再次运行自己来完成它的调度工作?我的意思是,如果当前运行的任何给定进程都没有产生 CPU,调度程序本身如何再次运行并确保正确的多任务处理?
到目前为止,我一直在想,如果用户进程通过系统调用请求 I/O 操作,那么在系统调用中我们可以确保调度程序再次分配一些 CPU 时间。但我什至不确定这是否以这种方式工作。
另一方面,如果有问题的用户进程本质上是受 CPU 限制的,那么从这个角度来看,它可以永远运行,永远不会让其他进程,甚至调度程序再次运行。
假设时间片调度,我不知道调度程序如何在另一个进程甚至没有运行的情况下分割时间来执行另一个进程?
我非常感谢您在这方面提供的任何见解或参考。