オペレーティングシステムを「Unixファミリー」オペレーティングシステムにするには?

オペレーティングシステムを「Unixファミリー」オペレーティングシステムにするには?

私はしばしば多くのウェブサイトで「Unixファミリー」という用語を使用するのを見ます。

標準はありません。ただ働き方が違うだけです。

しかし、カーネルを最初から開発した場合、「UNIXに似た」カーネルと見なされるのはなぜですか?

基本的に、コードをUnixのように書く理由は何ですか?

答え1

標準はありません。ただ働き方が違うだけです。

私は、ほとんどの「UNIXファミリー」オペレーティングシステムがそれを遵守するために非常に真剣な努力をしていると信じています。POSIX規格、Open Groupが監督し、このグループも制御します。単一のUNIX仕様これは「本当のUNIX」を定義します。前者が後者の核心である。

実際、実用性を定義する基準があります。UnixシリーズオペレーティングシステムPOSIXのWikipediaの記事の最後にある「完全に」および「ほとんど」互換性のあるオペレーティングシステムのリストを参照してください。

いくつかの明白な理由があります。オペレーティングシステム特に、単一のUnix仕様(SUS)を完全に準拠または認証できないと見なすことができますが、これは特定のLinuxシステムがSUSと必ずしも互換性がないためではありません。ウィキペディアの記事では、仕様を次のようにまとめています。

SUSv3には合計3700ページがあり、テーマ別に4つの主要部分に分かれています。

基本定義(XBD)- 仕様に使用される定義および規則のリストと互換性のあるシステムによって提供される必要があるCヘッダーファイルのリスト。合計84個のヘッダファイルが提供されます。

シェルとユーティリティ(XCU)- ユーティリティリストとシェルの説明、sh。合計160のユーティリティが指定されました。

システムインターフェース(XSH)- システムコールまたはライブラリ関数として実装されるさまざまな関数の仕様が含まれています。合計1123のシステムインタフェースが指定されています。

基本原則(XRAT)- 標準の説明です。

標準のユーザーコマンドラインとスクリプトインターフェースは、以前のバージョンのKorn Shellに基づくBourne Shellの拡張であるPOSIX Shellです。

その他のユーザーレベルのプログラム、サービス、ユーティリティには、awk、echo、ed、vi、その他何百ものが含まれます。必須プログラムレベルのサービスには、基本I / O(ファイル、端末、およびネットワーク)サービスが含まれます。

標準にはテストスイートが付属しています。これをPCTSまたはPOSIX認証テストスイートと呼びます。

SUSには、372個の関数と3個のヘッダファイルを指定するCURSES(XCURSES)仕様も含まれています。全体として、SUSv3は1742のインターフェイスを指定します。

これは明らかにLinuxカーネルの一部ではない多くのユーザーゾーンコンポーネント(シェルなど)を意味します。したがって、linux.orgなどには選択の余地はありません。他。カーネルは個別に認証できます。この意味では、カーネルはまったくオペレーティングシステムではありません。もちろん、彼らは特定のシステムを認証するためにカーネルを使用しようとしますが、一般的な展開シナリオでは意味がありません。カーネルとカーネルを維持する人は、ユーザー領域カーネル(GNU)とカーネルを維持する人とは独立しています。オペレーティングシステムのディストリビューション(Debian、Fedoraなど)を実際に組み立てる人です。

私はDebianやFedora自体が認証プロセスに参加できると思いますが(たとえばRedHat Enterpriseが「認証Unix」になる可能性があります)、これが本当に望ましいかどうか疑問に思います。私の考えでは、SUSシステムの主な理由は、そのために作成された(商業規模、非消費者向け)ソフトウェアを実行することです。これは単にLinuxのニッチではありません。そうする人は、OSライセンスごとに数千ドルを支払うでしょう。これは、サポートなどのシステムで実行する追加のソフトウェアに対して、ライセンスごとに数万ドルまたは数十万ドルを支払うためです。一方、Linuxなどのアウトライヤーは、ビジネス目的のための単純なコンプライアンスを超えて設計目標を追求しており、これにはさまざまな例があります。http://en.wikipedia.org/wiki/STREAMS):

