Wednesday, September 30, 2020

Program/Process/Thread 差異



依 Linux 為例,利用 task struct 是 linux kernel 用來描述 process thread 結構 schedule.h 裡面


Process ( 程序、進程 )

Process 意旨已經執行並且 load 到記憶體中的 Program ,程序中的每一行程式碼隨時都有可能被CPU執行。

每一個 Process 是互相獨立的

Process 是 Thread 的容器

在多功作業系統(Multitasking Operating System)中,可以同時執行數個Process ,然而一個 CPU 一次只能執行一個 Process (因此才有現在的多核處理器),而 Process 的運行量總量不會少於 CPU 的總量,又Process 會佔用記憶體,因此如何排程(Scheduling,恐龍本第五章) 、如何有效管理記憶體(恐龍本第八章)則是 OS 所關注的事


Thread (執行緒、線程 )

同一個 Process 中會有很多個 Thread ,每一個 Thread 負責某一項功能。

同一個 Process 底下的 Thread 共享資源,如 記憶體、變數等,不同的Process 則否。

在多執行緒中(Multithreading),兩個執行緒若同時存取或改變全域變數(Global Variable),則可能發生同步(Synchronization,恐龍本第六章)問題。若執行緒之間互搶資源,則可能產生死結(Deadlock,恐龍本第七章),同樣的,如何避免或預防上述兩種情況的發生,依然是 OS 所關注並改善的。

No comments:

Post a Comment

n8n index

 【n8n免費本地端部署】Windows版|程式安裝x指令大補帖  【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能