Symmetric Multiprocessing (SMP)
Introduction
這是所有現代 OS 採用的方式
記憶體裡只有一份 OS,但任何一顆 CPU 都可以執行它。當某顆 CPU 發出 system call,就自己 trap in kernel,處理
這樣就消除了 asymmetric multiprocessing 的單點瓶頸,但是複雜度大幅提升,需要 lock 機制避免 race condition
有兩種實作方式:
Implementation
1. Common Ready Queue
所有 CPU 共享一個 ready queue,他們各自的 scheduler 都從這個共用的 queue 中撈 process 來跑
多個 CPU 同時搶 queue 會有 race condition 所以需要 lock
2. Private Queue
每個 CPU 都有自己的 private queue
此方法會造成 workload 不均故需要 load balancing
SMP 兩種實作都屬於 self-scheduling
self-scheduling 相對於 master-slave model 就是我們讓各個 CPU 自己跑自己的 scheduler 決定該去 common queue 撈任務或是從 private queue 選任務