操作系统是否在没有上下文切换的情况下在CPU上运行?

时间:2017-10-08 22:28:25

标签: operating-system

我知道单CPU系统可以在任何时刻只运行一个进程。我怀疑的是,操作系统本身是一个单独的进程如何运行在CPU意味着同时管理同时安排其他进程(这是不可能的,因为只有一个进程可以运行单CPU系统。)

换句话说,如果另一个进程在任何时候都在消耗CPU,那么操作系统是否会被上下文切换?操作系统在哪里运行(因为它必须始终处于活动状态才能监控)??

我甚至不知道这是否是一个合适的问题......但如果你有答案,请告诉我。如果我错了,请纠正我!!

先谢谢!!

1 个答案:

答案 0 :(得分:0)

在现代操作系统中,内核(操作系统的核心)完全控制它分配给它管理的各种用户进程的时间。它可以通过CPU本身提供的各种机制中断用户进程的执行。这称为preempting进程,可以按计划完成,例如在自动中断用户进程特定数量的纳秒之前执行它。

在较旧的操作系统中,如DOS和Windows 1.0到3.11,macOS 9和更早版本,以及许多其他操作系统,它们采用不同的模式,其中用户进程负责产生控制。如果该过程没有产生,那么可能很少有可能重新控制系统。这可能导致崩溃或锁定,这是所有条纹的非抢占式操作系统的常见问题。

即便如此,硬件计时器通常也会提供硬件支持,可以定期触发特定的代码块,可用于从失控过程中拯救系统。只是因为运行了一些代码并不能保证它会无限期地继续运行而不会中断。

现代CPU是一种非常复杂的设备。那些支持诸如CPU virtualization之类的东西可以使单个物理CPU的行为就好像它们共享相同硬件的许多虚拟CPU一样。这些虚拟CPU中的每一个都可以随心所欲地做任何事情,包括使用先发制人或协同对比模型来划分时间,以及将自身分成更多虚拟CPU。

这里的长期和短期是不假设内核必须主动执行才能控制。它有许多工具可以从任何可能正在运行的进程中夺回CPU的控制权。