Mac OS Xはどこから来たのですか?

Mac OS Xはどこから来たのですか?

Macユーザーとの議論で、私はMac OS Xのいくつかのバージョンを得ました。私たち全員が知っているように、いくつかのBSDの根がありますが、その根はどのくらいで、どこにありますか?

一部の人々は、Mac OS Xにすべてのユーティリティを含むFreeBSDカーネルがあり、Mac専用のオペレーティングシステムであると言います。 (ここではユーザーアプリケーションについては説明しておらず、すべてのアプリケーションやその他initのアプリケーションについてのみ説明しています。lscdバイナリツール?)

他の人は、Mac OS Xが純粋なMacであるDarwinカーネルであり、オペレーティングシステムユーティリティがBSDから出てきたと言います。

真実はどこにありますか?

答え1

MacOSの歴史はやや複雑です。私は1990年代後半にMachがUnixシステムを構築するより速い方法で宣伝されたので、これに非常に興味を持っていました。

カーネルの起源は少し複雑です。

AT&Tがオペレーティングシステムを一部の大学に無料で配布し、すべてが始まりました。このUnixはBerkeleyで広く改良され、シンボリックリンクとソケットAPIを導入した「Fast File System」(UFS)などの新しいイノベーションを統合し、BSDバージョンのUnixの基礎となりました。 AT&Tは独自の道を進み、同時にSystem Vを構築しました。

その間、BSDの仕事に基づくいくつかの研究も続けられました。 CMUでは、BSDカーネルはスレッド、仮想メモリシステムを制御するAPI(プラグ型「ページャ」 - ユーザーレベルのmmapを介して)、カーネルレベルのリモートプロシージャコールシステム、そして最も重要なのは、いくつかのカーネルレベルの操作をユーザースペースとして移動するアイデアです。これがマッハカーネルになりました。

mmapがMachから来て、後でBSDによって採用されたか、またはMachがアイデアを開拓し、BSDがMachのアイデアに基づいて独自のmmapを追加したかどうかは100%確信できません。

Machカーネルはマイクロカーネルとして説明されていますが、バージョン2.5以降はスレッド、mmap、メッセージ配信を提供するシステムですが、それでもモノリシックカーネルであり、すべてのサービスがカーネルモードで実行されます。

この時点で、Rick Rashid(現在のMicrosoft社員)とAvie Tevanian(現在のApple社員)は、Unixをスピードアップできる新しいアイデアを思いつきました。アイデアは、mmapシステムコールを使用して、ユーザースペースからファイルシステムを実装する「サーバー」にコピーするデータを渡すことです。このアイデアは本質的に同じデータコピーを避ける試みのバリエーションですが、機能がマイクロカーネルから分離されてもマイクロカーネルの利点と見なされます。

VMで動くより速いUnixシステムのためのこのベンチマークは、NeXTとFSFの従業員がカーネルの基盤としてMachを選択するように促しました。

NeXTはMach 2.5カーネル(BSD 4.2または4.3ベース)を使用していますが、GNUは実際に長年にわたってこれを開始していません。これが NeXTSTEP オペレーティングシステムが使用するものです。

一方、CMUでは、マイクロカーネルバージョン3.0に基づいて複数のサーバーを実行しようとするビジョンをついに実現し、Machの作業を続けました。興味深いユーザーレベルのサーバーはすべてAT&Tコードを使用しているためブレーカーと見なされるため、Mach 3.0を実行できる人を知る人がいないため、まだ研究製品です。

この頃、Jolitz チームは 4.3+ BSD を 386 アーキテクチャに移植する作業を完了し、移植の結果を DrDobbs に公開しました。 386BSD は積極的に維持されていないため、386BSD を維持し促進するために NetBSD チームが登場しました。 NetBSD グループ内の紛争により最初の分裂が発生し、FreeBSD が誕生しました。当時、NetBSDはクロスプラットフォームBSDを持つことに焦点を当てたかったのですが、FreeBSDはx86プラットフォームでうまく動作するUnixを持つことに焦点を当てたかったのです。しばらくして、NetBSDは他の紛争のために再分割され、OpenBSDが誕生しました。

x86プラットフォーム用のBSD 4.3ブランチは、BSDiと呼ばれる会社で市販されています。同社はもともとBerkeleyチームのさまざまなメンバーが働いており、大学のBSDチームと良好な関係を維持しています。

AT&Tはこれに不満を抱き、BSDiを相手にAT&Tの訴訟を開始し、訴訟は後に大学まで訴訟に拡大されました。訴訟は、BSDiがAT&T独自のコードを使用することに関連しています(Berkeleyによって書き直されていません)。これはすぐにリリースされるLinuxオペレーティングシステムと比較してBSDを妨げます。

被告には状況が良くなかったが、ある時点で誰かがSystemVがBSDライセンスに基づいて大量のBSDコードを統合し、AT&Tがライセンスに基づく義務を履行しなかったことに気づいた。両側は、AT&Tが自社製品を市場から撤退する必要がないという合意に達し、大学は依然としてAT&Tコードに基づいている可能性のあるすべてのコードを削除することに合意しました。

