はじめに
本記事はMITのOSの授業で使われているxv6の解説をコードレベルでする記事です。
xv6はUNIX v6をベースとし、x86で動くようにANSI Cで再実装されたOSです。
- xv6の特徴
- 書くこと書かないこと
- 本記事の読み方
- xv6の動かし方、デバッグ方法
本編
- Page tables 1
- アドレススペースの作成
- カーネルのページング設定
- Page tabels 2
- メモリアロケータ
- sbrk()
- exec()
- Traps, interrupts, and drivers 1
- IDT
- システムコール
- Traps, interrupts, and drivers 2(coming soon)
- 割り込み
- ディスクドライバ
- Locking (coming soon)
- 並列処理
- Scheduling 1
- コンテキストスイッチ
- スケジューリング
- Scheduling 2(coming soon)
- sleepとwakeup
- パイプ
- wait, exit, kill
- File system 1 (coming soon)
- ファイルシステムの概要
- Bufferキャッシュ層
- Logging層
- ジャーナリング
- ブロックアロケータ
- File system 2 (coming soon)
- Inode層
- File system 3 (coming soon)
- Directory層
- Path name
- File system 4 (coming soon)
- Descriptor層