「なぜUNIXオペレーティングシステムの授業にGNU/Linuxを取り上げるのか」の版間の差分
28行目: | 28行目: | ||
しかしながらパソコン雑誌等では「販売するシステム・パッケージ=オペレーティング・システム」という表現をしており、また、世間一般 | しかしながらパソコン雑誌等では「販売するシステム・パッケージ=オペレーティング・システム」という表現をしており、また、世間一般 | ||
<ref> | <ref> | ||
[https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%9A%E3%83%AC%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0 | [https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%9A%E3%83%AC%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0 ウィキペディア日本語版の<オペレーティングシステム>]の項には次のような表現があります。 | ||
''「製品としてのOSには、デスクトップ環境やウィンドウシステムなど、あるいはデータベース管理システム (DBMS) などのミドルウェア、ファイル管理ソフトウェアやエディタや各種設定ツールなどのユーティリティ、基本的なアプリケーションソフトウェア(ウェブブラウザや時計などのアクセサリ)が、マーケティング上の理由などから一緒に含められていることもある。 ( | ''「製品としてのOSには、デスクトップ環境やウィンドウシステムなど、あるいはデータベース管理システム (DBMS) などのミドルウェア、ファイル管理ソフトウェアやエディタや各種設定ツールなどのユーティリティ、基本的なアプリケーションソフトウェア(ウェブブラウザや時計などのアクセサリ)が、マーケティング上の理由などから一緒に含められていることもある。 」(2018年7月4日閲覧) '' しかしながら、ここでの「製品としてのOS」とはGNU/Linuxでいう所のディストリビューションと同等で、これはオペレーティング・システムを意味していません。このウィキペディア日本語版に掲載されている解釈では「Windows 95に含まれていたゲームのマインスイーパーはOSの一部」ということになります。もちろんマインスイーパーはOSのコンポーネントではありません。 | ||
</ref> | </ref> | ||
ではそう思い込んでいます。現実にも自由にコンポーネントを組み合わせているシステムは滅多に見当たりません。各々の上から下までのコンポーネントが緊密に相互依存させている場合が多く、選択肢を狭めることによって独自性を強調しようとする方向性を持っています。 | ではそう思い込んでいます。現実にも自由にコンポーネントを組み合わせているシステムは滅多に見当たりません。各々の上から下までのコンポーネントが緊密に相互依存させている場合が多く、選択肢を狭めることによって独自性を強調しようとする方向性を持っています。 |
2018年7月4日 (水) 14:33時点における版
はじめに
UNIXとは何かという問いに一言で答えることが出来る人はたぶん誰もいないでしょう。それはUNIXは長い歴史を人々とともに積み重ねてきたからです。 どのような歴史があるかは OS誕生からLinuxまでの歴史 を参照してください。UNIX的なものとは何かという議論はUNIXとは何かで行っていますので、そちらを参照して下さい。さて、なぜGNU/Linuxが授業向きのオペレーティングシステムであるかです。理由は3つです。
- GNU/Linuxは IEEE Std 1003.1 (POSIX 1003.1)を目指して作られた。
- GNU/Linuxはディストリビューションという形でカーネルとミドルウェアを切り離して考えている。
- 初学者向けGNU/Linuxの情報は書籍としてもネット上の情報としても大量にあり入手しやすい。
スタンダードということ
UNIXがこれだけ広まった原動力はあきらかに4.1BSDから4.4BSDまでを作りあげたUniversity of California BerkeleyのComputer System Research Groupの活躍のおかげです。高速なファイルシステム、仮想記憶、TCP/IPなど最新の技術が取り込まれており、それが大学や研究所を中心に広まっていったからです。こう聞くとBSDの方がよりUNIXの中心にいるような気がします。
しかしスタンダードなUNIXとは何かということで考えるとPOSIX仕様を忠実にインプリメンテーションしようとしたGNU/Linuxと、研究プラットフォームとしてPOSIXとの互換性を重要視していなかったBSDとは明らかにスタンスに差があります。これはスタンダードなUNIXを教えるならばGNU/Linuxに軍配が上がります。
カーネルが独立している
カーネルが単一のコードで、複数のミドルウェアを持ちディストリビューションという形でいろいろなタイプのものが出ているGNU/Linuxの方がより教科書的です。 教科書的にはカーネルとミドルウェア、そしてアプリケーションは独立しており、これらを自由に組み合わせるベースとなるのがIBM System/360の時代からのオペレーティングシステムの役目です。
しかしながらパソコン雑誌等では「販売するシステム・パッケージ=オペレーティング・システム」という表現をしており、また、世間一般
[1]
ではそう思い込んでいます。現実にも自由にコンポーネントを組み合わせているシステムは滅多に見当たりません。各々の上から下までのコンポーネントが緊密に相互依存させている場合が多く、選択肢を狭めることによって独自性を強調しようとする方向性を持っています。
他方、GNU/Linuxは多様性を持つという方向性で進んでいます。たとえばext2、ext3、ext4、XFS、JFSほか、を標準ファイルシステムとして選択できるようなオペレーティングシステムはある意味、原理主義的でもあり、あるいは過剰な感すらあります。
しかし、教科書的にオペレーティングシステムを説明する上で、このような各コンポーネントが切り離されているというのは重要なポイントです。「理屈の上では、カーネルもミドルウェアもアプリケーションも独立しており入れ替えが可能ですが、実際のシステムはそうではなくワンパッケージになっているのが現状です。」と弁明を入れながら説明する必要ありません。
例えばGNU/Linuxのディストリビューションの1つであるubuntuの説明「実際にGNU/Linuxを使ってみよう#GNU/Linuxディストリビューション 」で示したようにカーネル、ミドルウェア、アプリケーションの構成の違いで、デスクトップ向け、サーバ向け、教育向け、メディアクリエータ向けなど様々な特性を持ったディストリビューションを示すことが可能になっています。GNU/Linuxの主要なディストリビューションDebianではDebian GNU/HurdはカーネルはGNU/Hurd、Debian GNU/kFreeBSDはカーネルがFreeBSDであるディストリビューションのバリエーションを用意しています。
このようにGNU/Linuxを取り巻く環境では、アプリケーション、ミドルウェア、カーネルといった各々のレイヤーで色々なバリエーションが存在し、また使われています。このような環境を示す中において、オペレーティングシステムとは何かを考えていくことが重要だと考えています。
初学者向けGNU/Linuxの情報
GNU/Linuxは利用の裾野が広いので初学者向けの情報が溢れています。 HOW TO本 [2] は、たくさん出ているので、いくらでも自分で学習でき、授業は概念的な理解に集中できます。 この授業はオペレーティングシステムとして UNIX とは何であるかを考えていくことが中心です。 HOW TO USE UNIX でも HOW TO USE GNU/Linux でもありません。 それはわざわざ授業に出なくてもできることですから。
以上のような理由からUNIXオペレーティングシステムの授業にGNU/Linuxを取り上げています。
参考
- ↑ ウィキペディア日本語版の<オペレーティングシステム>の項には次のような表現があります。 「製品としてのOSには、デスクトップ環境やウィンドウシステムなど、あるいはデータベース管理システム (DBMS) などのミドルウェア、ファイル管理ソフトウェアやエディタや各種設定ツールなどのユーティリティ、基本的なアプリケーションソフトウェア(ウェブブラウザや時計などのアクセサリ)が、マーケティング上の理由などから一緒に含められていることもある。 」(2018年7月4日閲覧) しかしながら、ここでの「製品としてのOS」とはGNU/Linuxでいう所のディストリビューションと同等で、これはオペレーティング・システムを意味していません。このウィキペディア日本語版に掲載されている解釈では「Windows 95に含まれていたゲームのマインスイーパーはOSの一部」ということになります。もちろんマインスイーパーはOSのコンポーネントではありません。
- ↑ アマゾンでGNU/Linux関連の本を簡単に見つけられるようにアマゾン・ストアを作成しました。 http://astore.amazon.co.jp/linux-beginners-22