差分

移動先: 案内検索

UNIXとは何か

2,429 バイト除去, 2018年10月31日 (水) 09:43
/* UNIXの定義 */
== UNIXとは何か ===== UNIXの定義 ===
UNIXは1969年にベル研究所のKen Thompson、Dennis Ritchieらが作ったオペレーティングシステムの名前です。最初はわかりました。では、「現在のUNIXの定義はRitchieらが作ったオペレーティングシステムの名前です。最初はわかりました。では、「現在のUNIXの定義は?」と聞かれた場合、どのような答えが帰ってくるでしょうか。
* 1969年に作られたUNIXを源流にもつもの
これはなかなかわかりやすい定義です。ほとんどすべてのUNIXの仲間と呼ばれるオペレーティングシステムに当てはまります。しかしながら、Linuxはオリこれはなかなかわかりやすい定義です。ほとんどすべてのUNIXの仲間と呼ばれるオペレーティングシステムに当てはまります。しかしながら、GNU/LinuxはオリジナルのUNIXを源流に持ちません。GNU/Linuxのカーネルは最初Linus Torvaldsがゼロから書き始めたものです。しかしだからといってUNIXらしいGNU/LinuxをUNIXの仲間から排除はできません。ジナルのUNIXを源流に持ちません。Linuxは最初Linus Torvaldsがゼロから書き始めたものです。しかしだからといってUnixらしいLinuxは、やはりUNIXの仲間なのです。
* (現在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標準仕様を満たし、それをThe Open Groupが認めたもの<ref>[http://www.opengroup.org/membership/forums/platform/unix The UNIX® Standard]</ref>
 
 
UNIX標準仕様とは、The Open Groupが定めるThe Single UNIX Specificationのことです<ref>2018年現在は ''SINGLE UNIX® SPECIFICATION, VERSION 4, 2018 EDITION'' となっています。何年かに一度改定されるので最新の規格は Open Group のサイトで確認してください。</ref>。これを取ると商標としてのUNIX(R)を利用できるようになることができます。これをUNIXの定義とすると "OS X version 10.11 El Capitan" や "Solaris 10 Operating System" や "AIX 6 Operating System V6.1.2 with SP1"などはUNIXですが、FreeBSDやGNU/Linuxは、UNIXでなくなってしまいます。
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であるといえば、技術的な意味において間違いはありません。しかし、何か足りません。9945は内容的に同じものですが、これらの仕様に準拠したものがUNIXであるといえば、技術的な意味において間違いはありません。しかし、何か足りないような…
* UNIXの思想や文化を継承するもの
UNIXの思想や文化を継承するものといいますが、その思想や文化とは何を指しているのでしょうか。ここはDon UNIXの思想や文化を継承するものといいますが、その思想や文化とは何を指しているのでしょうか。ここはDon Libes と Sandy ResslerのLife with Unix本Unixを参考にしてまとめてみます。<ref> Life with UNIX―UNIXを愛するすべての人に, ドン ライブ (著), サンディ レスラ (著), 福崎 俊博 (翻訳), 坂本 文 (翻訳), ISBN 4756107834 </ref>本を参考にしてまとめてみます。
=== UNIXの思想 ===
* 小さいことは美しい --- 問題は小さく分割し、個々に解決する小さいコマンドを使い、それを組み合わせて全体の問題を解決する。
* 20%の労力で80%を解決する --- すべての問題を万能に解決するようなシステムを目指さない。労力少なく、おおよその問題を解決する。小さいことは美しい ~ 問題は小さく分割し、個々に解決する小さいコマンドを使い、それを組み合わせて全体の問題を解決する。
* 単純に保て --- 単純であるべきものは単純にしておく。
こんな風に考えるのがUNIX流だといえるでしょう。実はこれらは別にUNIX独自の思想ではなく、既に社会にある考え方です。「小さいことは美しい」は経済学者 E. F. Schumacher の著書"Small Is Beautiful : Economics as ifPeople Mattered"の考え方です。「20* 20% / 80の労力で80%」はイタリアの経済学者 V. Paretoのパレートの法則です。「単純に保て」は"Keep It Simple(Stupid)" は、エンジニアの口伝伝承であるマーフィーの法則の1つとして知られています。を解決する ~ すべての問題を万能に解決するようなシステムを目指さない。労力少なく、おおよその問題を解決する。
ただ、これが現在のLinuxにも当てはまるかは、筆者は少々疑問です。今の
Linuxのカーネル一つ取っても、たくさんの参加者によって組み込まれた、非
常に多肢に渡る色々な機能を持っています。何でも投げ込むキッチンシンク
(流し台)になっています。小さいことは美しいとか、少なくとも単純である
べきものは、単純であるという部分はかなり怪しくなってきています。
このように、どこまでがオペレーティングシステムなのかという問題と同じく、UNIXの定義もどこまでがUNIXなのかの境界線がわかりづらい問題なのです。* 単純に保て ~ 単純であるべきものは単純にしておく。
こんな風に考えるのがUNIX流だといえるでしょう。実はこれらは別にUNIX独自の思想ではなく、既に社会にある考え方です。「小さいことは美しい」は経済学者 E. F. Schumacher の著書"Small Is Beautiful :'''調べてみよう'''Economics as if People Mattered"<ref> Small Is Beautiful:みんなそれぞれのUNIXの定義があるはずです。色々なUNIXの定義を見つけてみよう。また自分なりのUNIXの定義をしたならば、どんな定義になるだろうか。Economics as if People Mattered , 1989/6/1, E. F. Schumacher (著), ISBN 0060916303 </ref><ref> スモール イズ ビューティフル (講談社学術文庫) 文庫 – 1986/4/7, F・アーンスト・シューマッハー (著), 小島 慶三 (翻訳), 酒井 懋 (翻訳) ISBN 4061587307</ref>の考え方です。「20% / 80%」はイタリアの経済学者 V. Paretoのパレートの法則です。「単純に保て」は"Keep It Simple(Stupid)" は、エンジニアの口伝伝承であるマーフィーの法則の1つとして知られています。
=== なぜUNIXオペレーティングシステムの授業にLinuxを取り上げるのか ===
UNIXとは何かという問いに一言で答えることが出来る人はたぶん誰にもいないでしょう。それはUNIXは長い歴史を人々とともに積み重ねてきたからです。どのような歴史があるかは[[http://h2np.net/docsただ、これが現在のGNU/os-history.html OS誕生からLinuxまでの歴史]]Linuxのシステム、あるいはLinuxカーネルにも当てはまるかは、筆者は少々疑問です。今のLinuxカーネル一つ取っても、たくさんの参加者によって組み込まれた、非常に多肢に渡る色々な機能を持っています。何でも投げ込むキッチンシンク(流し台)になっています。を参照してください。コードからみた場合、「小さいことは美しい」とか「単純であるべきものは、単純であれ」という部分はかなり怪しくなってきています。
UNIX的なものとは何かという議論は一章の[[UNIXの定義]]で行っていますので、
そちらを参照して下さい。
さて、なぜLinuxが授業向きのオペレーティングシステムであるかです。理由実際 UNIX をベル研で開発していた人たちは UNIX System V の時には UNIX 捨て、 UNIX のオリジナルのアイデアを徹底させ、さらに新しく展開した[https://9p.io/plan9/ Plan 9]というオペレーティングシステムを開発していました。は2つです。<ref> Plan 9 from Bell Labs Fourth Edition https://9p.io/plan9/ </ref>むしろこちらの方がUNIXのオリジナルコンセプトに忠実だと筆者は考えるほどです。であれば、現在UNIXと呼ばれているもの自体が既にUNIX的ではなくなってしまっているという不思議な結論に達してしまいます。
* Linux は IEEE Std 1003.1 (POSIX 1003.1)を目指して作られた。
* Linux はカーネルとミドルウェアを切り離して考えている。このように、どこまでがオペレーティングシステムなのかという問題と同じく、 UNIX の定義もどこまでが UNIX なのかの境界線がはっきりとしない問題だと言えるでしょう。
* 初学者向けLinuxの情報は溢れている。
==== スタンダードということ ====:'''調べてみよう''':色々なUNIXの定義を見つけてみよう。また自分なりのUNIXの定義をしたならば、どんな定義になるだろうか。
UNIXがこれだけ広まった原動力はあきらかに4.1BSDから4.4BSDまでを作りあげたUniversity of California BerkeleyのComputer System Research Groupの活躍のおかげです。高速なファイルシステム、仮想記憶、TCP/IPなど最新の技術が取り込まれており、それが大学や研究所を中心に広まっていったからです。こう聞くとBSDの方がよりUNIXの中心にいるような気がします。=== ここまでの歴史 ===
しかしスタンダードなUNIXとは何かということで考えるとPOSIX仕様を忠実にインプリメンテーションしようとしたLinuxと、研究プラットフォームとしてPOSIXとの互換性を重要視していなかったBSDとは明らかにスタンスに差があります。これはスタンダードなUNIXを教えるならばLinuxに軍配が上がります。UNIXの歴史に関しては Éric Lévénez氏が管理する'''UNIX History'''というサイトを参照してください。UNIXの過去から現在までにいたるまでのタイムラインチャートなど色々と参考になる資料があります。
==== カーネルが独立している ====* http://www.levenez.com/unix/
カーネルが単一のコードで、複数のミドルウェアを持ちディストリビューションという形でいろいろなタイプのものが出ているLinuxの方がより教科書的です。教科書的にはカーネルとミドルウェア、そしてアプリケーションは独立しており、これらを自由に組み合わせることがIBM System/360の時代からのオペレーティングシステムの役目です。== 脚注 ==
しかし現実には、このようなシステムは滅多に見当たりません。なぜならば各々
の上から下までのコンポーネントが緊密に相互依存しているからです。また、
複数の組み合わせを試し安定させるとなると、その構築にも膨大な時間とコス
トがかかります。
これをLinuxは多数のデベロッパーを持つことにより乗り越えています。乗り越える以上に過激ともいえる状況を作りだしています。たとえばext2、ext3、XFS、JFS、ReiserFS を標準ファイルシステムとして選択できるようなオペレーティングシステムはある意味、原理主義的でもあり、あるいは過剰な感すらあります。しかし大切なのは、各コンポーネントが切り離されているということです。机上の空論ではなく、実際の動いているコードであることが説得力を持つのです。むかしは教科書上にしかなかった方法論が市場的にも受け入れられています。「カーネルもミドルウェアもアプリケーションも独立しています。しかしそれは理屈であり、現実にはそのようなシステムは使われていません。」と弁解しつつ説明する必要はないのです。<references/>
==== 初学者向けLinuxの情報 ====----
Linuxは利用の裾野が広いので初学者向けの情報が溢れています。HOW TO 本のたぐいはたくさん出ているので、いくらでも自分で学習できるので、授業は概念的な理解に集中できます。この授業はオペレーティングシステムとしてUNIX とは何であるかを考えていくことが中心です。HOW TO USE UNIXでもHOW TOUSE LINUXでもありません。それはわざわざ授業に出なくてもできることですから。 以上のような理由からUNIXオペレーティングシステムの授業にLinuxを取り上げています。 == 参考資料 ==  <references/>[[目次]]へ