Process and Thread
Process
Process 是 OS 中資源分配的基本單位,每個 process 有自己的 virtual memory 和 file descriptors
Thread
Thread,或者說「執行緒」,是 CPU scheduling 的基本單位,thread 存在於 process 中,並且同一個 process 中的 thread 共享同一份資源
Per Thread Item
- thread ID
- program counter
- registers
- stack
- scheduling policy
- errno value
- signal mask
當建立新 thread,我們會在 process 的 virtual memory stack 上切出一塊專門給這個 thread 專用的 stack
Process vs. Thread
Process
- 不同 process 可以有不同 owner
- 不同 process 不直接共享資源(需透過 IPC 或其他方法)
- 用 fork 產生新的 process 很昂貴,並且 process 間有子孫關係
- process context switch 很昂貴
Thread
- 不同 thread 因為是屬於同個 process 所以有相同 owner
- thread 之間共享資源
- threads 之間沒有子孫關係,他們是平等的
- thread creation 和 context switch 的成本不高