我最近开始学习CPU和操作系统是如何工作的,我对使用提供多任务操作系统的单CPU机器的操作感到困惑。因此,假设我的机器只有一个CPU,这意味着在任何给定的时间,只有一个进程可以运行。操作系统调度程序如何重新获得CPU的控制权?
现在,我只能假设操作系统用来控制访问贵重CPU时间的调度程序也是一个过程。
因此,在此机器中,用户进程或调度系统进程在任何给定时间点运行,但不是两者都运行。
所以这里有一个问题:
一旦调度给出了CPU到另一个过程的控制,怎么可以恢复CPU时间再次运行本身做它的调度工作?我的意思是,如果当前运行的任何给定进程没有放弃(产生)CPU,那么调度器本身如何再次运行并确保正确的多任务处理?到目前为止,我一直在想,如果用户进程通过系统调用请求I/O操作,那么在系统调用中,我们可以确保调度器再次分配一些CPU时间。但我甚至不确定这是否以这种方式工作。另一方面,如果有问题的用户进程固有地受到CPU限制,那么从这个角度来看,它可以永远运行,永远不会让其他进程,甚至是调度器再次运行。
假设时间片调度,我不知道如何调度程序可以切割执行另一个进程的时间,甚至没有运行?
我真的很感谢您在这方面提供的任何见解或参考。
我希望我能够足够努力地解决这个问题。我开始学习和你一样的概念,并面对同样的问题。这些东西应该与我们的书籍和文章中的cpu和os设计的基础一起。感谢您发布这个! – 2017-10-01 07:28:24