GNU/Linux >> Linux の 問題 >  >> Linux

Linux のカーネルがモノリシックであるのに、なぜ Linux は Unix に似ているのですか?

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

<ブロック引用>

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

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

この用語には、Bell Labs の Unix に触発された、またはその機能をエミュレートするように設計されたフリーでオープンソースのオペレーティング システム、商用および独自の類似製品、ライセンスされた UNIX ソース コードに基づくバージョン (認証に合格するには十分に「Unix に似ている」場合がある) が含まれる場合があります。 「UNIX」の商標を使用します)。

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

<ブロック引用>

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

Linus Torvalds は、彼の発明を「free」、「freak」、および「x」(Unix をほのめかして) のかばん語である Freax と呼びたいと考えていました。

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


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

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

//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 はファイルの内容をリストし、フィールドをカットします。コマンドの stdout を次のファイルの stdin にすべて 1 つの端末行で文字列化するためのきちんとした構文があります。この「パイプ」構文とこれらの小さなコマンドを使用して、IEBGENER が実行できるすべてのことを実行できます。そして、IEBGENER の作成者が夢にも思わなかったもの。

Kernighan と Plauger は 1976 年にこのアプローチについて影響力のある本を書きました -- Software tools -- そして、これが「UNIX 流」の最初の解説です。 Kernighan と Pike は、1984 年の著書 The UNIX Programming Environment でこのアプローチを再度述べています。 .


Linux
  1. Linux – LinuxはUnixですか?

  2. Linux –異なるLinux / UNIXカーネルは交換可能ですか?

  3. 最速の Linux システム コール

  1. Linux カーネル 2.6.26 で、#define atom_read(v) ((v)->counter + 0) が見つかりました。なぜ +0 なのですか?

  2. Unix/Linux システムで最も強力なユーザーが「ルート」と呼ばれるのはなぜですか?

  3. Linux でシステム コール テーブルを変更する必要があるのはなぜですか?

  1. POSIXとは何ですか? Linux / UNIXユーザーにとってなぜ重要なのですか?

  2. Linux は Unix ですか?

  3. 異なる Linux/Unix カーネルは互換性がありますか?