我最近开始学习CPU和操作系统的工作原理,但对于提供多任务处理的单CPU机器的操作有些困惑。
假设我的机器只有一个CPU,这意味着在任何给定的时间,只能运行一个进程。
现在,我可以假设操作系统用来控制访问宝贵的CPU时间的调度程序也是一个进程。
因此,在这台机器上,任何时候都只有用户进程或调度系统进程之一在运行,而不是两者同时运行。
所以问题来了:
一旦调度程序将CPU的控制权交给另一个进程,它如何重新获得CPU时间以再次运行自己以执行其调度工作?我的意思是,如果当前正在运行的任何给定进程都不放弃CPU,则调度程序本身如何再次运行并确保适当的多任务处理?
到目前为止,我一直在想,好吧,如果用户进程通过系统调用请求I/O操作,那么在系统调用中我们可以确保调度程序再次分配一些CPU时间。但我甚至不确定这是否以这种方式起作用。
另一方面,如果所讨论的用户进程天生就需要大量CPU运算,那么从这个角度来看,它可能会永远运行,从而不让其他进程甚至调度程序再次运行。
假设采用时间片轮转调度算法,我不知道当它甚至没有在运行时,调度程序如何为另一个进程切割时间以执行?
如果您能提供任何见解或参考资料,我将不胜感激。