任務管理器從80KB到4MB:原作者揭露Windows極簡開發哲學

Windows 的任務管理器,如今已成為每個使用者都熟悉的系統工具,但你可能難以想像,它最初僅佔 80KB 的空間。微軟資深工程師 Dave Plummer 近日揭露了這款工具背後的設計哲學:在系統幾乎停擺時,仍必須能啟動並運作。這個看似簡單的goal ,驅動了極致的效能優化,也形塑了當年 Windows 開發的獨特品味。

為了確保任務管理器不會在系統卡死時一同失靈,Plummer 採用了極為精巧的啟動機制。它不直接檢查是否已有實例存在,而是向現有實例發送一條private 訊息並等待回應。若有回應,表示原實例仍可運作,只需將其喚起;若無回應,則判定系統已陷入深層卡頓,便啟動新實例進行救急。這種設計避免了重複載入,也確保了工具本身的reliability

在資源管理上,Plummer 採取了近乎苛刻的節制。常用字串被一次性載入全域變數,避免反覆提取;低頻功能則採用on-demand 載入。更關鍵的是,任務管理器並非逐一查詢每個行程來構建進程樹,而是直接向核心請求完整的process table ,大幅減少 API 呼叫次數。若緩衝區不足,系統會自動擴容並重試,這種批量處理思維,正是當時效率至上的體現。

面對現代軟體體積膨脹至數百 MB 甚至數 GB 的現象,Plummer 尖銳地比喻:框架依賴就像「吃你食物卻從不付房租的roommate 」。他批評許多現代工具「從框架起步,加九層舒適配置、六層面向未來設計,最後才驚覺顯示幾個數字竟需 800MB 記憶體」。他並非主張回到硬體受限的 90 年代,而是呼籲保留那種對資源的sensitivity :批量處理、正確快取、跳過不可見計算、重繪前做差異比對。

這段回顧不僅是技術史的片段,更是一則關於工程取捨的提醒。當開發者習慣於豐沛的運算資源,是否也遺忘了最基本的效能紀律?Plummer 的經驗揭示:真正可靠的工具,往往誕生於限制之中。而今日的「輕鬆開發」,可能正悄悄侵蝕著系統的responsiveness 與使用者的信任。

留言 6

  • 老碼農

    80KB 做出這麼完整的功能,現在的框架動輒上百 MB,真是bloat 得離譜。

  • 小系統

    他說的每一個優化點,現在都變成框架自動處理的「黑箱」,結果就是latency 暴增。

  • 框架迷思

    不是框架不好,而是太多人用框架來掩蓋自己對performance 的無知。

  • W
    Win95 情懷

    那時候一台電腦跑得順不順,一看任務管理器就知道。現在?根本看不出來什麼在吃資源。

  • 代碼潔癖

    「跳過不可見的計算」這句說到我心坎裡了,現在多少動畫和渲染根本是waste CPU。

  • 現實開發者

    理念很美好,但今天要交專案,老闆要的是速度,誰有空從零優化?deadline 才是最大壓力。