目錄表

Process

0x00 Outline


0x01 Program vs Process

Program: 單純儲存在 disk 中的檔案,尚未被執行

Process: 正在執行中的程式 (Program) 即為程序、行程 (Process),A program in execution

一個 Process 主要包含:


0x02 Process State Transition Diagram

Process 在執行過程會改變狀態,行程狀態圖 (Process STD) 描述 Process 由開始到結束的生命週期

Process STD 是針對 CPU 這項資源,Data 都在 Memory 中

  1. new → ready: Job scheduler 允許工作進入系統,建立 process,配置記憶體空間載入程式碼
  2. ready → running: CPU scheduler 由 ready queue 選擇一個 priority 最高的 process 到 CPU 執行,這裡會進行 context switch
  3. running → waiting: 發生較長時間的中止時,如 I/O request、Semaphore operation、Receive Message 等,Process 會先 block 住
  4. waiting → ready: 當造成 waiting 的事件已經完成,如 I/O complete 等,Process 會回到 ready 狀態
  5. running → ready: 發生短暫中止時,如被高優先權的 process 插隊、CPU Time Quantum 超過、Interupt 等,Process 會直接回到 ready 狀態
  6. running → terminated: 程式完成工作而正常結束,或是溢位、除零等異常終止 (Abort)

0x03 Process Control Block

行程控制區塊 Process Control Block, PCB,又稱 Task/Job Control Block

PCB 是作業系統為了管理 Process 而用來記錄行程相關狀態的資料區塊,眾多 Processes 的這些 PCBs 集合有時也稱 Process Table,換言之,table 中每個 entry 就是一個 Process 的 PCB

PCB 包含以下資訊:


0x04 Scheduling and Scheduler

從一群等候執行的程式中挑選出 priority 最高者,賦予處理器的使用權,這一個過程稱為排程 (Scheduling)

一個 Process 的執行時間是一連串 CPU 執行時間I/O 等待時間組成

行程集中使用 CPU 計算的這段期間稱為 CPU Burst,行程在等待 I/O 完成的這段期間則稱為 I/O Burst

同時載入記憶體的 processes 數量,稱為 Degree of Multiprogramming

Process Scheduling Queue

作業系統在 Process Scheduling Queue 中維護所有的 PCB

排班程式 (Scheduler) 的種類

  1. Long-Term Scheduler: 又稱 Job Scheduler [new → ready]
    • 從 Job Queue 中挑選適合的工作,將其載入 Memory 中準備執行
    • 通常適用於 Batch System,但不適用於 Time-Sharing System
    • 可調控 Multiprogramming Degree
    • 可調合 CPU-Bound 與 I/O Bound processes 之混合比例
    • 執行頻率最低
  2. Short-Term Scheduler: 又稱 CPU Scheduler [ready → running]
    • 從 Ready Queue 挑選高優先度的 Process,使之獲得 CPU 控制權執行
    • Batch System 和 Time-Sharing 均需要
    • 執行頻率最高
    • 這部分在 CPU Scheduling 章節會在細提
  3. Medium-Term Scheduler: [virtual memory]
    • 當記憶體空間不足,且又有其它 Process 欲進入記憶體執行,此時該 Scheduler 必須挑選某些 Process 將其 Swap Out 到磁碟中以空出記憶體空間,待記憶體有足夠空間再將其 swap in 記憶體中繼續執行
    • 通常用在 Time-Sharing System
    • 減少 Multiprogramming Degree
    • 可調合 I/O Bound 與 CPU Bound 的比例

0x05 Context Switch

當 CPU 的使用權由一個 Process 切換到另一個 Process 這之間的工作即稱為 Context Switch

過程:

  1. 將舊 Process 的狀態保存至 PCB
  2. 選擇出新 Process
  3. 將新 Process 的狀態從 PCB 載入
  4. 將 CPU 的使用權轉移

Context Switch 所花費的時間是一個成本,可能成為系統效能瓶頸,因為 Context switch 這個過程對系統而言是沒有生產力的

Context Switch 花費的時間和硬體支援有密切關係,若處理器提供多組暫存器給不同 Process 使用,則在 Context switch 過程中只需要切換指向暫存器的指標,加快切換速度