萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 電腦入門

作業系統行程管理核心:從程式到行程的生命週期、狀態轉換與控制機制

行程管理核心概念:程式 vs 行程、六大特性、三態模型與控制原語

行程是作業系統資源分配與排程的基本單位,理解其與程式的本質差異、生命週期狀態轉換、PCB 資料結構與控制原語,是掌握 OS 核心的關鍵。本文系統梳理行程管理理論基石。

一、程式與行程:靜態 vs 動態的本質區別

維度程式行程
本質靜態指令集合(磁碟上的可執行檔)動態執行實體(記憶體中的活躍實例)
生命週期永久(除非刪除檔案)暫時:建立 → 執行 → 等待 → 終止
並發性無核心特性,多行程交錯執行
資源擁有不佔用執行期資源擁有 PCB、記憶體、開啟檔案、訊號處理器等
對應關係1 程式 → N 行程(多次執行、多使用者)
1 行程 → N 程式(動態載入共享庫、解譯器)

二、行程六大基本特性

  1. 動態性:由建立產生、調度執行、資源不足暫停、撤銷消亡,擁有完整生命週期。
  2. 並發性:宏觀並行、微觀交替,多行程共享 CPU 時間片。
  3. 獨立性:獨立排程單位、獨立資源擁有者、獨立錯誤邊界。
  4. 非同步性:各行程推進速度不可預測,執行-暫停-執行走走停停。
  5. 結構性:系統為每行程建立 PCB(Process Control Block),記錄 PID、狀態、程式計數器、暫存器、記憶體指標、開啟檔案表、訊號處理、排程資訊等。
  6. 制約性:資源競爭(CPU、記憶體、I/O)、同步互斥(鎖、信號量)、邏輯依賴(管道、訊號)。

三、行程三態模型與轉換

        派遣(dispatch)          時間片用盡/搶佔
   就緒態 ---------------->  執行態 ----------------> 就緒態
      ^                            |
      |                            | 等待事件 (I/O、信號量、鎖)
      |                            v
      +------------------------ 等待態 (阻塞態)
                事件發生/資源就緒 (wakeup)
  • 就緒態:擁有除 CPU 外所有資源,入就緒佇列等待排程器派遣。
  • 執行態:佔用 CPU 正在執行指令流。
  • 等待態:缺少資源(I/O 完成、訊號、鎖、訊息)主動放棄 CPU,等待喚醒。

延伸態:新建態、終止態、掛起態(Swapped Out,換出至磁碟)。

四、行程控制原語:核心態不可中斷的原子操作

五、行程上下文切換完整流程

  1. 中斷/系統呼叫/例外 → 進入核心態。
  2. 保存當前行程完整 CPU 狀態(PC、PSW、通用暫存器、浮點暫存器、向量暫存器)至 PCB。
  3. 更新 PCB 狀態、統計資訊(CPU 時間、頁錯次數)。
  4. 排程器選擇下一行程(CFS、O(1)、多級回饋佇列等)。
  5. 切換記憶體映射(切換頁表基址 CR3、刷新 TLB 或使用 PCID/ASID)。
  6. 恢復目標行程 CPU 狀態從其 PCB。
  7. 返回使用者態繼續執行。

六、現代 OS 行程模型演進

  • Linux:`task_struct`、輕量級行程(LWP,`clone()` 共享記憶體空間)、CFS 完全公平排程、cgroups 資源控制、命名空間隔離(容器基礎)。
  • Windows:`EPROCESS`/`ETHREAD`、工作物件、纖維、UMS(使用者模式排程)、Job Object 隔離。
  • 微核心:行程管理移至使用者空間伺服器(L4、seL4、Zircon),核心僅保留執行緒排程與 IPC。
  • Unikernel:單地址空間、單行程、庫作業系統(MirageOS、IncludeOS),極致精簡。
copyright © 萬盛學電腦網 all rights reserved
原語功能關鍵步驟
create建立新行程分配 PID、建立 PCB、初始化狀態、分配資源、載入程式碼、入就緒佇列
terminate正常/異常結束釋放資源、關閉檔案、釋放記憶體、通知父行程、回收 PCB
block主動進入等待保存上下文、狀態→等待、從就緒/執行佇列移除、入等待佇列、排程器切換
wakeup喚醒等待行程從等待佇列移除、狀態→就緒、入就緒佇列、若優先權高可觸發搶佔
suspend/resume掛起/恢復換出/換入記憶體、更新 PCB、調整佇列