[memo]PC UNIX比較メモ

タイトルの通り、主にPC UNIXの機能についての比較をメモしていく予定です。その他に、SolarisやWindows NTの情報も混じっています。これは私(このページの作者)自身のための備忘録のようなものです。他のページに分散していたのを、引っ張ってきてまとめました。内容はまとまっておらず、雑然としています。

->FreeBSDを用いたX端末
->サーバに使うOS、デスクトップ環境のOS


* 機能面の比較

* FreeBSDとNetBSD、OS核の比較

1999年3月4日の時点で、主にウェブページで調べた範囲の結論です。間違いや勘違いに気づいた方はご指摘下さい。

この文書の執筆時点でのリリースは、それぞれFreeBSD 3.1-RELEASE、 NetBSD-1.3.3です。以下の情報は-currentの情報も調べて書いています。 OpenBSDはチェックしていません。できればLinuxの情報も入れたいので、どなたかLinuxに詳しい方、フォローしてくださいませんか。私自身も調べてはみますが、BSDを使っていると○×BSDの話はよく耳にするのに、Linuxの方面の話題に触れることは少ないようで、情報が入ってきません。

移植性
NetBSDは多くのプラットフォームに移植されており、実績がある。 FreeBSDはほとんどi386に特化していた(が、変わりつつある)。
メモリ管理など
FreeBSDは、仮想メモリとファイルシステムバッファのキャッシュを統 合していることを売りの一つにしている。NetBSDは、 UVM という高性能仮想記憶システムに移行している途中だそうで、仮想記憶 とファイルシステムバッファのキャッシュは統合されていない。 UVMの兄弟分としてUBCというものがあるそうだが、まだまったくの開発 途上らしいし、 これがNetBSDに採り入れられるかどうかは分からない。
現時点ではFreeBSDの方が優れている、といっていいのかな?
バス回りの扱い
NetBSDの方が優れているらしい。FreeBSDにNetBSDの新しいコンフィグ レーションを取り込もうというプロジェクトがある。
なお、バス回りの扱いに興味のある方は、下のUDIの節も参考になるで しょう。
ネットワーク
分からない。FreeBSDのネットワーク性能が非常に良いことは、よ く知られている。NetBSDの方はどうなのかな? …たぶん大差ないんじゃ ないかなぁ。どっちもBSD TCP/IPスタックなんだろうから。(上で述べ たUVMが有効に機能するなら、NetBSDの方が性能が良いかもしれない。)
SCSI
FreeBSD 3.x以降からCAMベースに移行した。これはFreeBSDの方が一歩 先を行ったようだ。NetBSDでは、FreeBSD(-2.x?)のSCSI層を移植する話 があったようだが、たぶんそれならCAMを移植するんだろうな。現時点 ではCAMベースではありません。…というか、FreeBSD以外でCAMベース のSCSI層を持つOSを知りません。たぶんあるんだろうけど。
なお、このへんのソフトウェア構造に興味のある方には、下のUDIの節 も参考になるでしょう。
bounce buffer
NetBSDにも採り入れられています。機種非依存で移植性の高い方法を採 った、とNetBSDのドキュメントに書いてありました。額面通りに受け取 ると、NetBSDの方が優れているのかな? と想像しています。はっきりし たことは、こりゃソースを読まないと分からんな、たぶん。
SMP (対称マルチプロセッシング)
FreeBSD 3.0以降ではSMPが標準でサポートされている。NetBSDではまだ サポートされていないらしい。少なくとも1.3ではサポートされていない。
(番外) LKM/KLD
どっちが優れてるのかなぁ。FreeBSDはLKM→KLDに乗り換えたけど、そ れはKLDの方が優れているからなの? そもそもKLDって一般的なもの? 暇なときに調べてみよう。
現時点で分かっていること: LKM は動的にリソース指定をすることがで きないため、hard conding かコンパイル時に指定するしか方法がない そうだ。
(番外) PAM
FreeBSD 3.1-RELEASEで採り入れられました。NetBSDでどうかは、調べ きれませんでした。 PAMはカーネルの機能ではなく、userlandの方で実装します。 最近よくその名前を聞くPAMですが、調べてみると非常に使いやすく、 柔軟な認証システムだと分かりました。

* デバイスドライバ関連の、最近気になるキーワード

