logo

カーネルとは何ですか?

コンピューターサイエンスでは、 カーネルは、オペレーティング システムの核となるコンピューター プログラムです。 カーネルについて詳しく説明する前に、まずカーネルの基本、つまりコンピュータのオペレーティング システムについて理解しましょう。

オペレーティング·システム

オペレーティング システムまたは OS は、ハードウェア コンポーネントとエンドユーザーの間のインターフェイスとして機能するシステム ソフトウェアです。他のプログラムを実行できるようになります。デスクトップ、ラップトップ、タブレット、スマートフォンなどの各コンピュータ システムには、デバイスの基本機能を提供する OS が必要です。広く使用されているオペレーティング システムには、次のようなものがあります。 ウィンドウズLinux 、MacOS、Android、iOSなど。

オペレーティングシステムのカーネルとは何ですか?

カーネルとは
  • 上で説明したように、カーネルは OS (オペレーティング システム) の中核部分です。したがって、システム内のすべてを完全に制御できます。ハードウェアとソフトウェアの各動作はカーネルによって管理および管理されます。
  • アプリケーションとハードウェア レベルで行われるデータ処理の間のブリッジとして機能します。これは OS の中心的なコンポーネントです。
  • これは、コンピュータのメモリに常に常駐する OS の一部であり、ソフトウェアとハ​​ードウェア コンポーネント間の通信を可能にします。
  • これは、システムの起動時に最初にロードされるコンピューター プログラムです (ブートローダーの後)。ロードされると、残りの起動を管理します。また、メモリ、周辺機器、ソフトウェアからの I/O リクエストも管理します。さらに、すべての I/O リクエストを CPU のデータ処理命令に変換します。他のタスクも管理します メモリ管理、タスク管理、ディスク管理など
  • カーネルは保持され、通常は別のメモリ空間にロードされます。 保護されたカーネル空間。 アプリケーション プログラムや OS のそれほど重要ではない部分によるアクセスから保護されています。
  • ブラウザ、ワード プロセッサ、オーディオおよびビデオ プレーヤーなどの他のアプリケーション プログラムは、 ユーザースペース。
  • これら 2 つの別々のスペースにより、ユーザー データとカーネル データは相互に干渉せず、不安定性や速度低下を引き起こすことはありません。

カーネルの機能

OS のカーネルはさまざまな機能の実行を担当し、システムを制御します。カーネルの主な役割を以下に示します。

    端末管理
    さまざまなアクションを実行するには、プロセスはコンピューターに接続されているマウス、キーボードなどの周辺機器にアクセスする必要があります。カーネルは、デバイス ドライバーを使用してこれらのデバイスを制御する責任があります。ここで デバイスドライバ OS がハードウェア デバイスと通信できるようにするコンピュータ プログラムです。
    カーネルは、使用可能なすべてのデバイスのリストを維持します。このリストは、すでに知られているか、ユーザーによって構成されているか、実行時に OS によって検出されている可能性があります。メモリ管理
    カーネルは、コンピュータのメモリへのアクセスを完全に制御します。各プロセスが動作するにはある程度のメモリが必要ですが、カーネルによりプロセスはメモリに安全にアクセスできるようになります。メモリを割り当てる最初のステップは次のようになります。 仮想アドレス指定、 これはページングまたはセグメンテーションによって行われます。 仮想アドレス指定 プロセスに仮想アドレス空間を提供するプロセスです。これにより、アプリケーションが相互にクラッシュするのを防ぎます。資源管理
    カーネルの重要な機能の 1 つは、さまざまなプロセス間でリソースを共有することです。各プロセスがリソースに均一にアクセスする方法でリソースを共有する必要があります。
    カーネルは、同期および プロセス間通信 (IPC)。 プロセス間のコンテキストの切り替えを担当します。コンピュータリソースへのアクセス
    カーネルは、RAM や I/O デバイスなどのコンピュータ リソースへのアクセスを担当します。 RAM またはランダム アクセス メモリ データと命令の両方を含めるために使用されます。各プログラムは実行するためにメモリにアクセスする必要があり、ほとんどの場合、利用可能なメモリよりも多くのメモリが必要です。このような場合、カーネルはその役割を果たし、各プロセスがどのメモリを使用するか、必要なメモリが利用できない場合にどうするかを決定します。
    また、カーネルは、キーボード、マイク、プリンターなどの I/O デバイスを使用するためにアプリケーションからの要求を割り当てます。

カーネルの種類

カーネルには主に以下の 5 種類があります。

カーネルとは

1. モノリシックカーネル

モノリシック カーネルでは、 ユーザー サービスとカーネル サービスの実装には同じメモリ空間が使用されます。

カーネルとは

つまり、このタイプのカーネルでは、ユーザー サービスとカーネル サービスに異なるメモリが使用されません。

同じメモリ空間を使用するため、カーネルのサイズが大きくなり、OS 全体のサイズが大きくなります。

また、ユーザー空間とカーネル空間を別々に使用しないため、プロセスの実行も他のカーネル タイプより高速です。

dateformat.format Java

のモノリシック カーネルは、 Unix、Linux、Open VMS、XTS-400 など

利点:

  • 個別のユーザー空間とカーネル空間がなくなり、関与するソフトウェアが少なくなるため、プロセスの実行も高速になります。
  • したがって、単一のソフトウェアであるため、ソースとコンパイルされた形式の両方が小さくなります。

