「UNIXとは何か」の版間の差分

提供: UnixClassWiki
移動先: 案内検索
(UNIXの定義)
18行目: 18行目:
 
* (現在The Open Groupが保持している)商標の利用許可を過去に得ていたもの
 
* (現在The Open Groupが保持している)商標の利用許可を過去に得ていたもの
  
* The Open Groupの定めるUNIX 03仕様を満たし、それをThe Open Groupが認めたもの<ref>[[http://www.opengroup.org/certification/unix-home.html UNIX® System Certification]]</ref>
+
* The Open Groupの定めるUNIX 03仕様を満たし、それをThe Open Groupが認めたもの<ref>[http://www.opengroup.org/certification/unix-home.html UNIX® System Certification]</ref>
  
  
140行目: 140行目:
 
以上のような理由からUNIXオペレーティングシステムの授業にLinuxを取り上
 
以上のような理由からUNIXオペレーティングシステムの授業にLinuxを取り上
 
げています。
 
げています。
 
  
 
== 参考資料 ==
 
== 参考資料 ==

2007年9月22日 (土) 10:16時点における版

UNIXの定義

UNIXは1969年にベル研究所のKen Thompson、Dennis Ritchieらが作ったオペレー ティングシステムの名前です。最初はわかりました。では、「現在のUNIXの定 義は?」と聞かれた場合、どのような答えが帰ってくるでしょうか。


  • 1969年に作られたUNIXを源流にもつもの

これはなかなかわかりやすい定義です。ほとんどすべてのUNIXの仲間と呼ばれ るオペレーティングシステムに当てはまります。しかしながら、Linuxはオリ ジナルのUNIXを源流に持ちません。Linuxは最初Linus Torvaldsがゼロから書 き始めたものです。しかしだからといってUnixらしいLinuxは、やはりUNIXの 仲間なのです。

  • (現在The Open Groupが保持している)商標の利用許可を過去に得ていたもの
  • The Open Groupの定めるUNIX 03仕様を満たし、それをThe Open Groupが認めたもの[1]


UNIX 03とは、The Open Groupが定めるThe Single UNIX Specification規格の 2003 年度版です。これを取ると商標としてのUNIX(R)を利用できるようになる ことはあってもUNIXの定義とはいえません。なぜならばFreeBSDやLinuxは、 UNIXでなくなってしまいます。

  • IEEE Std 1003.1 (POSIX 1003.1) 準拠あるいはISO/IEC 9945 準拠のもの

IEEE Std 1003.1 とISO/IEC 9945は内容的に同じものですが、これらの仕様に 準拠したものがUNIXであるといえば、技術的な意味において間違いはありませ ん。しかし、何か足りません。


調べてみよう
IEEE Std 1003.1 とはどんな規格なのか調べてみよう。


  • UNIXの思想や文化を継承するもの

UNIXの思想や文化を継承するものといいますが、その思想や文化とは何を指し ているのでしょうか。ここはDon Libes と Sandy ResslerのLife with Unix本 を参考にしてまとめてみます。

UNIXの思想

  • 小さいことは美しい --- 問題は小さく分割し、個々に解決する小さいコマンドを使い、それを組み合わせて全体の問題を解決する。
  • 20%の労力で80%を解決する --- すべての問題を万能に解決するようなシステムを目指さない。労力少なく、おおよその問題を解決する。
  • 単純に保て --- 単純であるべきものは単純にしておく。

こんな風に考えるのがUNIX流だといえるでしょう。実はこれらは別にUNIX独自 の思想ではなく、既に社会にある考え方です。「小さいことは美しい」は経済 学者 E. F. Schumacher の著書"Small Is Beautiful : Economics as if People Mattered"の考え方です。「20% / 80%」はイタリアの経済学者 V. Paretoのパレートの法則です。「単純に保て」は"Keep It Simple (Stupid)" は、エンジニアの口伝伝承であるマーフィーの法則の1つとして知 られています。

ただ、これが現在のLinuxにも当てはまるかは、筆者は少々疑問です。今の Linuxのカーネル一つ取っても、たくさんの参加者によって組み込まれた、非 常に多肢に渡る色々な機能を持っています。何でも投げ込むキッチンシンク (流し台)になっています。小さいことは美しいとか、少なくとも単純である べきものは、単純であるという部分はかなり怪しくなってきています。

このように、どこまでがオペレーティングシステムなのかという問題と同じく、 UNIXの定義もどこまでがUNIXなのかの境界線がわかりづらい問題なのです。


調べてみよう
みんなそれぞれのUNIXの定義があるはずです。色々なUNIXの定義を見つけてみよう。また自分なりのUNIXの定義をしたならば、どんな定義になるだろうか。

なぜUNIXオペレーティングシステムの授業にLinuxを取り上げるのか

UNIXとは何かという問いに一言で答えることが出来る人はたぶん誰にもいない でしょう。それはUNIXは長い歴史を人々とともに積み重ねてきたからです。 どのような歴史があるかは [OS誕生からLinuxまでの歴史] を参照してください。

UNIX的なものとは何かという議論は一章のUNIXの定義で行っていますので、 そちらを参照して下さい。

さて、なぜLinuxが授業向きのオペレーティングシステムであるかです。理由 は2つです。

  • Linux は IEEE Std 1003.1 (POSIX 1003.1)を目指して作られた。
  • Linux はカーネルとミドルウェアを切り離して考えている。
  • 初学者向けLinuxの情報は溢れている。

スタンダードということ

UNIXがこれだけ広まった原動力はあきらかに4.1BSDから4.4BSDまでを作りあげ たUniversity of California BerkeleyのComputer System Research Groupの 活躍のおかげです。高速なファイルシステム、仮想記憶、TCP/IPなど最新の技 術が取り込まれており、それが大学や研究所を中心に広まっていったからです。 こう聞くとBSDの方がよりUNIXの中心にいるような気がします。

しかしスタンダードなUNIXとは何かということで考えるとPOSIX仕様を忠実に インプリメンテーションしようとしたLinuxと、研究プラットフォームとして POSIXとの互換性を重要視していなかったBSDとは明らかにスタンスに差があり ます。これはスタンダードなUNIXを教えるならばLinuxに軍配が上がります。

カーネルが独立している

カーネルが単一のコードで、複数のミドルウェアを持ちディストリビューショ ンという形でいろいろなタイプのものが出ているLinuxの方がより教科書的で す。教科書的にはカーネルとミドルウェア、そしてアプリケーションは独立し ており、これらを自由に組み合わせることがIBM System/360の時代からのオペ レーティングシステムの役目です。

しかし現実には、このようなシステムは滅多に見当たりません。なぜならば各々 の上から下までのコンポーネントが緊密に相互依存しているからです。また、 複数の組み合わせを試し安定させるとなると、その構築にも膨大な時間とコス トがかかります。

これをLinuxは多数のデベロッパーを持つことにより乗り越えています。乗り 越える以上に過激ともいえる状況を作りだしています。たとえばext2、ext3、 XFS、JFS、ReiserFS を標準ファイルシステムとして選択できるようなオペレー ティングシステムはある意味、原理主義的でもあり、あるいは過剰な感すらあ ります。しかし大切なのは、各コンポーネントが切り離されているということ です。机上の空論ではなく、実際の動いているコードであることが説得力を持 ちます。むかしは教科書上にしかなかった方法論が市場的にも受け入れられて いるのです。「カーネルもミドルウェアもアプリケーションも独立しています。 しかしそれは理屈であり、現実にはそのようなシステムは使われていません。」 と説明する必要はありません。

初学者向けLinuxの情報

Linuxは利用の裾野が広いので初学者向けの情報が溢れています。HOW TO 本の たぐいはたくさん出ているので、いくらでも自分で学習できるので、授業は概 念的な理解に集中できます。この授業はオペレーティングシステムとしてUNIX とは何であるかを考えていくことが中心です。HOW TO USE UNIXでもHOW TO USE LINUXでもありません。それはわざわざ授業に出なくてもできることです から。

以上のような理由からUNIXオペレーティングシステムの授業にLinuxを取り上 げています。

参考資料

  1. UNIX® System Certification