介紹 Process


我們常說的程式 (Program) 是一個寫好的可執行檔案,或是編譯好的可執行檔案。當他開始執行,進入到電腦的記憶體時,會稱作Process。Process是工作的指揮中心,其活動狀態可以藉由 program counter 以及處理器的 registers 內容得知。Process 在記憶體內容中管理的區塊有數個層次,由低地址到高地址分別為:

  • Text section: 可執行的程式碼
  • Data section: 全域變數
  • Heap section: 程式執行中,動態分配及使用的記憶體空間。
  • Stack section: 程式執行中,呼叫函數的參數、返回值或定義區域變數等所使用的空間。

Text 以及 Data section的大小是固定的,而 Heap section 及 Stack section 會隨程式執行時而有變化。

Process 身為獨立的指揮中心,管理自己分配到的記憶體內容,即便是相同的程式所產生出的不同的 Process,他們彼此管理的記憶體空間不會互相干涉。

Process State

Process 有下面幾種狀態:

  • New: process剛產生
  • Running: instructions 正被執行
  • Waiting: process 正等待一些事件的完成,如I/O
  • Ready: process 準備好並等待分配給處理器
  • Terminated: process 執行完成並結束

Process Control Block

前面介紹過 process 管理的記憶體空間的四個層次。而實際 process 在作業系統是以 process control block (PCB) 呈現。PCB包含的資訊內容有:

  • Process state: 狀態如 new, ready, running, waiting 等。
  • Program counter: 下一個執行的instruction的位置。
  • CPU registers: 儲存一些process被中斷又重新執行時所需要的資訊。
  • CPU-scheduling information: 儲存prcocess的優先性或process排程列隊的位置。
  • Memory-management information: 與記憶體page等相關的訊息。
  • Accounting information: 記錄 CPU使用數、執行時間、時間限制、工作數量等訊息。
  • I/O status information: 記錄分配給process的 I/O 設備、檔案系統的檔案等。

Context Switch

當CPU core切換正在執行的process到另一個process會進行 context switch。把當前狀態記錄在目前的PCB,讀取下一個要執行的process的PCB,獲取之前的狀態,然後開始執行。 context switch純粹是一個成本,切換時間與硬體相關。


See also