[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:14132] Re: column of kernel size



From: KOJIMA Mitsuhiro <kojima@linet.gr.jp>
Subject: [plamo:13798] column of kernel size
Date: Wed, 01 May 2002 16:13:49 +0900 (JST)

> ちと話のタネに会社のメルマガ用に書いたコラムを無断転載してみます :-)
> 
> # 多分、こっちの方が読者が多いであらうから(笑)
> 

part 2 です。Linux のカーネルはソースコードのサイズこそすさまじく大き
くなったけど、某 M$ 社の製品のように意味もなく大きくなっているわけでは
ない、ってフォロー。

多分、これでしばらくコラムのネタは回ってこないと思うけど、メルマガの興
味を持った方はhttp://www.nlcomputer.com/mailmag/mailmag.htm あたりを御
覧ください :-)

-------------------------------------------------------------------
●カーネルサイズの話 その 2

前回はカーネルのソーズサイズが 0.01 から 2.5.8 までの間で 350 倍近く
増加していることを指摘しました。この数字を見ると、いわゆる "creeping 
featurism" として、MS 社の Windows XX/Office XX のように、どんどん高
機能になったのはいいけれど、それによって処理が遅くなり、必要とされる
CPU スペックやメモリも増加していく、という印象を受けるかも知れません。
しかし Linux では最新の安定版である 2.4.18 カーネルも 386 CPU 上で問題
なく動作しますし、必要な機能のみを組み込んだカーネルイメージのサイズで
見るとせいぜい数倍程度の増加に留まっています。Linux では、機能の増加と
カーネルサイズの間のバランスをどのように取っているのでしょう?

Linux 開発の初期段階における Linus さんと Andrew Tannenbaum 教授の
Flame War に見られるように、初期の Linux は Monolithic kernel(一枚岩カー
ネル)の設計になっていました。Monolithic kernel は 70 年代のカーネルデ
ザインであり、80 年代以降の主流である Micro kernel に比べて、設計は簡
単ですが移植性や拡張性に関しては問題がある、と認識されていました。そこ
で Linux の開発者たちは最初の公式リリースである 1.0 をリリースした後に
この問題に取り組み、Monolithic Kernel と Micro Kernel 両者の利点を組み
合わせたモジュール化カーネルのデザインを採用しました。

モジュール化カーネルでは、デバイスドライバやファイルシステムなどの機能
をそれぞれ独立したモジュールとして用意しておき、必要に応じて動作中のカー
ネルに組み込んだり取り外したりすることができます。Linux では 2 度目の
公式リリースである 1.2.0 カーネルからモジュール化カーネルのデザインを
採用して各部の独立性を高めた結果、カーネルの移植性が高まるとともに、さ
まざまなデバイスドライバを積極的に採用することが可能になりました。

その結果 http://plamo.linet.gr.jp/~kojima/GITI/mgp00017.html に見られ
るように、drivers や arch、fs の部分が 1.2.0 以降爆発的に増加して、前
回に紹介したようなカーネルのソースサイズの増加をもたらしているのです。
逆に言うと、メモリ管理やプロセス管理といったカーネルの本当のコアの部分は、
カーネルの開発者たちによって慎重に吟味され本当に必要な機能しか追加されて
いないことが分ります。カーネル開発者たちのこのような努力によって Linux 
は creeping featurism の罠から逃れると共に拡張性と移植性を手に入れたの
です。

References
[plamo:13798] column of kernel size, KOJIMA Mitsuhiro

[検索ページ] [メール一覧]
Plamo ML 公開システム