系统卡死任务管理器也跟着卡!微软解释:拉高优先级也没用
(来源:快科技)
快科技10月30日消息,近日针对不少资深玩家"为什么不将任务管理器设为最高优先级"的疑问,微软资深工程师Raymond Chen给出了技术层面的深度解答。
核心结论显示,在系统资源极度卡顿的情况下,单纯提升进程优先级并不能保证响应,共享资源导致的阻塞才是真正的性能杀手。
要知道,在Windows的调度逻辑中,即便一个线程拥有高优先级通行证,它也无法绕过对共享资源的依赖。
简单来说,如果你在超市结账时拥有优先权,但前面的顾客正推着满满一车的商品占用着唯一的收银机,你依然只能原地等待。
而在计算机内部,这些"收银机"就是互斥锁、文件句柄或网络请求。
Raymond Chen指出,即便Windows拥有优先级反转保护机制,即临时提升占用资源者的优先级以加快释放速度,如果该线程正在执行某些不可中断的耗时操作,高优先级的任务管理器依然会陷入长时间的未响应状态。
对于UI程序而言,这一问题尤为严重,由于任务栏和任务管理器本质上都是界面程序,它们最终必须进入Windows统一的UI系统进行调度。
这意味着它们必须与系统中所有正在运行的界面线程竞争资源,一旦底层界面子系统因为某个失控程序而锁死,任务管理器也难独善其身。
从本质上讲,想要在一个已经失控的系统内部通过软件工具进行修复,本身就是一件极具挑战的事,如果修复工具必须与那个让系统崩溃的罪魁祸首共享核心资源,那么赋予工具再高的优先级也无济于事。
目前Windows的做法是优先照顾处于焦点状态的程序,这在大多数情况下已经是调度效率的极限。