回答:
オペレーティングシステムの技術的な定義は、「アプリケーションを構築して相互に対話するための特定のライブラリセットとインフラストラクチャで構成されるプラットフォーム」です。その意味で、カーネルはオペレーティングシステムです。
エンドユーザー定義は通常、「デスクトップ、アプリケーションへのショートカット、Webブラウザー、およびメディアプレーヤーを提供するソフトウェアパッケージ」に関連するものです。カーネルがその定義と一致しません。
したがって、エンドユーザーにとってはLinuxディストリビューション(Ubuntuなど)がオペレーティングシステムであり、プログラマにとってはLinuxカーネル自体が、達成しようとしていることに応じて完全に有効なOSです。たとえば、組み込みシステムはほとんどが単なるカーネルであり、その上で実行される特殊なプロセスはごくわずかです。その場合、カーネル自体がOS自体になります。
そのOS上で実行されているアプリケーションの大部分が必要とするものに線を引くことができると思います。それらのほとんどがカーネルのみを必要とする場合、カーネルはOSです。それらのほとんどがX Window Systemの実行を必要とする場合、OSはX +カーネルになります。
カーネルが仲介するには、システムリソースにアクセスすることをオペレーティングシステムの一部です。CPU、メモリ、ディスクI / O、およびネットワークへのアクセスを制御することにより、複数のアプリケーションがハードウェアを効果的に共有できるようにします。
オペレーティングシステムは、カーネルプラス(すなわち、コンパイラ、テキストエディタ、ウィンドウマネージャ、など)何かを成し遂げるためにユーザを可能にするアプリケーションです。
そもそもこのことを「カーネル」という言葉にした元の比喩は忘れられているようです。比喩は、オペレーティングシステムがシードであることです。シードの「カーネル」はオペレーティングシステムのコアであり、アプリケーションプログラムにオペレーティングシステムサービスを提供します。これは、ユーザーが外部から見るシードの「シェル」に囲まれています。
一部の人々は、「カーネル」(実際には「シェル」)をそれよりも具体的にするために結び付けたいと考えています。しかし、実際には、オペレーティングシステム間で多くのバリエーションがあります。これらのバリエーションは「シェル」(Solaris sh
からNetwareのコンソールコマンドインタープリター、OS / 2のWorkplace ShellやWindows NTのエクスプローラーまでの範囲)を構成するものであるだけでなく、オペレーティングシステムによってもさまざまな違いがあります。 「カーネル」の一部(ディスクI / Oが含まれている場合と含まれていない場合があります)。
これらの用語は比喩であることを覚えておくことをお勧めします。
さて、カーネルとOSには違いがあります。上記のカーネルはOSの中心であり、OSのコア機能を管理しますが、有用なアプリケーションやユーティリティをカーネルに追加すると、完全なパッケージがOSになります。したがって、オペレーティングシステムはカーネルスペースとユーザースペースで構成されていると簡単に言えます。
したがって、Linuxはファイルシステムユーティリティ、ウィンドウシステム、グラフィカルデスクトップ、システム管理者コマンド、テキストエディタ、コンパイラなどのアプリケーションを含まないため、カーネルであると言えます。したがって、さまざまな企業がこれらの種類のアプリケーションをLinuxカーネルに追加していますそして、ubuntu、suse、centOS、redHatなどのオペレーティングシステムを提供します。
カーネルはオペレーティングシステムの一部ですが、オペレーティングシステム自体ではありません。カーネルが行うことのすべてを説明するのではなく、ウィキペディアのページ http://en.wikipedia.org/wiki/Kernel_%28computing%29を使用します。素晴らしい、完全な概要。
簡単な答え
カーネルはオペレーティングシステムの中核部分です。それ自体は必ずしもオペレーティングシステムではありません。
他のすべてはそれを中心に構築されています。
精巧な定義
コンピューティングでは、「カーネル」はほとんどのコンピュータオペレーティングシステムの中心的なコンポーネントです。これは、アプリケーションとハードウェアレベルで行われる実際のデータ処理の間の橋渡しです。カーネルの責任には、システムのリソース(ハードウェアコンポーネントとソフトウェアコンポーネント間の通信)の管理が含まれます。通常、カーネルはオペレーティングシステムの基本コンポーネントとして、アプリケーションソフトウェアがその機能を実行するために制御する必要があるリソース(特にプロセッサとI / Oデバイス)の最低レベルの抽象化レイヤーを提供できます。通常、これらの機能は、プロセス間通信メカニズムとシステムコールを介してアプリケーションプロセスで利用できます。
カーネルはオペレーティングシステムである場合と、オペレーティングシステムの一部である場合があります。Linuxでは、カーネルが最初にロードされて実行されます。次に、OSの他のビット(initなど)を起動して、システムを使いやすくします。
これは、特にマイクロカーネル環境に当てはまります。カーネルの機能は最小限です。ファイルシステムやTCP / IPなど、その他はすべてユーザープロセスとして実行されます。
ruby -e "puts Kernel.methods"
すると、多くのメソッドが定義されていることがわかります。