为什么在 XP/Vista 中结束任务比结束底层进程本身花费的时间要长得多?从操作系统的角度来看,任务和进程之间的关系是什么?
答案1
“任务”是“任务管理器”使用的术语,用于
- 证明其名称的正确性
- 显示“用户进程的主窗口”列表(*),如果有的话
“结束任务”为“任务”(“主窗口”的消息循环)提供了最后一次机会来对 WM_CLOSE 消息做出反应,并超时完成相关进程。(见为什么不能捕获TerminateProcess?发自 Raymond Chen 的博客 Old New Thing)
“结束进程”是一个粗鲁的TerminateProcess,丢弃对文件或其他资源的任何未决更改。
通常,会为 Microsoft 在线崩溃分析 (Dr. Watson) 报告创建一个小型转储,这也可能需要一两秒钟。
(*) 雷蒙德,我知道这非常不准确。
答案2
我相信结束任务首先要求程序正常退出,而结束进程相当于 Windows 中的 SIGKILL——操作系统会不问任何问题就直接转储该进程。