TOP書籍連動> カーネルアーキテクチャ
徹底比較!! Solaris/Linux/BSD
徹底比較!! Solaris/Linux/BSD

第1回:歴史とアーキテクチャを比較してみる
著者:シンクイット  紙屋 伸成   2005/6/2
前のページ  1  2  3
カーネルアーキテクチャ

   UNIX互換OSでは「カーネル」と呼ばれるOSのコアとなる部分があります(図1)。カーネルはOSの中のもっとも基本的な機能を扱います。基本的な機能とは、たとえばディスクのI/Oやハードウェア、プロセスの管理、割り込みの処理などを表わします。このカーネルに、それぞれ必要な機能を追加していき、OSとなります。
カネール
図1:カネール


   「Linux」という言葉はしばしばLinuxのカーネルのことを指して表現されることがあります。Linuxカーネルにいくつかのツールや機能を実装し、さらにアプリケーションなども含めてディストリビューションが構成されるということです。

   カーネルのアーキテクチャとしてはマイクロカーネルとモノリシックカーネルがあります(図2)。マイクロカーネルは、必要最低限の機能のみカーネルに持たせ、その他の機能をモジュールとして読み込んで動作します。

マイクロカーネルとモノリシックカーネル
図2:マイクロカーネルとモノリシックカーネル


   マイクロカーネルのメリットとしては、カーネル内で持つ機能を外部に出すことによって基本的な動作のプロセスを並列処理でき、処理を効率化できることが挙げられます。デメリットとしては、その分プロセス間の通信が多くなるため、そのオーバーヘッドでパフォーマンスが落ちる点があります。マイクロカーネルを採用したOSには、Windows(NTカーネル)などがあります。

   モノリシックカーネルではある程度の機能までカーネルで持ちます。マイクロカーネルに比べプロセス間通信は少なくなりますが、処理を効率化できません。

   そう考えるとどっちもどっち、という感じですが、Solaris、Linux、BSDではどれもモノリシックカーネルを採用しています。といってもOSのすべての機能をカーネルで持つのではなく、ある程度の機能はモジュールを読み込んで実装する方法が主体です。

   大雑把にいってしまうと、カーネルに組み込んで動作する方が処理が速いため、必ず必要となる機能(たとえばドライバなど)はカーネルに組み込み、それ以外の機能はモジュールで実装する形が一般的でしょう。多くの機能をカーネルに持たせてしまうと、カーネルのメモリ上のサイズが大きくなってしまいます。したがって、どこまでの機能をカーネルに組み込むのがよいかは、その状況によって異なるとしかいえません。

   カーネルに機能を組み込んだり、逆に機能を削除したりする作業を「カーネルの再構築」といいます。不要な機能を削除してカーネルサイズを減らし、必要な(かつ重要な)機能のみをカーネルに持たせることにより、その環境に合ったカーネルを構築することができます。

   Solarisでは手動でのカーネルの再構築ができません。スタティック・コアと呼ばれる最小構成のカーネルがあり、ブートする際に必要なモジュールを読み込みカーネルを動的に再構築します。

   Linuxでは、GUI環境が使える場合は「make xconfig」または「make gconfig」(GNOMEの場合)、「make kconfig」(KDEの場合)でカーネルの再構築の設定ができます。サーバー用途などでGUI環境が利用できない場合は「make menuconfig」で行なえます。これらのコマンドで機能を追加、削除、あるいはモジュールとして読み込むかどうかを選択し、設定を終了します。設定が終了したら、下記手順でカーネルを再構築します。

# make dep
# make clean
# make bzImage
# make modules
# make modules_install
# make install

   もちろん、カーネルの再構築後にはブートローダの設定などが必要となります。事前の準備などもありますので、実際に行なう場合は書籍やWebサイトで情報を調べてから試してください。

   BSD(FreeBSD)では、カーネルコンフィグファイルをエディタで編集し、それを元にカーネルをコンパイルします。コマンドは「make build-kernel」でカーネルをコンパイルし、「make install-kernel」で新しいカーネルをインストールします。


アーキテクチャからみた選択ポイント

   まず、CPUにSPARCアーキテクチャを利用したい場合はだんぜんSolarisです。32bit、64bitのx86アーキテクチャを利用するのであれば、どれを選ぶのかは迷ってしまいます。もちろんベンチマークを行なってパフォーマンスを測定して選ぶのもよいでしょう。幸いにもどのOSもオープンソースであり評価版もありますから、求めている環境に近いものを構築し、パフォーマンスを比較することができます(時間があれば、ですが)。それから「やっぱPC-98だぜ」という人はFreeBSDが一番目の選択肢となるでしょう。

   カーネルは、筆者としてはあまり選択のポイントにはならないと考えています。なぜなら、それぞれに得手不得手はありますが、そう大きな差とはならないと考えているからです。たとえ、1対1のパフォーマンス比較でどちらかに軍配が上がったとしても、それ以外の点でのメリット・デメリットの方が重要になると思います。つまり、管理・運用の点や、スケーラビリティなどの点、そして管理する技術者のスキルなどの点です。したがって、コアとなるカーネルの違いによってOSを選択するというシーンはあまりないでしょう。強いていうなら、「俺はどうしてもカーネルを再構築したいんじゃ!」という人であれば、LinuxやBSDが楽しいのではないかと思います。

前のページ  1  2  3

書籍紹介
Solaris 10 完全攻略ガイド
Solaris 10 完全攻略ガイド 本格UNIX OSを無償でパソコンにインストール!
世界中の大規模商用システムで使われている本格UNIX OS「Solaris」が、無償でパソコンにインストールして使える! デスクトップ利用からサーバー設定、Solaris 9からの移行まで解説。ソフトがすべて入ったインストールDVD-ROM&CD-ROM付き。Linuxの次はSolarisに挑戦しよう!
発売日:2005/06/09発売
販売価格:\2,363(本体 \2,250+税)

著者プロフィール
株式会社シンクイット  紙屋 伸成
大学のときに研究室でUNIXシステムと出会い、以後そこから抜け出せずにいる。IT系出版社、通信会社と渡り歩き、シンクイットに所属。企業システムにおけるオープンソースの位置づけを日々考えている。


INDEX
第1回:歴史とアーキテクチャを比較してみる
  3つのOSを比較
  Linuxの歴史
カーネルアーキテクチャ