操作系统效率

时间:2016-10-22 06:04:33

标签: multithreading operating-system

如果无限循环正在运行,操作系统会发生什么?此外,如果无限循环正在运行,我尝试启动另一个程序,它会工作吗?如果是,那对其他程序的速度有什么影响呢?

2 个答案:

答案 0 :(得分:2)

如果你的程序在没有上下文切换的无限循环中执行,那么机器的一个核心将被绑定并且无法同时运行任何其他内容。当代码等待另一个线程或完成IO操作时,会发生上下文切换。 如果你的代码完全占用了这样一个核心,那么如果机器有多个核心,操作系统可能仍然会响应,并且没有其他线程做同样的事情。

答案 1 :(得分:0)

操作系统仍然像往常一样,即使运行无限循环也没有任何反应,具体取决于系统的三个关键资源 - CPU,内存/ RAM和磁盘 - 会发生什么。

只是说循环是无限的,你还需要指定你在循环中做什么样的处理。

是否正在执行仅内存处理而不为其他程序/线程释放CPU(即CPU占用100%)?

大多数现代系统都是多核CPU系统,因此很可能只保留一个系统CPU忙,其他程序可以免费休息。如果你的循环正在执行某些磁盘I / O,它甚至会将CPU留给其他程序,操作系统会在不同的时间在不同的核心上重新安排它。

处理是否不断填满系统内存(因此最终导致内存已满 - 这会导致一切崩溃)?或者处理是否持续填满系统内存但是只能填充一个限制(就像Java程序中发生的那样,即为该程序分配了固定数量的堆内存)因此程序将自行终止,内存不足并且不会崩溃系统提供的堆内存分配小于系统总内存。

您是在该循环中将数据写入磁盘吗?所以最终,磁盘已满,系统将崩溃。

所以回答这个问题,

  

此外,如果无限循环正在运行,我尝试启动另一个循环   程序,它会工作吗?如果是的话,对速度的影响是什么   其他节目?

如果新程序需要免费资源,它将起作用。速度将受到影响,具体取决于您尝试启动的程序类型 - 是否需要大容量内存,是否为多线程且您没有可用内核?等等。

这只是一个粗略的想法,因为存在无限循环可能会发生什么。另外,在OS上运行的大多数后台服务都包含无限循环,但由于这些循环编程良好,我们没有看到任何不良副作用。