Macの所有者と話し合って、私はMacOSXがどこから来たのかについていくつかのバージョンを手に入れました。 BSDにある程度のルーツがあることは知られていますが、どのくらい、どこで?
Mac OS XにはFreeBSDカーネルがあり、上記のすべてのユーティリティがMac固有のOSになると言う人もいます。 (ここではユーザーアプリについてではなく、すべてのinit
についてのみ説明します。 、ls
、cd
、 その他。 binutils? )
Mac OS XはDarwinカーネル、つまり純粋なMacであり、OSユーティリティはBSDから提供されていると言う人もいます。
真実はどこにありますか?
承認された回答:
MacOSの歴史はもう少し複雑です。マッハはUnixシステムをより速く構築する方法として世界中に売り込まれていたので、私は90年代後半にこれに非常に興味を持っていました。
カーネルの起源はもう少し複雑です。
それはすべて、AT&Tがオペレーティングシステムを一部の大学に無料で配布することから始まります。このUnixはBerkeleyで大幅に改善され、UnixのBSDバリエーションの基盤となり、「Fast File System」(UFS)、シンボリックリンク、ソケットAPIなどのいくつかの新しいイノベーションが組み込まれました。 AT&Tは独自の道を歩み、同時にSystemVを構築しました。
その間、研究は続けられ、何人かの人々は基礎としてBSDからの仕事を採用しました。 CMUでは、BSDカーネルが、いくつかの新しいアイデアのプロトタイピングの基盤として使用されました。スレッド、仮想メモリシステムを制御するAPI(プラグイン可能な「ページャー」、ユーザーレベルのmmapを介して)、カーネルレベルのリモートプロシージャコールシステムなどです。重要なのは、いくつかのカーネルレベルの操作をユーザースペースに移動するというアイデアです。これがMachカーネルになりました。
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はMach2.5カーネル(BSD 4.2または4.3のいずれかに基づいていた)を採用しており、GNUは実際には何年も作業を開始しませんでした。これは、NeXTSTEPオペレーティングシステムが使用していたものです。
一方、CMUでは、Machでの作業が継続され、バージョン3.0のマイクロカーネル上で複数のサーバーを実行するというビジョンがついに実現しました。興味深いユーザーレベルのサーバーはすべてAT&Tコードを使用していて、邪魔だと見なされていたため、Mach 3.0を実行できる人は誰もいません。それで、それは研究製品のままでした。
この頃、Jolitzチームは4.3+ BSDを386アーキテクチャに移植し、DrDobbsに移植の取り組みを公開していました。 386BSDは積極的に保守されておらず、386BSDを保守し、前進させるためのグループ、NetBSDチームが出現しました。 NetBSDグループ内の内部の戦いが最初の分裂を引き起こし、FreeBSDはこれから形成されました。当時のNetBSDは、クロスプラットフォームのBSDを使用することに焦点を合わせたいと考えていました。また、FreeBSDは、x86プラットフォームで優れた機能を発揮するUnixを使用することに焦点を合わせたいと考えていました。少し後、NetBSDは他のいくつかの論争のために再び分裂し、これがOpenBSDの作成につながりました。
関連:Mac – Apple Time Capsuleを、ルーターではなく、ネットワークに接続されたバックアップドライブとして使用することは可能ですか?x86プラットフォーム用のBSD4.3のフォークは、BSDiという会社で商用化され、元のBerkeleyチームのさまざまなメンバーがそこで働き、大学のBSDチームと良好な関係を維持しました。
AT&Tは面白がらず、AT&T対BSDiの訴訟を開始しました。この訴訟は、後に大学を訴えるために拡大されました。訴訟は、バークレーによって書き直されていないAT&Tの専有コードを使用したBSDiに関するものでした。これにより、新進気鋭のLinuxオペレーティングシステムと比較してBSDが後退しました。
被告にとっては状況は良くありませんでしたが、ある時点で、SystemVがBSDライセンスの下でBSDコードの大きな塊を組み込んでおり、AT&Tがライセンスでの義務を果たしていないことに気づきました。 AT&Tが製品を市場から撤退する必要がないという和解に達し、大学は、AT&Tコードに基づく可能性のあるコードをすべて削除することに同意しました。
その後、大学はBSD4.4encumberedと4.4liteの2つのバージョンをリリースしました。邪魔なバージョンは起動して実行されますが、AT&Tコードが含まれていました。ライトバージョンにはAT&Tのコードは含まれていませんでしたが、機能しませんでした。
さまざまなBSDの取り組みにより、新しい4.4 liteリリースに加えて作業がやり直され、数か月以内に起動システムが導入されました。
一方、Mach 3.0マイクロカーネルは、ユーザーランドサーバーがないとあまり役に立ちませんでした。
スカンジナビアの大学の学生(私はこれが間違っているかもしれないと思います)は、4.4liteリリースに基づいた完全なOSを備えた完全なMach3.0システムを作成した最初の人でした。これは「Lites」と呼ばれたと思います。システムは機能しましたが、低速でした。
1992年から1996年の間、そして今ではBSDはすでにmmap()システムコールと他のほとんどのUnixシステムを持っていました。そこにはなかった「マイクロカーネルの利点」は、実際には実現しませんでした。 NeXTにはまだモノリシックカーネルがありました。 FSFはまだMachをビルドさせようとしており、BSDコードに触れたり、オープンソースBSDの取り組みに貢献したりすることを望まず、不十分に指定されたカーネルビジョンで充電を続け、RPCプロトコルに溺れていました。カーネル。マイクロカーネルは紙の上では見栄えがしましたが、過剰に設計されていて、すべてが遅くなっただけでした。
この時点で、マイクロカーネルとモノリシックカーネルについてLinusとAndyの議論もあり、世界は、これらの余分なサイクルをすべてマイクロカーネルに追加することは不可能であり、適切に設計されたモノリシックカーネルよりも進んでいることに気づき始めました。 。
AppleはまだNeXTSTEPを買収していませんでしたが、将来のオペレーティングシステムの潜在的なカーネルとしてMachを検討し始めていました。彼らはLinuxをMachカーネルに移植するためにOpenSoftwareFoundationを雇いました、そしてこれは彼らのグルノーブルオフィスから行われました。これは「mklinux」と呼ばれたと思います。
AppleがNeXTを購入したとき、手元にあったのは比較的古いUnix基盤であり、4.2または4.3ベースのUnixでしたが、今では、これらのシステムではフリーソフトウェアでさえすぐに実行できませんでした。彼らはUnixスタックをアップグレードするためにFreeBSDから離れてJordanHubbardを雇いました。彼のチームはユーザーランドのアップグレードを担当し、MacOSユーザーランドがBSDで利用可能な最新バージョンにアップグレードされたことは驚くことではありません。
関連:Mac – Mac OS X Mountain lion Apple iDエラーのインストール?Appleはある時点でMachを2.5から3.0に切り替えましたが、マイクロカーネルアプローチを採用せず、代わりにすべてを処理中に維持することにしました。 AppleがLitesを使用したのか、スカンジナビアのハッカーを雇ったのか、あるいはOSとして4.4liteを採用したのかを確認することはできませんでした。彼らはそうだったと思いますが、私はすでにLinuxに移行し、BSD/Machの世界の追跡をやめていました。
90年代後半、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の歴史のこのグラフィックを見つけました: