Ring-Based/Layer-Designed OS
Introduction
- 整個 OS kernel 被分成了很多層
- 最底層 Ring 0 是 hardware;最高層 Ring N 則是 user interface
- 每一層都有一些 kernel 模組功能
- 每一層都只能呼叫下面一層的函式,對上層提供乾淨的 Interface
Ring
Ring 這個概念並不是 OS 設定的,而是 CPU 廠商在設計 CPU 時就已經將這套限制打在 CPU 硬體上了,而 OS kernel 則是在這套機制上建立 OS
Ring -1
有些現代 CPU 會有 Ring -1 之類的權限,Hypervisor 便可以跑在 Ring -1,如此 VM 的虛擬硬體跑在 Hypervisor 之上就可以維持 Ring 0 的權限
Pros & Cons
Pros
- 模組化且維護性極佳:每一層都可以獨立開發、測試,下層的修改不會對上層造成影響
Cons
- 效能差:只能呼叫下面一層的函式造成 overhead
- 層的劃分很困難:OS 各功能間有環形依賴關係
- 跟 Monolithic 一樣出 bug 就會 crash,因為雖然分層但還是跑在同一個 Address Space