Macの所有者と話し合って、Mac OS Xの出所のバージョンをいくつか入手しました。 BSDにはある程度のルーツがあることが知られていますが、その量と場所は?
Mac OS XにはFreeBSDカーネルがあり、Mac固有のOSになる上記のすべてのユーティリティがあると言う人もいます。 (ここではユーザーアプリについて言及していませんが、init
、ls
、cd
などすべてを対象としています。binutils?)
他の人たちは、Mac OS Xはダーウィンカーネル、つまり純粋なMacであり、OSユーティリティはBSDからのものだと言っています。
真実はどこですか?
MacOSの歴史はもう少し複雑です。マッハがUnixシステムを構築するより速い方法として世界中で売り出されていたので、私は90年代後半にこれに非常に興味を持っていました。
カーネルの起源はもう少し複雑です。
まず、AT&Tがオペレーティングシステムを一部の大学に無料で配布するところから始まります。このUnixはバークレーで大幅に改善され、UnixのBSDバリエーションの基礎となり、「高速ファイルシステム」(UFS)のようないくつかの新しい革新を取り入れ、シンボリックリンクとソケットAPIを導入しました。 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では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の作成につながりました。
X86プラットフォーム用のBSD 4.3の分岐は、BSDiと呼ばれる会社で商用化され、元のバークレーチームのさまざまなメンバーがそこで働き、大学のBSDチームと良好な関係を維持しました。
AT&Tは面白がらず、AT&TとBSDiの訴訟を起こしましたが、これは後に大学を訴えるために拡大されました。訴訟は、バークレーが書き直さなかったAT&Tのプロプライエタリなコードを使用したBSDiに関する訴訟でした。これは、将来のLinuxオペレーティングシステムと比較してBSDを後退させました。
被告にとって見た目は良くなかったが、ある時点で、誰かがSystemVがBSDライセンスの下でBSDコードの大きなチャンクを組み込んでおり、AT&Tがライセンスにおける義務を果たさなかったことに気付いた。 AT&Tが自社の製品を市場から引き出す必要がないという和解に達し、大学はまだAT&Tコードに基づく可能性のあるコードを取り除くことに同意しました。
その後、大学は、BSD 4.4 encumberedと4.4 liteの2つのバージョンをリリースしました。邪魔なバージョンは起動して実行されますが、AT&Tコードが含まれていました。 LiteバージョンにはAT&Tのコードは含まれていませんが、機能しませんでした。
さまざまなBSDの取り組みにより、新しい4.4 liteリリースに加えて作業がやり直され、数か月以内に起動システムができました。
一方、Mach 3.0マイクロカーネルは、ユーザーランドサーバーがなければ、あまり役に立ちませんでした。
スカンジナビアの大学の学生(私は間違いだと思う)は、4.4 liteリリースに基づく完全なOSを備えた完全なマッハ3.0システムを最初に作成した学生でした。これは「ライト」と呼ばれていました。システムは機能しましたが、低速でした。
1992年から1996年の間、そして現在までに、BSDはすでにmmap()システムコールと他のほとんどのUnixシステムを備えていました。そこになかった「マイクロカーネルの利点」は、実際には実現しませんでした。 NeXTにはまだ一体型のカーネルがありました。 FSFはMachをビルドさせようとしていましたが、BSDコードに触れたり、オープンソースのBSDの取り組みに貢献したりするつもりはありませんでした。彼らは不十分に特定されたカーネルビジョンに反発し続け、独自のRPCプロトコルに溺れていましたカーネル。マイクロカーネルは紙の上では見栄えが良かったが、過度に設計されており、すべてが遅くなっていることが判明した。
この時点で、マイクロカーネルとモノリシックカーネルについてのLinusとAndyの議論もありましたが、世界は、これらの余分なサイクルをすべてマイクロカーネルに追加することは不可能であり、うまく設計されたモノリシックカーネルよりも先に進むことができないことに気付き始めました。 。
AppleはまだNeXTSTEPを取得していませんでしたが、Machを将来のオペレーティングシステムの潜在的なカーネルとして検討し始めていました。彼らはLinuxをMachカーネルに移植するためにOpen Software Foundationを雇いました。これは彼らのグルノーブルオフィスの外で行われました。これは「mklinux」と呼ばれていました。
AppleがNeXTを購入したとき、彼らが手に持っていたものは比較的古いUnixの基盤であり、4.2または4.3ベースのUnixでしたが、今のところ、これらのシステムではフリーソフトウェアさえうまく機能していません。 FreeBSDからJordan Hubbardを雇ってUnixスタックをアップグレードしました。彼のチームがユーザーランドのアップグレードを担当しており、MacOSユーザーランドがBSDで利用可能な最新バージョンにアップグレードされたのは当然のことです。
Appleはある時点でMachを2.5から3.0に切り替えましたが、マイクロカーネルアプローチを採用せず、代わりにすべてをインプロセスのままにしました。 AppleがLitesを使用したか、スカンジナビアのハッカーを雇ったか、またはOSとして4.4 liteを採用したかどうかを確認できませんでした。私はそれらを採用したのではないかと思いますが、すでにLinuxに移行していました。そして、BSD/Machの世界の追跡をやめました。
90年代後半に、AvieがAppleで既に有名だったLinusを雇って赤ちゃんを作ろうとしたが、Linuxの開発を続けることを選択した)との噂があった。
歴史はさておき、このページではユーザーランドとMach/Unixカーネルについて説明しています:
OSXの歴史のこのグラフィックを見つけました:
Unix側では、OS Xは4.3-BSDから派生した NeXTSTEP の子孫であり、カーネルのコア部分が Mach に置き換えられています。
最終的に OpenStep と呼ばれるようになったNeXTプログラミングAPIは、今日のOS X用Cocoa APIの基礎です。2つのAPIは、Apple 1997年、オープンソースAPI互換のCocoaクローンを提供するために ongoingefforts があります。
それに加えて、Carbonと呼ばれるクラシックMacOS互換性APIがあれば、OS Xプログラミングインターフェースを利用できます。
(OS Xには他にもたくさんありますが、Finder、BSD、およびGNUユーザーランドツールなど)に加えて、これらはアプリケーションです。)
FreeBSDカーネルのアイデアに関しては、それはまあまあですが、それを見るには洗練されていない方法です。オリジナルのカーネルは、私が言ったように、4.3BSDとMachから最初のカーネルを組み立てたNeXTから来ました。これは、FreeBSDとNeXTSTEPの両方が4.3BSDを介していくつかのコードを共有したことを意味します。
OS XがFreeBSDに基づいているというミームには、最近2つのソースがあります。最初に、Appleは、通常FreeBSDからのBSDの世界から革新を借り続けています。2番目に、Apple FreeBSDプロジェクトの共同創設者を雇った Jordan Hubbard 最初の公開OS Xリリースを作成した直後 彼はApple 2013年6月まで働いた
OSXには独自のUnix風味があると言われたとき、それらは技術的に正しいものです。
[〜#〜] bsd [〜#〜] +要素NeXTSTEP + Apple微調整= DARWIN
別の言い方をすると。ホットファッジ/アイスクリーム(BSD)のみを注文すると、ナッツ(NeXTSTEP)とホイップクリームとチェリー(アップルアドインと調整)が追加されます=ホットファッジサンデー(ダーウィン)
しかし、BSDは他の人が追加されたベースであるため、多くのBSDがダーウィンで動作します(あちこちで微調整を行います)。