おいも貴婦人ブログ

生物系博士課程満期退学をしたAIエンジニアのブログ。

LINUXカーネル(LINUXを理解するために(1))

オペレーティングシステムの基礎概念

  • ハードウェアプラットフォームの構成要素である低水準のプログラマブルなハードウェアを制御する.
  • コンピュータシステム上で実行するアプリケーション(いわゆるユーザプログラム)に実効環境を提供する。
  • MS-DOSでは、ハードウェアを直接操作することをすべてユーザに認めている。一方で、UNIX系では、OSにハードウェアの操作の許可をとる必要がある。
  • ハードウェアはCPUに2つの異なる実行モードが存在する。

マルチユーザシステムに置けるOSの機能

  • ユーザIDを認証機構
  • 同じシステム上で動作しているほかのアプリケーションの動きを止めてしまう可能性のあるバグを持つユーザプログラムに対する保護機構
  • ほかのユーザの処理に干渉したり覗き見したりする可能性のある、悪意のあるユーザプログラムに対する保護機構
  • 各ユーザに割り当てる資源の量を制限するアカウンティング機構

プロセス

  • プロセスとは、「実行中のプログラムのインスタンス」または動作中のプログラムの「実行コンテキスト」と定義される。
  • 昔のOSでは、プロセスは1つのアドレス空間において、命令の並びを1つだけ実行する。
  • 今のOSでは、プロセスが複数の処理の流れを持つこと、つまり、同じアドレス空間で複数の命令を実行することができる。
  • マルチプログラミング、マルチプロセッシング:複数のプロセスが同時に動作状態になることが可能なシステム
  • スケジューラ:実行するプロセスを選択する。
  • プリエンプト不可なプロセス:プロセスが自発的にCPUを手放したときにだけ、スケジューラが呼び出される。
  • プリエンプト可能:マルチユーザシステムにおいて、OSは各プロセスがCPUを獲得していた時間を管理し、定期的にスケジューラを作動する。
  • UNIX系OS:プロセス/カーネルモデループロセスがカーネルに要求を出す。

カーネルアーキテクチャ

  • UNIXカーネル:カーネル内では、各レイヤがプログラム全体へと統合され、プロセスはカーネルモードで動作する。
  • マイクロカーネル:各レイヤが、明確に区別され、レイヤ間の連絡はソフトウェアインターフェイスを通じて行われる。モジュール機能を提供している。
  • モジュール機能:モジュールはオブジェクトファイルで、実行中のコードをカーネルに組み込むことが可能。
    • モジュール化方式: 明確に定義されたソフトウェアインターフェースを用いて、モジュールを操作するので、開発が容易
    • プラットフォーム独立性:ハードウェアプラットフォームに依存しない。
    • メインメモリの使用量を節約:削除、読み込みが好きなときにできる。
    • 性能に関して妥協しない:カーネルに静的に組み込まれたオブジェクトコードと同等。