その後、大学はBSDの2つのバージョン、4.4 encumberedと4.4 liteをリリースしました。ブロックされたバージョンは実行中ですが、AT&Tコードが含まれています。 LiteバージョンにはAT&Tコードは含まれていませんが、機能しません。

さまざまなBSD操作が新しい4.4ライトバージョンの上で再び行われ、数ヶ月でブートシステムが完成しました。

同時に、Mach 3.0マイクロカーネルは、ユーザーゾーンサーバーがなければそれほど役に立ちません。

スカンジナビア大学の学生(私は間違っているかもしれないと思います)は、完全なMach 3.0システムと4.4ライトバージョンに基づいた完全なオペレーティングシステムを初めて作成しました。私はこれを「Lites」だと思います。システムは動作しますが、遅いです。

1992年から1996年まで、BSDは他のほとんどのUnixシステムと同様にmmap()システムコールを使用しました。存在しない「マイクロカーネルの利点」は実際には実現されていません。 NeXTはまだモノリシックコアを持っています。 FSFはまだMachを構築しようとしていますが、BSDコードに触れたり、オープンソースのBSD努力に貢献したりすることはありません。マイクロカーネルは書類上では見事に見えましたが、過度にエンジニアリングされ、すべてを遅くしました。

この時点で、私たちはマイクロカーネルとモノリシックコアに対するLinusとAndyの議論を繰り広げていました。しました。 。

AppleはまだNeXTSTEPを買収していませんが、Machを将来のオペレーティングシステムの潜在的なカーネルとして考え始めました。彼らはOpen Software Foundationを採用し、LinuxをMachカーネルに移植しました。

AppleがNeXTを買収したとき、彼らは比較的古いUnixベース、つまり4.2または4.3ベースのUnixを持っていました。彼らはUnixスタックをアップグレードするためにFreeBSDのJordan Hubbardを雇いました。彼のチームはユーザースペースのアップグレードを担当しており、MacOSユーザースペースをBSDから利用可能な最新バージョンにアップグレードすることは驚くべきことではありません。

Appleはある時点でMach 2.5から3.0に切り替えましたが、マイクロカーネルのアプローチに従わず、代わりにすべてをプロセス内に維持することにしました。 AppleがLiteを使用したのか、スカンジナビアのハッカーを雇ったのか、オペレーティングシステムとして4.4 Liteを採用したのかは確認できません。それは疑問ですが、私はLinuxに移り、BSD / Machの世界に従うのをやめました。

1990年代後半に、AppleのAvieがLinus(当時既に有名だった)を雇って子供のために働こうとしたという噂が回りましたが、LinusはLinuxの作業を続けることにしました。

歴史を離れ、このページではユーザースペースとMach / Unixカーネルについて説明します。

http://developer.apple.com/mac/library/documentation/Darwin/Conceptual/KernelProgramming/Architecture/Architecture.html#//apple_ref/doc/uid/TP30000905-CH1g-CACDAEDC

このOSX履歴チャートが見つかりました。 代替テキスト

答え2

Unix側では、OS X次のステップ、4.3BSDから派生し、カーネルのコア部分が次に置き換えられました。マハ

NeXTプログラミングAPI、最終的には次のように知られていますオープンステージこれは、今日のOS X用のCocoa APIの基礎です。 1997年にAppleがNeXTを買収した後、2つのAPIは大きく異なりました。前進 努力オープンソースAPI準拠のCocoaクローンを提供します。

ここに古典的なMacOS互換性API(カーボンと呼ばれる)を追加すると、OS Xプログラミングインターフェイスがあります。

(OS

FreeBSDカーネルのアイデアに関してはやや正確ですが、それを見る方法は複雑ではありません。私が言ったように、もともとカーネルはNeXTから出ていましたが、NeXTは4.3BSDとMachを使って最初のカーネルを組み立てました。これは、FreeBSDとNeXTSTEPが4.3BSDを介していくつかのコードを共有することを意味します。

OS X FreeBSDベースのミームの最近のソースは2つあります。まず、Appleは引き続きBSD世界(通常FreeBSD)の革新を借りています。 2. AppleはFreeBSDプロジェクトの共同創設者を雇います。ジョーダン・ハバードOS Xの最初の公開バージョンがリリースされた直後です。彼は2013年6月からAppleで働いています。

答え3

OSXに固有のUnixバージョンがあるという言葉は技術的に正確です。

BSD+要素次のステップ+リンゴ調整=ダーウィン

別の方法で変更してください。ホットパージ/アイスクリームのみ注文(BSD)ナッツ追加(NeXTStep)ホイップクリームとチェリー追加(Appleプラグインと調整)=ホットパージサンデ(ダーウィン)

しかし、BSDは他のBSDが追加される基盤であるため、BSDの大部分はDarwinで動作します(ここでは少し変更するだけです)。

関連情報