現在お勉強中の、気になる話題を挙げておきます。

UDI

-> Uniform Driver Interface (UDI)

デバイスドライバのインターフェイスの規格。UDI準拠のデバイスドライバのソースコードを書けば、それをまったく変更せずに、異なる機種、異なるOSで利用できるようになる、というもの。ただしもちろん、そのOSでUDIのサポートが必要になる。具体的には「UDI環境」なるものでデバイスドライバを包み込む必要がある。デバイスドライバはUDI環境が提供するインターフェイスのみを利用して、デバイスを操作する。だからソースコードが完全にポータブルになるというわけだ。

OSベンダーでは、SCO, Compaq, HP, IBM, Sunなどがこの規格の策定に関わっている。Linuxへの移植の計画もあるらしい。私の知る範囲では、BSD系でUDI をサポートするような動きは無いようだ。

SCSI CAMは、SCSIに特化しているが、UDIと近い目的で開発されたように見える。また、UDIは「既存の非UDIドライバとの共存」をその特性の一つに挙げている。しかしCAMとUDIの規格書ドラフトを斜め読みした印象では、CAMとUDIはお互いに競合するように思える。これらをうまく共存させる方法はあるのか、もしあるとすれば、どのような関係になるのか、興味深いところだ。UDIが謳っているところの「既存の非UDIドライバとの共存」とやらの実力はどんなものかな。

ちなみにIntelプロセッサを使ったUNIXサーバのための統一ドライバ仕様「Unix Driver Interface」なるものもある、という記事を見ることがあるが、これは間違いのようだ。そもそもUDIはプラットフォームおよびOSに対して中立であり、それが売りなのだから。IntelがUDIを推進しているのは、どうも本当らしいが、Project UDIのスポンサーにはIntelの名前はない。

UDIに関する、現時点での理解

UDIは規模の大きな規格なので、これを完全に実装するのは難しいだろうと思う。しかし完全な実装でなくとも、UDIのたとえばCore ServiceとCore Metalanguageの部分だけでも実装できれば、これをドキュメントがよく整備され、機能が統一されたサービスルーチンとして利用することができそうだ。 UDIを実装する効用として、まずドライバの移植性が向上する。また、ドライバを新たに書き起こす場合にも、サービスルーチンのドキュメントが整理されているので都合が良い。

これに加えて、UDIを実装するとデバイスドライバの最底辺の部分(UDI用語ではBasic Driver)での差が無くなるので、OSごとのデバイスドライバの実装の差は、UDI環境の実装の違いに帰着する。したがってOS同士の比較や切磋琢磨、そしてより良い実装への乗り換えがやりやすくなる。

* POSIX適合

FreeBSD (97年4月の時点)

何らかの適合検定を受けているかどうかは不明。

Linux

自分が使っていないので真剣に調べていないが、Linux-1.2.13はFIPS 151-2(POSIX.1(のスーパーセット?)の検定)に合格しているそうだ。

POSIX.1(C API)とPOSIX.2(Shells and Utilities)にだいたい適合しているだけで、少なくとも私にとっては、実質的には問題無い。会社で導入するOSとしては、何らかのPOSIX準拠証明が必要な場合もあるらしいけれど。

POSIXについて調べる過程で分かったのだが、AdaやFORTRANのためのPOSIX規格もあるんだね。それぞれIEEE Std 1003.5と1003.9。はじめて知った。さらに IEEE Std 1387.?というシリーズもあって、こちらはAdministrationに関する規格らしい。

* 性能

この節はまだ作りはじめたところで、情報不足です。いくつかのリンクを別ページにまとめてあります。

-> OSどうしの比較
(「水先案内」のページ内)


* ソースコードの行数

同じ機能を提供してくれるなら、ソースコードの行数は「少ない方が安心」です。なぜならソースコードが短い方が、内容が吟味されており、保守しやすいことが期待されるからです。これは非常に重要なことです。ソフトウェアを開発・保守したことがある方なら、分かっていただけると思います。

* Solaris

* Windows 2000 (Windows NT 5.0)

MS Windows NT 5.0のコードはおよそ4千万行。その半分が新規のコード。コードの推移は、下の表を参照せよ。この表のデータは、月刊アスキー DOS/V Issue 99年2月号「もっと知りたいMicrosoft」より。なお、Windows NT 5.0は Windows 2000 Professionalという名称で出荷されることになったそうです。

