我们都知道 CPU 正在运行的进程之间切换,但是为什么我们在使用应用程序时 CPU 切换时从未遇到任何中断?
我认为这是因为进程之间切换的速度非常快,但我很好奇有多少个进程会真正影响 CPU 的性能,以至于人类会在单个应用程序上体验到中断(或中断)的程度,以及它会如何体现在现代操作系统上?
答案1
我认为这是因为进程间切换速度太快
你说得对。但微处理器执行的操作仍然是以离散步骤而不是连续方式执行的。每个时钟周期都会使 CPU 获取程序计数器指向的内存内容。在下一个时钟周期,它会解码指令,依此类推。如果你能变得足够快(注意到),你会注意到你认为是连续的音乐实际上播放了一段时间,然后停止,然后再次播放,依此类推。
快速而复杂的野兽使切换过程快速进行的调度程序称为短期调度程序(CPU 调度程序)。它必须非常快,因为它每隔几毫秒就会被调用一次,而且它不做任何有用的工作(从用户的角度来看)。虽然不同的实现可能略有不同,但几乎所有调度程序都为不同类别的进程(如活动进程、后台进程等)维护优先级队列。
因此,即使计算机上运行着数千个进程,也只有少数进程会直接与用户交互。调度程序在切换进程时会考虑此信息。因为更新检查进程可以等待,但实时音乐流不能。
但我很好奇,到底有多少进程会对 CPU 的性能产生影响,导致人类无法继续工作
没有神奇的数字,还有很多其他因素会影响性能(内存速度、大小等)。我认为在调度程序性能成为任何问题之前,您就会耗尽内存。当调用某个高优先级中断例程并且执行时间很长时,可能会出现中断。
有趣的事实: - 为了让用户在系统上获得更好的体验(我忘了)史蒂夫乔布斯指示苹果工程师为鼠标中断分配最高优先级,以便指针在移动时不会滞后。