Lions' 本読み (52)

朝練メモ。
まごろくさんスライドの_UNIX カーネルの構造 - コンテキストの退避・復元_の項を見つつ 7 章に目を通しています。基本的な部分が理解できていなかったんですが、一度 15 章あたりまでをざくっと目を通してなんとなく理解できているおかげかどうかは不明ですが、さくさく理解できる気がしています。

とは言え

322p のアレは何だっけ、と言いつつおぼろげながら estabur 手続きで初期設定される u.u_uisa および u.u_uisd のざっくり情報だ、ということが分かったりとか。

プロセス切り替え

まごろくさんスライドにある_割り込み発生時から復帰までに切り替えが発生する_というケイスについて、どんなタイミング (?) というか条件で発生するのか、は確認しておきたいかも。
て、これがテキストの 343p に記述されているナニなのか。とは言え、10 章なソレはきちんと再確認必要。あ、8 章にもその旨の記述がありますね。

あるいは、ユーザーモードに戻る準備ができているカーネルプロセスは変数 runrun を検査し、これがゼロでないならば、もっと優先度の高いプロセスを実行する準備ができていることを意味しているので、そのカーネルプロセスは swtch を呼び出す。

Lions' Commentary on UNIX より引用
これ、正に call 手続きのアレですね。あ、この記述も実装確認しとくべきかも。

sleep を呼び出して自分を一時停止したプロセスは、別のプロセスによって実行可能 (ready to run) 状態に戻される。よくあるのは、割り込み処理中に、割り込みを処理しているプロセスが直接、あるいは wakeup (2113) 呼び出しによって間接的に、setrun (2134) を呼び出す場合である。

Lions' Commentary on UNIX より引用
これも clock 手続きで setrun は呼び出してませんが wakeup は呼び出してますね。8 章はボリューム的にアレなので帰宅後に時間が確保できればもう少しもごもごしたいかも。