Linuxカーネル解読室(2日目)
ブラウザクラッシュで入力が飛んだ。
でも負けないぞよ。
少ないけど気合で毎日少しずつ進めます。
- 序章 0.5 プロセス管理
- プロセスは実行状態を管理する。プロセス毎にデータ構造を用意する。プロセスIDや実行優先度などある。
- プロセスは、プロセスIDとそれを管理するプロセスグループID・セッションIDでナンバリングされる。
- なんとシグナル機構と密接な関わりが!!
- 親プロセスはforkシステムコールで親の属性を引き継いだ子プロセスを作る。複製後、プロセススケジューリング対象に加えられる。
- その後、execシステムコールにより、プログラムの実行を開始する。その際、プロセス情報は破棄されexecされたモノになる。
- execはDLLの利用はOK。動的にプログラムにリンクして実行出来る。
- exitシステムコールはプロセス終了の合図。実メモリを解放したり、利用中のファイルを閉じたり。
- 親プロセスをwaitして子プロセスを待てる。Linuxカーネルはexitした子のデータ解放を、親がwaitするまで一部保留する。留保中はZOMBIEになる。
- シグナルは非同期事象を伝える仕掛け。そのイベントで、デフォルト動作、無視、シグナルハンドラ動作の何れかを実行する。
- シグナル動作には、プロセス終了やプロセスの中断、コアダンプなどある
- スレッドはプロセスの一種。
- プロセスと(スレッドと)の違いは、プロセス空間を共有していることと、スレッド間で関係情報を保持している点。
- スレッド操作はPOSIXライブラリによって提供される。
- 序章 0.6 メモリ管理
- 2種類のメモリ管理でRAMチップのメモリ領域を管理する。一つは実メモリ管理、一つは仮想記憶。
- 実メモリ管理では、ページという単位で管理している。ページはCPUがサポートするメモリ管理の最小単位。
- Buddyシステム(隣あった空き領域を結合する機能)と、Slabアロケータ(フラグメント防止とメモリキャッシュ効率化)がの2つがキモ。
- 仮想記憶の機能により、物理的なメモリフラグメントを意識する必要が無くなる。
- Linuxはページング機構を提供しているが、参照が発生したものだけ実際に割り当てをしている。(デマンドページング)
- 参照率が低いものはスワップしてシステムへ返却する。ここでいうスワップとはページ単位で追い出すページアウトに相当し、プロセス全体を追い出すいわゆるスワップアウトではない。(Linuxでの呼び方)
明日はファイルシステムとネットワーク。