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 選任務

Load Balancing

D-OS-Ch02ea-Load_Balancing