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