LINUXカーネル(LINUXを理解するために(1))
オペレーティングシステムの基礎概念
マルチユーザシステムに置けるOSの機能
- ユーザIDを認証機構
- 同じシステム上で動作しているほかのアプリケーションの動きを止めてしまう可能性のあるバグを持つユーザプログラムに対する保護機構
- ほかのユーザの処理に干渉したり覗き見したりする可能性のある、悪意のあるユーザプログラムに対する保護機構
- 各ユーザに割り当てる資源の量を制限するアカウンティング機構
プロセス
- プロセスとは、「実行中のプログラムのインスタンス」または動作中のプログラムの「実行コンテキスト」と定義される。
- 昔のOSでは、プロセスは1つのアドレス空間において、命令の並びを1つだけ実行する。
- 今のOSでは、プロセスが複数の処理の流れを持つこと、つまり、同じアドレス空間で複数の命令を実行することができる。
- マルチプログラミング、マルチプロセッシング:複数のプロセスが同時に動作状態になることが可能なシステム
- スケジューラ:実行するプロセスを選択する。
- プリエンプト不可なプロセス:プロセスが自発的にCPUを手放したときにだけ、スケジューラが呼び出される。
- プリエンプト可能:マルチユーザシステムにおいて、OSは各プロセスがCPUを獲得していた時間を管理し、定期的にスケジューラを作動する。
- UNIX系OS:プロセス/カーネルモデループロセスがカーネルに要求を出す。
カーネルアーキテクチャ
- UNIXカーネル:カーネル内では、各レイヤがプログラム全体へと統合され、プロセスはカーネルモードで動作する。
- マイクロカーネル:各レイヤが、明確に区別され、レイヤ間の連絡はソフトウェアインターフェイスを通じて行われる。モジュール機能を提供している。
- モジュール機能:モジュールはオブジェクトファイルで、実行中のコードをカーネルに組み込むことが可能。
- モジュール化方式: 明確に定義されたソフトウェアインターフェースを用いて、モジュールを操作するので、開発が容易
- プラットフォーム独立性:ハードウェアプラットフォームに依存しない。
- メインメモリの使用量を節約:削除、読み込みが好きなときにできる。
- 性能に関して妥協しない:カーネルに静的に組み込まれたオブジェクトコードと同等。