【发布时间】:2011-08-17 06:38:38
【问题描述】:
进程 P1 在只有一个 CPU 的系统中无限循环执行。还有其他进程,如 P2、P3 正在等待获得 CPU,但由于 P1 已经在执行,因此处于等待队列中。
程序是这样的:
int main( )
{
while(1);
}
那么,最终的结果是什么?系统会崩溃吗?
可能的答案是,CPU 不会崩溃,其他进程可以在 CPU 中执行,因为每个进程都有特定的时间片,所以在 P1 的时间片到期后,其他等待的进程可以获得 CPU。
但同样,内核(O/S)将如何检查时间片是否已过期,因为只有一个 CPU 并且进程在无限循环中运行?因为如果必须进行检查,它需要 CPU 来执行,而 CPU 已经被无限循环执行的进程 P1 占用。
那么在这种情况下会发生什么?
【问题讨论】:
-
中断。了解中断的工作原理。
-
@Gabe:要让中断工作,它需要一个计时器在单独的线程中运行,对吧?但是如果只有一个处理器,定时器线程和进程线程如何并行运行呢? – kingsmasher1 0 秒前
-
不,定时器中断通常由不属于 CPU 的其他芯片产生。
标签: process infinite-loop processor