STREAMSは単一のUNIX仕様のバージョン1(UNIX 95)および2(UNIX 98)に準拠する必要がありましたが、BSDおよびLinux開発者がSTREAMSの提供を拒否したため、[引用が必要]はバージョン3(UNIX 03のコンプライアンス)です。

SUSとThe Open Groupが!=linux、!=BSDなどであることを強調する興味深い調整です。

答え2

POSIXへの最初の答えを拡張するには、「UNIXファミリー」が何を意味するのかを理解するには、まずUNIXが正確に何であるかを理解する必要があります。次の文書を見るグループを開く、Unix商標を所有している場合詳細関連単一のUNIX仕様進化 - ここにありますUnix03:

UNIX 03 製品標準は、単一の UNIX 仕様バージョン 3 に準拠するシステムの指定です。これは、UNIX 98製品標準が大幅に改善されたバージョンです。必須の改善には、ISO/IEC 9989:1999 C プログラミング言語、IEEE Std 1003.1-2001、および ISO/IEC 9945:2002 との並べ替えが含まれます。この製品規格には、国際化システムコールおよびライブラリ拡張V3、コマンドおよびユーティリティV4、C言語V2、および国際化端末インタフェースなどの必須製品標準が含まれています。

UNIX98:

UNIX 98製品標準は、UNIX 95製品標準の大幅に強化されたバージョンです。必要な改善点には、(1)スレッドインターフェース、(2)マルチバイトサポート拡張(MSE)、(3)大容量ファイルサポート、(4)ダイナミック接続、(5)ハードウェアデータ長の依存関係または制限を排除するための変更、 (6) 変更が含まれます。 2000年に。また、リアルタイムサポート用のソフトウェア管理ツールやAPIセットなどのオプションの改善も含まれています。この製品標準には、国際化システム呼び出しおよびライブラリ拡張V2、コマンドおよびユーティリティV3、C言語、トランスポートサービス(XTI)V2、ソケットV2、および国際化ターミナルインターフェースなどの必須製品標準が含まれています。また、ソフトウェア管理製品の標準に準拠することもできます。

UNIX95(私のハイライト):

この製品標準は、元々派生したオペレーティングシステムクラス用に開発されたさまざまなアプリケーションをサポートするための統合プラットフォームを定義します。もともとAT&Tが開発したUNIXオペレーティング・システム・コードおよび/またはインターフェース基本製品に基本的に提供される付帯施設に加え、Baseよりも範囲が広いです。この製品標準には、国際化システム呼び出しおよび拡張ライブラリ、コマンドおよびユーティリティV2、C言語、トランスポートサービス(XTI)、ソケット、および国際化ターミナルインターフェースなどの製品標準が含まれています。

仕える人バージョン場合によっては、標準にインターネットサーバーとIPv6が追加されました。

もちろん我々はそれを見るAT&Tベル研究所C言語はUNIXの中核です。言語、モジュラーインフラストラクチャ、シェル、カーネル、ファイルシステム、その他の主要なオペレーティングシステムコンポーネントの設計と実装方法です。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここが本がある場所です。UNIXオペレーティングシステムの設計モリス・J・バッハ(Maurice J. Bach)の作品は、この時点で歴史的問題に関連しており、非常に貴重な読書になります。もちろん、これが関連していることは注目に値します。その他の発明本当にC言語に似ていますね。 CはAT&T Bellがアセンブリと同じくらい高速ですが、さまざまなハードウェアと標準Cのための多くのPOSIX拡張で、移植可能な言語でUnixを実装するために開発しました。

カーネル自体の観点から、UNIXカーネルが伝統的に意味していたことを説明する次の概念図がよくあります。

ここに画像の説明を入力してください

以下は、UNIX System Vカーネルの基本を議論するBachの古典本(1986)からの抜粋です。

しかし、[アプリケーションサブシステムとプログラム]は、最終的にカーネルが提供する低レベルのサービスを使用し、一連のシステムコールを介してこれらのサービスを利用します。 System Vには約64のシステムコールがあり、そのうちよく使用されるものは32未満です。使いやすく、ユーザーに強力な機能を提供する簡単なオプションがあります。システムコールセットとそれを実装する内部アルゴリズムはカーネルの大部分を構成します[...]