Windows NT/2000のバージョン別ソースコードライン数 (単位: 100万行)
バージョン100万行
Windows NT 3.16
Windows NT 3.58
Windows NT 3.1110
Windows NT 4.016
Windows NT 5.0(β1)27
Windows NT 5.0(β2)35

これを見ると、率直に言って「Windows 2000はきっとバグだらけだろうな」と予想されます。どうしてここまで増えるんだろう、そんなに追加する機能があるのかな? でも、たくさんのデバイスをサポートしようと努力していることは、評価したいと思います。…そのせいだけでコードがこんなに増えるわけはないけどね。

* FreeBSD 2.2-stable, -current

FreeBSDのソースコードライン数(1999年2月10日現在)
リリース部分ファイル数ソースの行 数
2.2-stable全体 (src-all)15,5415,065,872
2.2-stableカーネル (src-sys)1,402659,463
current全体 (src-all)19,3376,452,897
currentカーネル (src-sys)2,4471,084,049

src-allの範囲は、contribなども含むが、portsは含まない。find | xargs wc して結果をawkで計算し直した。

FreeBSDは、2.2→3.0の過程でシステムに大幅な改定が行われました。3.x系列には、現在は2.2との互換性を保つためのコード(LKM, a.outサポートなど)が入っているそうです。このためカーネルは太り気味です。将来のある時点で、互換性を切り捨て、すっきりすることが予定されていると聞いたような気がするのですが、調べきれませんでした。詳細不明。

なお、3.0はすでにcurrentとstableの枝に別れていますが、3.x-stableは現時点では2.2-stableほどは安定ではないと判断し、追いかけていません。また、リリースの番号付の方法論がちょっと変わりました。たとえば3.1の次のリリースは、セキュリティホールを塞ぐなどの緊急マイナーバージョンアップなら 3.1.1、そうでなければ3.2というリリース番号になります。そしてcurrentの枝は4.0-currentということになりました。(1999年2月16日現在)

補遺: 1999年2月16日、3.1-RELEASEが出ました。これはstable系列からのリリースで、ですから現在は引き続き3.1-stableとして保守されています。また、 2.2-stable系列の保守は終了しました。


* 目先のコスト、99年1月現在

Windows NT Serverは、少なくとも目先のコスト(カタログ上のコスト)はUNIX よりも安い、と主張する人が多い。UNIXが好きな人はLinuxやFreeBSDなどのフリーUNIXを例に挙げて反論するのが常です。でも、商用のUNIXシステムは高いのかな? Sunのワークステーションと有名どころのPCサーバを、定価で較べます。PentiumII 300MHzのPCで、メモリを64MBに統一します。ディスク容量はどちらも4.3GBです。

ほぼ同価格ですね。SunのワークステーションはOSが標準添付されます。IBMのサーバはOSの値段を含まないようだし、Compaqの方もOSを含む値段なのどうか、はっきり書いていない。また、IBMのサーバは(偉い!!)SCSIホストアダプタが標準で付いています。

Sun Ultra5は、実はサーバモデルではなく、平べったいピザボックス型(を厚くした形)のデスクトップ機です。不公平な比較かもしれませんが、サーバとしての性能はUNIXのほうがWindows NTよりも優れているので、大目に見てください。おおざっぱに言って、UNIXワークステーションの導入は、はWindows NT Server機の導入と比較し、決して高いとは言えないようです。

はいはい納得できないんですね。じゃぁサーバモデルで比較しましょう。 PentiumII 350MHz程度、主記憶128MB、ディスク9GBぐらいで行きましょう

Compaqのえらく安いマシンは、期間限定モデルです。構成が異なるので単純には比較できませんが、期間限定モデルを除き、主記憶を128MBにすれば、すべてほぼ同じ価格になるようです。 (あくまで定価で、です。実売価格は分かりません。)

こういう比較もなかなかおもしろいですね。電卓を片手に、あっちこっちのハードウェアメーカーのページを散策するだけで、情報が手に入ります。みなさんも試してみてはいかが。


<- トップページ
工学院大学機械工学科流体研

リンクはご自由に。でもメールをくれると嬉しいな。

金野 祥久  konno@researchers.jp

Last modified: Wed Mar 29 11:07:17 JST 2000