5 freeze operating-systems multitasking
这是一个开放式问题,有很多可能的答案,但也许我忽略了一件大事。如果没有,也许这个问题应该是社区维基。
我不经常使用其他操作系统来判断,但肯定在所有版本的 Windows 上,当应用程序与 CPU 挂钩时,操作系统可能会陷入困境。早期版本可以理解,具有协作多任务处理。
但是,对于抢先式多任务处理,操作系统是否应该将自身及其 GUI 置于更高的优先级,以便即使在用户应用程序要求充分利用 CPU时也能保持响应?毕竟,操作系统不具有放弃任何时间段。在大多数情况下,我不在乎需要几分钟 CPU 时间的应用程序会延迟几微秒,以便 OS GUI 可以响应输入。
有时将高 CPU 进程设置为较低的优先级会有所帮助,这可能是因为这样可以让我与之交互的其他低 CPU 应用程序响应更快,从而使整体体验看起来更具响应性。或者应用程序的优先级真的会影响它与操作系统进程的交互方式吗?
当我有足够的物理内存并且没有大量使用硬盘时,我已经多次看到这种情况。当操作系统标记时,CPU 使用率似乎是主要的一致元素。
一个反例:通常当系统几乎完全挂起时,鼠标保持响应。所以操作系统确实保护这部分本身免受一些问题的影响。究竟如何是一个单独的问题,我只是举个例子。
真正能让“现代多任务操作系统”之一真正挂起的唯一事情是:
多任务操作系统中的操作系统总是会在时间片结束时切断任务。但是,如果程序设计为响应用户输入,但在其时间片内不响应,则问题出在程序上
更有可能是外壳没有响应。在 Windows 中,这是explorer.exe. 您可以尝试以下操作:
taskmgr.exe,然后启动 ,然后cmd.exe通过命令行执行您的操作。或者启动一个旨在启动其他程序的较小程序。explorer.exe是那些高度组件化的 Windows 程序之一,很多东西都可以挂钩。所以看看没有它的情况。
就Windows而言,Windows 7在这类事情上比XP做得更好,所以我不同意你的说法“所有版本的Windows”。但即使使用 XP,当您使用操作系统的客户端版本时,Windows 也会为前台应用程序提供一些额外的优先级(默认情况下)。但无论哪个操作系统版本,如果多个进程都陷入等待同一个共享资源(可能是 I/O)的状态,那么它们都会表现得无响应。
另一种看待此问题的方法是,如果 explorer.exe 正忙于等待共享资源(包括 CPU 时间),那么桌面/窗口管理器本身将表现得无响应。对于任何直接或间接等待 explorer.exe 释放的应用程序也是如此。