『はじめてのOSコードリーディング』
https://gyazo.com/a37940122b3fdcca969533e95e81c178
2013/1出版
手に取った動機
ヘイヘイHaskellとかを読むにあたって、プロセスの理解がふわっとしているのをなんとかしたかったmrsekut.icon
「プロセス」にリンクが付いていたのでとりあえず読んでみている
つまり、II部だけ読むモチベがある
1万行と小さく、ロジックもシンプルなのでカーネルコードリーディング入門に適している
github上にコードがあったので、これをcloneして読んでいるmrsekut.icon 450ページほどあるが、コードを貼り付けている箇所も多いので意外とサクサク進む
コードリーディングって具体の極地なので、今まで概念だけ知っていたものの実装を読んで理解できるのは体験としてすごく良いmrsekut.icon
マジで良書すぎる...mrsekut.icon*3
はじめに
コードの解説の記法など
第1章 UNIX V6の全体像
1word == 16bit
読む時に、この辺の構成を参照してかないといけないっぽい?mrsekut.icon
第2章 プロセス
プロセスの実装だmrsekut.icon*2
MMUによって、仮想アドレスから物理アドレスを算出する具体的な方法
以降の用語
カーネルAPR
ユーザーAPR
APRn
第3章 プロセスの制御
プロセスをforkする内部の処理を見る
3.3 実行プロセスの切り替え
3.4 プログラムの実行
3.5 プロセスの終了
3.6 データ領域の拡張
3.7 メモリとスワップ領域の管理
3.8 まとめ
第4章 スワッピング
4.1 スワッピングとは
4.2 テキストセグメントの共有処理
4.3 まとめ
第5章 割り込み・トラップ
5.2 優先度とベクタ
5.3 割り込み・トラップの処理の流れ
5.4 クロック割り込みハンドラ
5.5 トラップハンドラ
5.7 まとめ
6.1 シグナルとは
6.2 トレース
6.3 まとめ
第IV部 ブロックI/Oシステム
7.1 デバイスの基礎
7.2 ブロックデバイスサブシステム
7.4 バッファの取得と解放
7.5 読み込み
7.6 書き込み
7.7 RAW入出力
7.8 まとめ
8.1 ブロックデバイスドライバとは
8.2 RK-11ディスクドライバ
8.3 まとめ
第9章 ファイルシステム
9.1 ファイルシステムとは
9.3 マウント
9.5 inodeからストレージ領域へのマッピング
9.6 ブロックデバイスのブロック割り当て
9.7 パス名からinodeへの変換
9.8 初期化と同期
9.9 まとめ
第10章 ファイル操作
10.1 ユーザプログラムのファイル操作
10.2 3つの構造体
10.3 ファイルの新規作成とオープン
10.4 ファイルの読み込み・書き込み
10.5 ファイルのシーク
10.6 ファイルのクローズ
10.7 ディレクトリの作成
10.8 ファイルのリンク
10.9 ファイルの削除
10.10 まとめ
第11章 パイプ
11.1 パイプとは
11.2 パイプ通信の開始
11.3 データのやりとり
11.4 パイプ通信の終了
11.5 パイプ通信を確立するまでの流れ
11.6 まとめ
第VI部 キャラクタI/Oシステム
12.1 キャラクタデバイスドライバ
12.2 LP11デバイスドライバ
12.3 まとめ
13.1 テレタイプ端末とは
13.2 端末のオープン・クローズ
13.3 端末の設定
13.4 端末からの文字入力
13.5 入力されたデータの読み込み
13.6 端末への出力
13.7 まとめ
第VII部 システムの起動
第14章 システムの起動
14.1 起動の流れ
14.2 まとめ
付録 参考資料など
A.1 参考文献・サイト
あとがき