Windows任務管理器,遠比你想象中的複雜

Windows 任務管理器(Windows Task Manager)的原始作者 Dave Plummer 近日在 Reddit 開帖分享關於任務管理器的冷知識和設計理念,並解答了網友的部分疑問。

在微軟工作了十幾年的 Dave 是從頭開始構建任務管理器的開發者,大約1994年,他在家中的書房裏編寫出了任務管理器(TaskMgr),儘管當時他還只是一名新手,NT 內核的開發者看到後依舊讓 Dave 將任務管理器加入到內核的主分支中。這就意味着開發任務管理器將成爲他的工作,並且需要繼續打磨以使它成爲 Windows 系統的官方部分。

按照 Dave 最初的設想,任務管理器會以共享軟件的形式提供,他計劃將其出售給有需要的使用者,不過由於 NT 內核開發者的建議,任務管理器最後成爲了一款免費應用並與 Windows 捆綁在一起。任務管理器於1996年首次隨 Windows NT 4.0 一起提供,此後 Windows 的用戶都能通過該應用檢查 CPU 負載或殺死進程。 

除了任務管理器,Dave 還參與了三維彈球(Space Cadet pinball)的開發和移植工作,編寫了 Zip Folder 的 UI 和文件管理部分,以及參與開始菜單、shell、計算器、ole32 和產品激活等產品的開發工作。

Dave 表示任務管理器是自己最引以爲豪的應用程序之一,因爲它可能是有史以來第一個最複雜,至少在視覺效果上是最複雜的應用程序,並且在任意尺寸下完全調整任務管理器的窗口大小都不會出現任何抖動情況。當時的應用對內存要求十分苛刻,所以任務管理器的大小保持在 100K 以下。GDI32 和 User32 的同事也提供了不少幫助。

Dave 分享的關於任務管理器的一些使用技巧:

  • 如果任務管理器掛起或崩潰,可通過按下 Ctrl-Shift-Esc 組合鍵啓動另一個。Winlogon 會尋找一個現有的實例,並嘗試在10秒內重新啓動它。如果舊的任務管理器沒有在這段時間內以祕密代碼進行迴應,那麼另一個任務管理器將被啓動。如此一來,只要有可使用的資源,就可啓動任務管理器。

  • 如果資源不足,任務管理器會在簡化模式(reduced mode)下加載,例如只加載進程頁面(如果確實有這樣的需求)。它是爲數不多的不會在出現問題時直接“失敗並退出”的應用程序之一。

  • 如果任務管理器內部出現損壞,先關閉或殺掉進程。然後在重啓的同時按下 Ctrl-ALT-Shift 組合鍵,任務管理器在啓動時發現此組合鍵,會將所有的內部設置重置爲出廠設置。

  • 使用 Ctrl-Shift-Esc 組合鍵可在沒有 Shell 的幫助下啓動任務管理器,所以如果 Shell/Explorer 處於掛起狀態,可通過此組合鍵調出任務管理器,然後重置或重啓 Shell。即使托盤消失,也可以通過此組合鍵啓動任務管理器。

  • 如果 Shell 無法啓動或處於掛起狀態,可以嘗試使用任務管理器,它有一個模式,在此模式下,任務管理器會在沒有任何引用 shell32.dll 的情況下加載,並允許在沒有開始菜單的情況下啓動 CMD.EXE 等程序。

  • 任何在進程表中正在執行的進程,右鍵點擊"顯示文件位置"即可查看進程的二進制文件。

  • 理論上可通過任務管理器殺死任何進程,如果用戶擁有權限,它甚至可以升級權限以啓用調試權限來殺死應用程序。如果有連任務管理器都不能殺死的進程,說明內核出現了問題。

  • 可在進程頁上添加額外的列或刪除其他列,並拖動它們進行重新排序。

任務管理器比大部分人認識到的更爲複雜,因爲它誕生之初就旨在解決用戶在需要該應用程序時可能遇到的大多數情況。這些年來,微軟沒有對任務管理器的底層進行改動。因此,上面介紹的所有使用技巧不僅適用於舊版本 Windows,同樣也適用於 Windows 10。

—————END—————

喜歡本文的朋友們,歡迎長按下圖關注公衆號程序員小灰,收看更多精彩內容

給個[在看],是對小灰最大的支持!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章