1. 序章

オペレーティングシステム(OS)カーネルは、コンピューターサイエンスにおける挑戦的なトピックの1つです。

このチュートリアルでは、 OSカーネルとはを簡単に定義し、その目的に関する情報を提供します。

2. 意味

カーネルは、オペレーティングシステムの最も重要な部分です。これは、ハードウェアとコンピューターのプロセスの間のプライマリインターフェイスです。 カーネルは、リソースを可能な限り効果的に調整するために、これら2つを接続します。

ハードシェル内のシードのように、OS内で動作するため、カーネルと呼ばれます。 次の図は、OS内での位置を示しています。タブレット、デスクトップ、サーバー、その他の種類のデバイスなど、ハードウェアのすべての主要機能を制御します。

カーネルは、ブートローダーの前にメモリにロードされた初期プログラムの1つです。 ブートローダーは、中央処理装置の命令を変換する役割を果たします。 メモリだけでなく、キーボードやモニターなどの周辺機器も管理します。

3. カーネルの目的

カーネルには、プロセスとメモリの管理、ディスクストレージ、低レベルのネットワーキングなど、いくつかの重要な仕事があります。 カーネルの主な目的は次のように要約できます。

  • どのプロセスが中央処理装置(CPU)の次のプロセスであるか、いつ、どのくらいの時間かを決定します
  • 何をどこに保存するために使用されているメモリの量を監視します
  • ハードウェアとプロセスの間のインタプリタとして機能します
  • システムコールを介してプロセスからサービスの要求を受け取ります

開発者がカーネルを適切に実装している場合、それはユーザーの目には見えません。 カーネルスペースと呼ばれる独自の領域で動作します。メモリを割り当て、すべてがカーネルスペースのどこに格納されているかを監視します。

ユーザースペースは、ユーザーがファイルとWebブラウザーを表示する環境です。 これらのプログラムは、システムコールインターフェイスを使用してカーネルと通信します。

4. カーネルはどこにありますか?

カーネルがマシンのどこに収まるかを視覚化しようとすると、マシンは3つのレイヤーを持っていると考えることができます。

ユーザープロセス:ユーザープロセスは実際にユーザースペースを作成します。 ただし、これらのプロセスは、カーネルが制御するアプリケーションです。 カーネルは、これらのプロセスが相互に通信できるようにします。 プロセス間通信(IPC)メカニズムを使用して、プロセス間の通信を可能にします。

カーネル:ご覧のとおり、レイヤーの真ん中にあります。 これはOSのコアです。

ハードウェア:これは物理マシンであり、システムのベースです。 これは、メモリ、プロセッサまたは中央処理装置(CPU)、およびグラフィックス、ストレージ、ネットワーキングなどの入出力(I / O)コンポーネントで構成されています。 CPUは計算を実行し、メモリの読み取りと書き込みを行います。

システムがCPU上で実行するコードには、カーネルモードとユーザーモードの2つのモードがあります。コードがカーネルモードで実行されている間、ハードウェアに無制限にアクセスできます。 ただし、コードがユーザーモードで実行されている場合、CPUとメモリへのアクセスは制限されます。

これらの2つのモードは、いくつかの重要で複雑な操作を提供します。 たとえば、セキュリティのための特権分離に役立ちます。 実際、これは、プロセスがユーザーモードで失敗した場合、カーネルモードがエラーを最小限に抑え、プロセスを回復できることを意味します。

モノリシックカーネル、マイクロカーネル、エキソカーネル、ハイブリッドカーネル、ナノカーネルなど、非常に多くのカーネルタイプがあります。 モノリシックカーネルとマイクロカーネルの主な違いは、システムコールとそのカーネルスペースに関連しています。

たとえば、ほとんどのUnixカーネルはモノリシックです。 各カーネル層はカーネルプログラム全体に統合され、カーネルモードで実行されます。 一方、マイクロカーネルオペレーティングシステムは、IPCメカニズムや基本的なスケジューラなどの少数のカーネル機能のみを必要とします。

5. 結論

この記事では、OSでのカーネルの定義について説明しました。 次に、その目的について簡単に説明しました。 その後、カーネルがマシンのどこに収まるかを視覚化し、いくつかのカーネルタイプをリストしました。