FreeBSDの設計と実装 読書メモ
カーネルサービス
p63 「すべてのシステムコールは、アプリケーションからは 同期的(synchronous)に見える。つまりシステムコールを実行するためにカーネルが動作している間、アプリケーションは動作を中断する」
「システムコールは、一般にハードウェアトラップを用いて、CPUの実行モードおよびアドレス空間のマッピングを変更することで実現される」
「カーネルに対して渡されたパラメータは、すべてカーネルのアドレス空間上にコピーし、検証済みのパラメータがシステムコールの副作用で変更されてしまうのを防ぐ。カーネルからのシステムコールの結果は、ハードウェアレジスタ、あるいはユーザが指定したメモリアドレスにコピーされる値によって返される。」
p66 プロセスグループとセッション]
プロセス > プロセスグループ > セッションの順でまとめられる。セッションは複数のプロセスグループを内部に持ち、プロセスグループは複数のプロセスと関連付けられる。セッションの例としてはユーザのログインシェルとそのシェルから起動したジョブを関連付けるためやデーモンとその子孫プロセスのために独立した環境のためなど。
プロセスグループ内ではプロセスグループ識別子が一致する時のみその識別子を読み込むことが出来るため、複数のプロセスグループが同時に実行することが出来るジョブ制御が可能になる。
p68
スワッピングはメモリ資源が足りない時にプロセスのコンテキスト全体を二次記憶に退避させることで行われる。カーネルが自動的に行うためプロセスが意識することはなく実行される。