依 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