程式之間的差異

Program - 程式

在 IDE、editor 所寫的程式碼,是一群程式碼的結合,平常撰寫的專案就是 Program。

Process - 程序、進程

是由 Program 所產生的執行實體,一個 Program 可以執行多次,產生多個 Process。

  • 不能算是基本的執行單位,只能算是 Thread 的容器,可以擁有多個 Thread

  • 需要一些資源才能完成工作,如: CPU、記憶體、檔案、I/O裝置。

  • 每個 Process 互相獨立,不同 Process 的 Memory space (記憶體空間) 也不相同,各自的 Local variables(區域變數) 也不能共用。

使用情境

Mac 的活動監視器看到的 PID 就是 Process。

Thread - 線程、執行緒

作業系統中能夠計算的最小單位,被包含在 Process 裡面,並共享 Process 資源。

  • 在 Multi-threading(多執行緒)環境:

    • 兩個執行緒若同時存取或改變全域變數,就有可能發生 Synchronization(同步)

    • 若互搶資源,則會發生 Deadlock (死結)。

使用情境

聊天室的 Process,可以同時接收和傳送給對方,就是同個 Process 不同 Thread。

並發 與 並行

問題探討

1 個 Process 可以建多少個 Thread?

參考資料

https://dotblogs.com.tw/frankblog/2017/03/06/210644 https://ithelp.ithome.com.tw/articles/10201909 https://medium.com/@totoroLiu/program-process-thread-%E5%B7%AE%E7%95%B0-4a360c7345e5

Last updated

Was this helpful?