[...] 主な2つのコンポーネントはファイルサブシステムとプロセスサブシステムです。

ファイルは、論理デバイスと見なされるファイルシステムで構成されます。物理デバイス(ディスクなど)には、複数の論理デバイス(ファイルシステム)を含めることができます。各ファイルシステムには、ファイルシステムの構造と内容を説明するスーパーブロックがあります。ファイルシステムの各ファイルは、ファイルの属性を提供するインデックスノードとして記述されます。ファイルを操作するためのシステムコールはinodeを介して行われます。 [そしてバッファプール]

[...] inodeには2つのバージョンがあります。ファイルが使用されていないときにinode情報を格納するディスクコピーと、アクティブファイルに関する情報を記録するコアコピー。

UNIXシステムでは、ユーザープロセスの実行は、ユーザーレベルとカーネルレベルの2つのレベルに分けられます。プロセスがシステムコールを実行すると、プロセスの実行モードは次のように変更されます。ユーザーモード到着カーネルモード: オペレーティングシステムはユーザー要求を実行してサービスしようとします [...]

UNIXシステムのアイデアは、ユーザーがより複雑なプログラムを構築するためのコンポーネントとして使用できる小さなモジュール式プログラムを作成できるようにするオペレーティングシステムの基本要素を提供することです。シェルユーザーに見られるこれらの基本機能の1つは、次の機能です。入力/出力リダイレクト

[...]システムコールサービスに加えて、カーネルはユーザーコミュニティの一般的な帳簿を実行し、プロセススケジュールを制御し、メインメモリのプロセス保存と保護を管理し、割り込みを処理し、ファイルとデバイスを管理し、システムエラー条件を処理します。 。

UNIXシリーズのオペレーティングシステムでさまざまなカーネルの実装に興味がある場合は、FreeBSDを確認してください。実装する(4.4BSD)またはマッハカーネルそれともこれを見てください比較する彼らの特性。

UNIXの設計を理解するにつれて、UNIXとその起源について以下の図で何が起こっているのかを理解することができます。歴史。 Bach氏は自分の本で主にSystem Vについて話しますが、BSDについても議論します。

ここに画像の説明を入力してください

持つ目に見える以上のものがあります本当。たとえば、Mac OSXはUNIX03です。認証しかし、これは純粋なUNIX(主に赤)に関連付けられていると思いますか?

ここに画像の説明を入力してください

上記では、BSD、GNU、Microsoft、およびさまざまな個人がこの世界にどのように貢献しているかを確認できます。 GNUと最終的にLinuxはUNIXから直接の系統を持っていませんが、牛に似た一種の栄養オープンソースの世界で閉鎖型商用UNIXのツールとソフトウェアを再設計する努力です。だから見てくださいGNUメンテナンスソフトウェアたとえば、アイデアは初期のプロトタイプアプリケーションとライブラリに提供されます。

特許戦争UNIXの開発(時には低迷)に重要な役割を果たしました。ライセンスの種類に応じて、UNIXはクローズドタイプとBSD(BSDは受け入れますコードをプライベートソースにするには(OSXを参照)一般公衆ライセンスこれにより、コピーレフトの世界でLinuxとGNUが相補的になります。これはもともとLinus Torvaldsが開発したLinuxカーネルの古典的な図であり、Unix系オペレーティングシステムでカーネルが「できる」ことが何なのかを示しています。

ここに画像の説明を入力してください

これは次のアイデアを提案します。コア「設計タイプは、UNIX標準またはUNIX様オペレーティングシステムを定義するものではありません。実際には、純粋なUNIXでも、HPUXは単一のカーネルを使用しますが、AIXはマイクロカーネルを使用します。ディスカッションデザインはUnix系統やアイデンティティではなく、パフォーマンスに関するものです。一方、UNIX/UNIXシリーズのオペレーティングシステムでは、ソフトウェア提供、ファイルシステム処理などの従来の概念的なアプローチがあります。

私はそのような考慮事項があなたの質問のオペレーティングシステムの部分に文脈を追加すると信じています。

関連情報