Skip to content

Instantly share code, notes, and snippets.

@ywwwtseng
Last active April 20, 2025 07:38
Show Gist options
  • Save ywwwtseng/7012842b57645d202f1133cab7067c59 to your computer and use it in GitHub Desktop.
Save ywwwtseng/7012842b57645d202f1133cab7067c59 to your computer and use it in GitHub Desktop.

Program & Process & Thread

🧾 Program(程式)

定義:一個儲存在磁碟上的靜態指令集合,通常是可執行檔(例如 .exe.out)。

特性

  • 是「還沒被執行」的程式碼。
  • 例如:你電腦上的 chrome.exe 就是一個程式,只有在你點它時才會變成 process。

類比:就像食譜,是一堆步驟的說明。


🔄 Process(行程 / 程序)

定義:當一個程式被執行後,作業系統會為它建立一個 process,這是一個正在執行的程式個體。

特性

  • 擁有自己獨立的記憶體空間(Code、Data、Heap、Stack 等)。
  • 可以包含多個 thread。
  • 是作業系統排程與管理的基本單位。

類比:當你開始照著食譜做菜,就像是 process 在運行中。


🧵 Thread(執行緒)

定義:執行緒是 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 的子單位
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment