カーネル
カーネルとは
カーネルは、コンピュータの主要部分であるオペレーティングシステムの中核を表すためにコンピューティングで使用される英語の単語です。
カーネルバージョンから古い、またはより新しいバージョンへの単純な変更は、コンピュータのハードウェアおよび互換性の問題を解決するのに十分かもしれません。
システムに関連するすべてのものを完全に制御するKernelは、起動時にロードされる最初のプログラムの1つです。
実行が開始されるとすぐに、カーネルは適切なコンピュータ操作に必要なすべてのハードウェアを検出するプロセスを開始します。
また、カーネルはソフトウェアの入出力要求を操作し、例えば使用されるメモリや周辺機器を管理する。
カーネル機能
システムの中核をなすカーネルは、ソフトウェアをハードウェアに接続する責任があります。
このようにして、オペレーティングシステムのリソース間で効果的な通信を確立し、その主な機能を管理します。
カーネルによって管理されるオペレーティングシステムの主な機能については、以下を参照してください。
プロセス管理
オペレーティングシステムでは、プロセスは実行中のプログラムです。
カーネルによって実行されるプロセス管理は、どのプロセスが実行されるかを決定します。
実行中の各プロセスは、同じ秒内に数回プロセッサに出入りすることができ、別のプロセスへの道を譲ります。
カーネルは、どのプロセスをプロセッサに割り当てるかを決定します。
プロセス間の切り替えは非常に迅速に行われるため、プログラムはプロセッサ上になくても実行を続けることができます。
アクセスモード
プロセスの実行は、2つの異なる方法で実行できます。
ユーザーモード :いくつかのサブシステムで構成されています。 環境サブシステムを含むそのうちの1つは、さまざまな種類のオペレーティングシステム用に設計されたアプリケーションを実行します。
ユーザーモードは非特権モードと見なされます。 このモードのすべてのソフトウェアは、プロセスの作成などの特権命令を実行するためにカーネルに要求を送信する必要があります。
カーネルモード :コンピュータ全体にアクセスできるので特権的と見なされます。 CPUがカーネルモードのときは、信頼性の高いソフトウェアを実行しており、任意の命令を実行できることを示します。
CPUの意味を参照してください。
メモリ管理
タスクマネージャでは、RAMの一部(合計メモリ)がカーネルに割り当てられます。
プロセス管理中に、カーネルはプログラムをアドレス空間に送信します。
カーネルに割り当てられた総メモリの一部は、コアプロセスがそのスペースに送信されるために常に利用可能なメモリがあることを保証します。
カーネルは、各プロセスがその動作中にアクセスできるメモリの量を定義する機能も持っています。
デバイス管理
カーネルはコンピュータに接続されている周辺機器を制御します。
ユーザーがデバイス(ペンドライブ、プリンタ、ヘッドセット、マウスなど)を接続するたびに、カーネルはそのデバイスのメモリを管理し、コンピュータのプログラムとハードウェアと通信します。
各デバイスは、特定のオペレーティングシステム上で動作するように作られたドライブを持っています。 したがって、Windows用に設計されたドライバは、たとえばMAC上では機能しません。
各装置のドライバは、ある電子装置とコンピュータのオペレーティングシステムとの間で実行されるコマンドの一種の変換を実行することである。
オペレーティングシステムのサービスはシェルと呼ばれるユーザーインターフェースを通してアクセスされます。これは英語では「シェル」を意味します。 この名前は、シェルがコアの周囲の最外層であるという事実によるものです。
インターフェースの意味を参照してください。
システムコール
システムコールは、ユーザーモードで使用されるコンピュータープログラムが持つ特定の機能です。 それらは特定の動作を実行するようにコンピュータのオペレーティングシステムのコアを呼び出すために使用されます。
これらの機能はしばしば複雑で、平均的なユーザーがアクセスできない機能を使用します。
Windowsシステムコールとそれに対応するLinuxカーネルの例については、以下を参照してください。
Windows | Linux | 製品の説明 |
---|---|---|
CloseHandle | 閉じる | ファイルを閉じる |
CreateFile | 開く | ファイルを作成する |
DeleteFile | リンク解除 | ファイルを削除 |
ExitProcess | 出口 | プロセスとそのすべてのセグメントを終了する |
GetLocalTime | 時間 | 現在地、日付、時刻を取得する |
Windowsの詳細を学んでください。
カーネルの種類
そのアーキテクチャに関して、オペレーティングシステムのコアは、 モノリシック 、 ハイブリッド、または小核であり得る 。
モノリシック
デバイスドライバとカーネル拡張は、完全なハードウェアアクセスで、カーネル空間で動作します。
すべてのモジュールが同じアドレス空間で実行されるため、これらの空間のいずれかでエラーが発生した場合、システム全体が影響を受ける可能性があります。
モノリシックの例 :Linux、BSD、MS-DOS、およびSolaris。
Linuxは最も有名なモノリシックカーネルの1つです。
フリーでポータブルなソフトウェアとして、Linuxには、IBMコンピュータからモバイルデバイス、スマートフォン、iPodまで、何十ものプラットフォームで作業するという利点があります。
ソフトウェアとハードウェアについてもっと学びましょう。
小核またはマイクロカーネル
その名前が示すように、小核は非常に小さい核であり、したがって核空間で可能な限り少ないプロセスを実行します。
一部のプロセスはユーザー空間で実行されます。
小核型カーネルでは、エラーが発生した場合は、単に問題を引き起こしたサービスを再開してください。
これは(モノリシックカーネルのように)システム全体がノックアウトされるのを防ぎます。
小核の例 :AIX、BeOS、L4、Mach、Minix、MorphOS、QNX、RADIOS、VSTa、およびGNU Hurd。
ハイブリッド
ハイブリッドシステムは、モノリシック核や小核と比較した場合、中立地帯で機能するシステムと見なされます。
ハイブリッドは、マイクロカーネルの安定性と安全性をモノリシックの性能と組み合わせたものです。
ハイブリッドカーネルは小核に似ていますが、実行される操作が高速になるように、コア空間にコード(「必須ではない」)を持っています。
ハイブリッドの例 :AmigaOS、Android、Chrome、Macintosh、webOS、Windows、OSX、Xinu。
AndroidカーネルはLinuxから構築されています。 ただし、AndroidはLinuxのみに基づいていると考えており、Linux自体には基づいていないと考えているため、すべてがAndroidをLinuxとして分類しているわけではありません。
Androidの詳細を学んでください。