如果无限循环正在运行,操作系统会发生什么?此外,如果无限循环正在运行,我尝试启动另一个程序,它会工作吗?如果是,那对其他程序的速度有什么影响呢?
答案 0 :(得分:2)
如果你的程序在没有上下文切换的无限循环中执行,那么机器的一个核心将被绑定并且无法同时运行任何其他内容。当代码等待另一个线程或完成IO操作时,会发生上下文切换。 如果你的代码完全占用了这样一个核心,那么如果机器有多个核心,操作系统可能仍然会响应,并且没有其他线程做同样的事情。
答案 1 :(得分:0)
操作系统仍然像往常一样,即使运行无限循环也没有任何反应,具体取决于系统的三个关键资源 - CPU,内存/ RAM和磁盘 - 会发生什么。
只是说循环是无限的,你还需要指定你在循环中做什么样的处理。
是否正在执行仅内存处理而不为其他程序/线程释放CPU(即CPU占用100%)?
大多数现代系统都是多核CPU系统,因此很可能只保留一个系统CPU忙,其他程序可以免费休息。如果你的循环正在执行某些磁盘I / O,它甚至会将CPU留给其他程序,操作系统会在不同的时间在不同的核心上重新安排它。
处理是否不断填满系统内存(因此最终导致内存已满 - 这会导致一切崩溃)?或者处理是否持续填满系统内存但是只能填充一个限制(就像Java程序中发生的那样,即为该程序分配了固定数量的堆内存)因此程序将自行终止,内存不足并且不会崩溃系统提供的堆内存分配小于系统总内存。
您是在该循环中将数据写入磁盘吗?所以最终,磁盘已满,系统将崩溃。
所以回答这个问题,
此外,如果无限循环正在运行,我尝试启动另一个循环 程序,它会工作吗?如果是的话,对速度的影响是什么 其他节目?
如果新程序需要免费资源,它将起作用。速度将受到影响,具体取决于您尝试启动的程序类型 - 是否需要大容量内存,是否为多线程且您没有可用内核?等等。
这只是一个粗略的想法,因为存在无限循环可能会发生什么。另外,在OS上运行的大多数后台服务都包含无限循环,但由于这些循环编程良好,我们没有看到任何不良副作用。