xv6

MIT が作った、6th edition UNIX をベースとする学習用OS。マルチコア対応で32-bit x86(後にRISC-V版もある)上で動く、簡素で読みやすい実装。

位置づけ

  • 教育目的(MIT の OS講義、CS4414 等)で使われ、現代OSの基本機構(保護・システムコール・割り込み・コンテキストスイッチ)を最小構成で学べる。
  • ゴールは保護(protection): kernel mode / user mode の分離。

学べる機構

  • システムコール: int $0x40eax に番号。IDT を lidt/SETGATE で設定。
  • trap() による割り込み/例外/トラップのディスパッチ。
  • メモリレイアウト(KERNBASE)とプロセスごとのカーネルスタック。
  • swtch() によるスレッド切り替え。
  • マルチプロセッサ起動は MultiProcessor Specification(MP table)に従う。

これらの一般論は operating-system-kernel にまとめている。msyksphinz による翻訳プロジェクトやブートローダ・ページングのコードリーディングが派生している。

関連: _moc-systems / operating-system-kernel / linux