web-dev-qa-db-ja.com

カーネルがモノリシックであるのに、なぜLinuxが「Unixライク」なのですか?

私が理解しているように、Unix IDの一部は、高度にモジュール化されたファイルプロセスに作業を委任するマイクロカーネルを備えていることです。では、モノリシックカーネルを使用したこのアプローチから逸脱した場合、Linuxが依然として「Unixライク」と見なされるのはなぜですか。

6
Steve

その答えは、「Unixライク」をどのように定義するかにあると思います。 「Unixライク」のウィキペディアのエントリによると、標準的な定義はないようです。 1

Unixライクな(UN * Xまたは* nixと呼ばれることもある)オペレーティングシステムは、Unixシステムと同様に動作するオペレーティングシステムですが、Single UNIXSpecificationのどのバージョンにも準拠または認定されているとは限りません。

用語を定義するための基準はなく、特定のオペレーティングシステムが「Unixライク」である程度に関して意見の相違が生じる可能性があります。

この用語には、ベル研究所のUnixに触発された、またはその機能をエミュレートするように設計された無料のオープンソースオペレーティングシステム、商用および独自仕様のオペレーティングシステム、さらにはライセンスされたUNIXソースコードに基づくバージョン(十分に「Unixライク」である可能性があります)が含まれます。 「認証に合格し、「UNIX」の商標を付ける)。

おそらく最も明白な理由は、UNIXとMINIXがLinuxの前身であり、その作成に影響を与えたということです。 2

TorvaldsはMINIXでLinuxカーネルの開発を開始し、MINIX用に作成されたアプリケーションもLinuxで使用されました。その後、Linuxは成熟し、Linuxシステム上でさらにLinuxカーネルの開発が行われました。

Linus Torvaldsは、彼の発明を「無料」、「フリーク」、「x」のかばん語であるFreaxと呼びたかった(Unixへの言及として)。

オペレーティングシステムを「Unixライク」と呼ぶ場合、システムがモノリシックであるかマイクロカーネルであるかは考慮されていないようです。少なくとも、システムがPOSIXに準拠しているか、ほとんどPOSIXに準拠しているかほど頻繁ではありません。

5
iyrin

「UNIXの方法」とは、実際にはユーザーの経験を指します。少数のユーティリティセットを組み合わせて、効果的なオペレーティングシステムのコマンドラインを構築できます。これに関連して、オペレーティングシステムユーティリティは決して「特別」ではなく、自分で作成できるプログラムを超える力を持っています。

UNIXはこの面で非常に成功しており、オペレーティングシステムがコマンドラインインターフェイスを表示する方法になっているため、これは最近では難しい点です。この点は、反例によって最もよく示されています。IBMメインフレームでcp a.txt b.txtを実行する方法は次のとおりです。

//COPY     JOB ,CLASS=E,MSGCLASS=X,NOTIFY=&SYSUID
//cp       EXEC PGM=IEBGENER
//SYSIN    DD DUMMY
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DSNAME=a.txt,DISP=SHR
//SYSUT2   DD DSNAME=b.txt,DISP=(NEW,CATLG),UNIT=SYSDA

これは、すべての種類のファイルをコピーするわけではありません。

UNIXは、パフォーマンスを犠牲にして使いやすさを単純化する多くの仮定を行いました。ファイルチャネル1(stdin)、2(stdout)、および3(stderr)は、ターミナルとの間を行き来し、上記のJCLからボイラープレートの多くを削除します。ファイルシステムは、1つのタイプのデータ(バイト)と1つのアクセスモード(シーケンシャル)をサポートします(ただし、シーケンシャルデータの読み取りまたは書き込みが可能なポインターを移動して、一種の「ランダムアクセス」を実装できます)。つまり、システムユーティリティは、すべてのファイルとデータ型をカバーするために、1つのタイプのファイルと1つのタイプのデータを処理するだけで済みます。ファイルシステムは事前割り当てを必要としません。ファイル名がオペレーティングシステムに認識されている場合、ディレクトリ(IBMメインフレームでは「ディスクカタログ」とも呼ばれます)へのファイルの追加は自動的に行われます。

これらの仮定は非常に成功したので、最近は彼らに再考すらしません。当時、彼らは傲慢に見えたでしょうが、ファイルの最大サイズが事前に知らされていなかったファイルシステムのオーバーヘッドを想像してみてください。

しかし、UNIXはそれだけではありません。これは、システムユーティリティへの「ツールボックス」アプローチを促進しました。メインフレームのIEBGENERは、ファイルの印刷、レコード内のフィールドの再配置、レコードの削除、空白のレコードの作成を行うことができます。対照的に、UNIX cpコピーファイルでは、catはファイルの内容をリストし、cutハンドルフィールドをリストします。コマンドのstdoutを次のファイルのstdinに文字列化するための適切な構文が、すべて1つの端末行にあります。この「パイプ」構文とそれらの小さなコマンドを使用して、IEBGENERが実行できるすべてのことを実行できます。そして、IEBGENERの作者が夢にも思わなかったこと。

KernighanとPlaugerは、1976年にこのアプローチについて影響力のある本を書きました--ソフトウェアツール-そしてそれは本当に「UNIXの方法」の最初の説明です。 KernighanとPikeは、1984年の著書NIXプログラミング環境でこのアプローチを再記述しました。

1
vk5tu