短所:

  • いずれかのサービスでエラーが発生すると、システム全体がクラッシュする可能性があります。
  • これらのカーネルは移植性がないため、新しいアーキテクチャごとに書き直す必要があります。
  • サイズが大きくなり管理が難しくなります。
  • 新しいサービスを追加するには、オペレーティング システム全体を変更する必要があります。

2. マイクロカーネル

カーネルとは

マイクロカーネルは、次のようにも呼ばれます。 MK であり、従来のカーネルやモノリシック カーネルとは異なります。この中で、 ユーザー サービスとカーネル サービスは、ユーザー空間とカーネル空間という 2 つの異なるアドレス空間に実装されます。 。両方のサービスに異なるスペースを使用するため、マイクロカーネルのサイズが小さくなり、OS のサイズも小さくなります。

マイクロカーネルは、モノリシック カーネルと比較して管理と保守が容易です。それでも、より多くのシステム コールとコンテキスト切り替えが発生すると、システムが遅くなり、パフォーマンスが低下する可能性があります。

これらのカーネルは、あるサーバーから別のサーバーへのリクエストを処理するためにメッセージ パッシング システムを使用します。

マイクロカーネルによって提供されるのは、メモリ アドレス空間の定義、IPC (プロセス間通信)、プロセス管理などの一部の重要なサービスのみです。ネットワーキングなどの他のサービスはカーネルによって提供されず、として知られるユーザー空間プログラムによって処理されます。 サーバー

モノリシック カーネルの主な欠点の 1 つは、カーネル内のエラーがシステム全体をクラッシュさせる可能性があるという点ですが、マイクロカーネル内で取り除くことができます。マイクロカーネルの場合と同様、カーネル プロセスがクラッシュした場合でも、エラーが発生したサービスを再起動することでシステム全体のクラッシュを防ぐことができます。

年の四半期

マイクロカーネルの L4、AmigaOS、Minix、K42 、など。

利点

  • マイクロカーネルは簡単に管理できます。
  • OS全体を変更することなく、新しいサービスを簡単に追加できます。
  • マイクロカーネルでは、カーネル プロセスがクラッシュした場合でも、システム全体のクラッシュを防ぐことができます。

短所

  • インターフェース用のソフトウェアの要件が増えるため、システムのパフォーマンスが低下します。
  • 工程管理は非常に複雑です。
  • メッセージングのバグを修正するのは困難です。

3. ハイブリッドカーネル

カーネルとは

ハイブリッド カーネルは、次のようにも呼ばれます。 モジュラーカーネル 、モノリシックとマイクロカーネルの両方を組み合わせたものです。モノリシック カーネルの速度とマイクロカーネルのモジュール性を利用します。

ハイブリッド カーネルは、モノリシック カーネルの追加のプロパティを備えたマイクロカーネルの拡張バージョンとして理解できます。 これらのカーネルは、MS Windows のさまざまなバージョンなどの商用 OS で広く使用されています。

これはマイクロカーネルによく似ていますが、システムのパフォーマンスを向上させるためにカーネル空間にいくつかの追加コードも含まれています。

ハイブリッド カーネルを使用すると、次のようないくつかのサービスを実行できます。 カーネル空間のネットワークスタック 従来のマイクロカーネルと比較してパフォーマンスは低下しますが、カーネル コード (デバイス ドライバーなど) をユーザー空間でサーバーとして実行できます。

C の階乗

ハイブリッド カーネルの例としては、Windows NT、Netware、BeOS などが挙げられます。

利点:

  • テストのために再起動する必要はありません。
  • サードパーティのテクノロジーを迅速に統合できます。

短所:

  • 通過するインターフェイスが増えるとバグが増える可能性があります。
  • 一部の管理者にとって、特にシンボルの違いなどの問題に対処する場合、モジュールを保守するのは混乱を招く作業になる可能性があります。

4. ナノカーネル

その名の通り、 Nanokernel では、カーネルの完全なコードは非常に小さいため、ハードウェアの特権モードで実行されるコードは非常に小さいことになります。 。ここで、「ナノ」という用語は、ナノ秒のクロック解像度をサポートするカーネルを定義します。

ナノカーネルの例 エロスなどです

利点

powershell 以下
  • 非常に小さいサイズでもハードウェア抽象化を提供します。

短所

  • Nanokernel にはシステム サービスがありません。

5. エクソカーネル

Exokernel はまだ開発中であり、OS を設計するための実験的なアプローチです。

このタイプのカーネルは、次のように他のカーネルとは異なります。リソースの保護は管理から分離されているため、アプリケーション固有のカスタマイズを実行できます。

利点:

  • エクソカーネルベースのシステムには、複数のライブラリ オペレーティング システムを組み込むことができます。各ライブラリは異なる API をエクスポートします。たとえば、1 つは高レベルの UI 開発に使用でき、もう 1 つはリアルタイム制御に使用できます。

短所:

  • エクソカーネルの設計は非常に複雑です。

カーネルパニックとは何ですか?

すでに説明したように、カーネルはコンピュータ システム全体を制御します。したがって、クラッシュするとシステム全体がダウンする可能性があります。 MacOS および Linux では、このような望ましくないイベントは「」として知られています。 カーネルパニック。' カーネルパニックから回復するには、システムを再起動する必要があります。

通常、これらのカーネル パニックはハードウェア通信の問題によって引き起こされます。したがって、カーネル パニックが繰り返し発生する場合は、必要性の低いデバイスまたは不要なデバイスを取り外し、問題が解決されるかどうかを確認してください。