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 的成本不高