进程P1在只有一个CPU的系统中以无限循环执行。还有其他进程,如P2,P3等待获取CPU,但由于P1已在执行,因此处于等待队列中。
该计划如下:
int main( )
{
while(1);
}
那么,最终结果会是什么?系统会崩溃吗?
可能的答案是,CPU不会崩溃并且其他进程可以在CPU中执行,因为每个进程都有一个特定的时间片,因此在P1的时间片到期后,其他等待进程可以获得CPU。
但是,内核(O / S)将如何检查时间片是否已过期,因为只有一个CPU且进程在无限循环中运行?因为如果必须进行检查,则需要CPU来执行该操作,并且CPU已经被正在无限循环执行的进程P1占用。
那么在这种情况下会发生什么?
答案 0 :(得分:2)
这实际上取决于您使用的操作系统和硬件。中断可以将代码的执行转移到另一个位置(中断处理程序)。这些中断可以是软件(程序中的代码可以调用这些中断处理程序)或硬件(cpu在其中一个引脚上接收信号)。在主板上你有一个叫做可编程中断控制器(PIC)的东西,可以产生稳定的中断流(定时器中断)。操作系统可以使用定时器中断处理程序来停止正在运行的进程并继续运行另一个进程。
同样,它实际上取决于操作系统,您正在使用的硬件,......如果没有更多细节,那么给出明确答案的问题太过笼统。
答案 1 :(得分:0)
处理器有一种叫做interutps的东西。操作系统(如Windows)告诉处理器: - 使用此过程X时间,然后告诉我 因此,处理器启动计时器并继续处理。当时间通过处理器发送中断并告诉OS时间过去了。 OS现在将决定wwich进程接下来的工作。
希望这能回答你的问题。