資源管理 (Resource Management)
本系列文章內容參考自經典教材 Operating System Concepts, 10th Edition (Silberschatz, Galvin, Gagne)。本文對應章節:Section 1.5 Resource Management。
作業系統的核心角色之一,是作為整台電腦的資源管理者 (Resource Manager)。CPU、記憶體空間、檔案儲存空間、I/O 裝置,這些都是 OS 必須統籌分配的資源。當多個 Process 同時需要使用這些資源時,OS 必須決定誰先用、用多少、用多久,並在它們用完後回收資源再分配給下一個需求者。少 了 OS 的統一調度,程式之間就只能靠運氣搶資源,整個系統很快就會陷入混亂。
以下逐一介紹 OS 在各類資源上承擔的責任,以及每項責任背後的設計動機。
1.5.1 行程管理 (Process Management)
程式 vs 行程:被動 vs 主動
在深入行程管理之前,必須先釐清一個最基本的概念區別:程式 (Program) 和行程 (Process) 雖然經常被混用,但它們是完全不同的東西。
程式是一個被動實體 (Passive Entity),就像硬碟上一個靜靜躺著的檔案。檔案本身不會做任何事,它只是儲存了一段指令序列。行程則是程式正在執行時的狀態,是一個主動實體 (Active Entity),擁有自己的執行進度、佔用的記憶體空間、開啟的檔案、以及消耗的 CPU 時間。這個區別非常重要:同一個程式可以被啟動好幾次,每次啟動就產生一個獨立的 Process。它們共用同一份程式碼,但彼此的執行狀態完全獨立、互不干擾。
舉一個具體的例子:瀏覽器程式(可執行檔)儲存在磁碟上,這是 Program。當使用者點兩下開啟瀏覽器,OS 把程式載入記憶體、配置資源、開始執行,此時就產生了一個 Process。這個 Process 會拿到一個 URL 作為輸入 ,執行對應的指令與 System Call,將網頁內容顯示在螢幕上。當瀏覽器關閉後,OS 會回收這個 Process 所佔用的全部資源,讓後續的 Process 可以使用。
執行緒與 Program Counter
一個 單執行緒 Process (Single-threaded Process) 內部只有一條執行流,由一個 程式計數器 (Program Counter) 指向下一條要執行的指令。CPU 按順序逐條取出並執行,執行是嚴格序列的(Sequential)。
一個多執行緒 Process (Multi-threaded Process) 則擁有多個執行流,每個 執行緒 (Thread) 各自有一個獨立的 Program Counter,指向它自己接下來要執行的指令。這讓一個 Process 可以同時進行多件事,例如瀏覽器同時渲染頁面、下載資源、回應使用者點擊,都是在同一個 Process 的不同 Thread 中並行執行的。
Course 中有一個重要概念值得記住:Process 是系統的工作單位 (Unit of Work)。一個運作中的系統裡同時存在大量 Process,有些是屬於 OS 自己的(執行核心程式碼),有些是使用者的應用程式。它們可以在單一 CPU Core 上輪流佔用(Multiplexing,多工切換),也可以在多個 CPU Core 上真正並行執行(Parallel Execution)。OS 必須統籌協調所有這些 Process 的生命週期與資源使用。
OS 對 Process 的責任
Process 從誕生到結束,每一個環節都需要 OS 的介入與管理。OS 對 Process 的核心責任包括:
- 建立與刪除 使用者及系統 Process:程式啟動時建立 Process 並分配資源,程式結束後刪除 Process 並回收所有資源
- 在 CPU 上排程 (Schedule) Process 與 Thread:決定哪個 Process/Thread 下一個取得 CPU 使用權
- 暫停與恢復 (Suspend/Resume) Process:在需要切換執行對象時,暫存目前 Process 的狀態,稍後再從中斷點恢復
- 提供 Process 同步 (Synchronization) 機制:讓多個 Process 之間能安全地協調共享資源的存取,避免競爭條件
- 提供 Process 通訊 (Communication) 機制:讓 Process 之間能夠互相傳遞訊息與資料
詳細的 Process 管理技術將在 Ch3–Ch7 討論。