Linuxカーネルの設計と実装ノート_1_基本的な概念
オペレーティングシステム
用語システムは、オペレーティングシステムを含み、その上で実行されているすべてのアプリケーションがオペレーティング・システムは基本的な機能とサブシステム管理の部分を完了するため、システム全体の責任であることを意味し、これらの部品が含まれている必要がありますカーネル、
デバイスドライバ、
ブートローダー
>コマンドラインシェル、
ユーザーインターフェース、
基本的なファイル管理ツール
システムツール。
カーネル
ユーザインタフェースのような、他の部分は、オペレーティングシステムのカーネルの内部コアであり、システムソフトウェアによって提供されるコアサービスのこの部分に依存しなければならない、外観のオペレーティングシステムでありますハードウェアデバイスの管理、
システムリソースを割り当てるなど
コアコンポーネント
カーネルはまた、管理者またはオペレーティングシステムのカーネルと呼ぶ。カーネルは、典型的には割り込みサービス・ルーチンへの対応のための責任がある
、メモリ・マネージャ・プロセスのアドレス空間の管理を担当する
プログラム、呼び出しプロセッサ時間を共有するために複数のプロセスを管理する責任がある
共通のコンポーネントネットワーク、プロセス間通信システムのサービスを。
カーネル空間
カーネルは、一般的なアプリケーションとは独立して、カーネル保護メカニズムを持つ近代的なシステムでは、彼は一般的に。ハードウェアデバイスにメモリ空間とアクセス保護されたすべての権限を持っている ``状態システムの状態のようなシステムであり、保護されますメモリ空間、カーネル空間と呼ばれます。ユーザ空間
ユーザ空間でのアプリケーションの実行、彼らは唯一のシステムの一部は、彼らが使用するリソースを可能にし、唯一の特定のシステム機能を使用することができ、ハードウェアに直接アクセスすることはできません、それは他の誰かに割り当てられたカーネルメモリ範囲にアクセスすることはできません見ることができ、いくつかがあります他の制限。状態のスイッチングシステム
カーネル空間のカーネルモードにカーネルのランタイムシステムは、通常のユーザプログラムを実行する際に、システムユーザは、ユーザモード実行スペースを入力するために実施しました。
システムコール
システムを介したアプリケーションは、その代わりに、タスクの数を完了するために、カーネルを呼び出す。我々が呼ぶ、カーネルはその実施のために行動しています。
アプリケーションは、カーネル空間で実行するシステムコールを介して呼び出され、カーネルがコンテキストで実行されているとして知られています。
実行するには、カーネル空間でのシステムコールを通してアプリケーションは、その作業の基本的な動作を完了するためのアプリケーションです。
割り込みメカニズム
非同期割り込み信号を発行します、システムのハードウェアと通信したい、CPUの実行を中断し、その後、カーネルの実装を中断し、割込みに対応する割込み番号は、カーネルが発見し、割り込み番号によって、対応する割り込みサービス・ルーチンを実行し、割り込みを処理しますLinuxを含む多くのオペレーティングシステムでは、管理プログラムを中断範囲を設定する処理では実行されませんが、環境の範囲内で高速割り込み処理と迅速な終了を確実にするために、割り込み処理カーネルで実行を捧げました。
3の1のいずれかの時点で各プロセッサコア活動が含まれている必要があります
- ユーザ空間、ユーザプロセスの実装で実行します。
- 特定のプロセスの実行に代わって、プロセスのコンテキストを扱う、カーネル空間で実行します。
- 任意のプロセスとは独立して、割り込みコンテキストを実行し、カーネル空間で実行して、特定の割り込み。
- ときにCPUのアイドル時間、カーネルは、カーネル空間で実行し、プロセスコンテキストの間、空のプロセスを実行します。
MMU
UNIXカーネルは、静的な実行可能ファイルのライブラリとして見ることができる
ので、Unixシステムを実行している、MMU機構が;.メモリを管理するために必要とされる単一の実行可能ブロックに別のアドレス空間で実行する必要があり
、ページと呼ばれるMMUメカニズムUNIXカーネルは通常、ハードウェア・システム機構のページ、メモリ管理を提供し必要と
各プロセスが異なる仮想アドレス空間で実行できるように。
オペレーティング・システムのカーネルは、3つのキャンプに分かれています。 单内核
微内核
外内核
单内核
いわゆるシングルコア、コアが別のアドレス空間で実行するための大きなプロセスとして実装されるシングルコアは、カーネルは、コアサービスのすべてがあり、静的バイナリファイルの形式でディスク上の最もシンプルなデザイン格納されています同じカーネルアドレス空間を実行している。我々は、カーネルモードで実行されているため、すべてのプロセスおよびシステムサービスは、ユーザ空間を可能にし、カーネル空間が同じアドレス空間、ユーザプログラムとシステムにある同じアドレス、間にあります単純な単一のモジュールの性能特性を有する、単離することなく、互いの間で呼び出すことができ、ほとんどのUnixシステムは、単一のモジュールとして設計されています。
微内核
マイクロカーネルカーネルは、各プロセスがサーバと呼ばれ、独立した複数のプロセスに分割されます。
唯一の強い要求特権サービスサーバは、特権モードで実行できるようにするには、他のサーバは、ユーザ空間で実行されている
別のアドレス領域におけるカーネル空間とユーザ空間がそれらの間のが、唯一のメッセージングを介して直接アクセスすることはできませんので、それぞれのメッセージサーバを使用して、処理サーバプロセス間通信IPC機構との間の通信システムIPCメカニズムを介して通信する、
モジュラー設計、各サーバが実行されているので、異なるアドレス領域に、崩壊を回避するサーバをオープン単離しシングルコアよりも、システムクラッシュをもたらす、よりセキュア。
マイクロカーネルの短所:
関数呼び出しのコストよりも多くのIPCメカニズムは、それはまた、スイッチングカーネル空間とユーザ空間を必要とするので、メッセージを配信するためにいくつかの時間がかかるしながら、これらのコストをかけず、シングルコア、実際のマイクロカーネルシステム、すべてのカーネルサービスは通常、カーネルに存在しているようにカーネル間のサービスを作るスペースは、カーネルサービス間でメッセージを渡すのオーバーヘッドを避け、直接呼び出すことができ、典型的な例マックスOS XおよびWindows NTは、マイクロカーネルです。
すべてがカーネルモード、ダイレクトコール機能で実行されるように、Linuxは、シングルコアシステムであり、メッセージはオーバーヘッド渡されていません。
Linuxカーネルのバージョンの命名体系:
最初の番号は、メジャーバージョン番号である
第二の数はバージョン番号、安定した偶数、奇数Devのある
第3の数は、リビジョン番号である
第四の数は安定したバージョン番号(オプション)である
よう2.6.26.1として、
一次カーネルのバージョン番号は、バージョン番号が安定している、リビジョン番号が26であり、バージョン番号が6であり、2です。