定義:一個儲存在磁碟上的靜態指令集合,通常是可執行檔(例如 .exe
、.out
)。
特性:
- 是「還沒被執行」的程式碼。
- 例如:你電腦上的
chrome.exe
就是一個程式,只有在你點它時才會變成 process。
類比:就像食譜,是一堆步驟的說明。
定義:當一個程式被執行後,作業系統會為它建立一個 process,這是一個正在執行的程式個體。
特性:
- 擁有自己獨立的記憶體空間(Code、Data、Heap、Stack 等)。
- 可以包含多個 thread。
- 是作業系統排程與管理的基本單位。
類比:當你開始照著食譜做菜,就像是 process 在運行中。
定義:執行緒是 process 內的實際執行單位。每個 process 至少有一個主執行緒(main thread)。
特性:
- 多個 thread 可以共享同一個 process 的資源(例如變數、記憶體空間)。
- 是作業系統排程的更細小單位。
- 使用多執行緒可以提高效率,例如:下載檔案時一邊顯示進度條。
類比:如果 process 是做菜的整個流程,那 thread 就像多個人一起分工合作,有人切菜、有人煮飯。
Program(靜態) => 被啟動 => Process(動態)
Process(可包含多個) => Thread(實際執行單元)
[Program]
↓ 執行
[Process] ─── Thread1(主)
├── Thread2(副)
└── Thread3(副)
分類 | Program(程式) | Process(行程) | Thread(執行緒) |
---|---|---|---|
本質 | 靜態檔案 | 動態執行實體 | 執行單元 |
是否執行 | 否 | 是 | 是 |
記憶體 | 無 | 獨立記憶體空間 | 共用 process 的記憶體 |
數量關係 | 一個程式可啟動多個 process | 一個 process 可有多個 thread | 是 process 的子單位 |