MacOSの歴史はもう少し複雑です。90年代後半、マッハはUnixシステムを構築するより速い方法として世界中で売り込まれていたため、これに非常に興味がありました。
カーネルの起源はもう少し複雑です。
それはすべて、AT&Tがオペレーティングシステムを一部の大学に無料で配布するところから始まります。このUnixはバークレーで大幅に改善され、BSDのUnixのバリエーションの基盤となり、「高速ファイルシステム」(UFS)のようないくつかの新しいイノベーションを組み込み、シンボリックリンクとソケットAPIを導入しました。AT&Tは独自の方法で進み、同時にSystem Vを構築しました。
その間、研究が続けられ、一部の人々は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はMach 2.5カーネル(BSD 4.2または4.3に基づいていた)を使用しましたが、GNUは実際には何年も作業を開始しませんでした。これは、NeXTSTEPオペレーティングシステムが使用していたものです。
一方、CMUでの作業はMachで継続され、バージョン3.0のマイクロカーネル上で複数のサーバーを実行するというビジョンをようやく実現しました。興味深いユーザーレベルのサーバーはすべてAT&Tコードを使用していたため、邪魔になっているとみなされたため、Mach 3.0を実行できることを知らないため、研究製品のままでした。
この頃、Jolitzチームは386アーキテクチャに4.3+ BSDの移植を行い、DrDobbsに移植の取り組みを公開しました。386BSDは積極的に保守されておらず、NetBSDチームである386BSDの保守と前進のためにグループが出現しました。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の2つのバージョンと、4.4 liteをリリースしました。邪魔されたバージョンは起動して実行されますが、AT&Tコードが含まれていました。LiteバージョンにはAT&Tのコードは含まれていませんでしたが、機能しませんでした。
さまざまなBSDの取り組みにより、4.4 liteの新しいリリースに加えて作業がやり直され、数か月以内にブートシステムが使用されました。
一方、Mach 3.0マイクロカーネルは、ユーザーランドサーバーなしではあまり役に立ちませんでした。
北欧の大学の学生(この間違いがあると思う)は、4.4 liteリリースに基づいた完全なOSで完全なMach 3.0システムを作成した最初の人でした。これは「Lites」と呼ばれていました。システムは動作しましたが、時間がかかりました。
1992年から1996年の間に、今ではBSDにはすでに他のほとんどのUnixシステムと同様にmmap()システムコールがありました。そこにはなかった「マイクロカーネルの利点」は、実際には実現しませんでした。NeXTにはまだモノリシックカーネルがありました。FSFはまだMachのビルドを試みており、BSDコードに触れたり、オープンソースBSDの取り組みに貢献したりすることを望んでいませんでした。カーネル。マイクロカーネルは紙の上では素晴らしく見えましたが、過剰に設計されており、すべてが遅くなったことが判明しました。
この時点で、マイクロカーネルとモノリシックカーネルをめぐるLinus対Andyの議論もあり、世界はこれらの余分なサイクルをすべてマイクロカーネルに追加することは不可能であると認識し始めました。 。
AppleはまだNeXTSTEPを買収していませんでしたが、将来のオペレーティングシステムの潜在的なカーネルとしてMachを検討し始めていました。彼らはLinuxをMachカーネルに移植するためにOpen Software Foundationを雇いました。これはグルノーブルのオフィスで行われたもので、「mklinux」と呼ばれていました。
Appleが手元にあるNeXTを購入したとき、比較的古いUnixの基盤であり、4.2または4.3ベースのUnixでしたが、今では、これらのシステムではフリーソフトウェアでさえうまく動作しませんでした。彼らはUnixスタックをアップグレードするためにJordan HubbardをFreeBSDから雇いました。彼のチームはユーザーランドのアップグレードを担当し、MacOSユーザーランドがBSDで利用可能な最新バージョンにアップグレードされたことは驚くことではありません。
Appleはある時点でMachを2.5から3.0に切り替えましたが、マイクロカーネルアプローチを採用しないことを決定し、代わりにすべてをインプロセスに保ちました。AppleがLitesを使用しているか、スカンジナビアのハッカーを雇っているか、またはOSとして4.4 liteを採用しているかどうかを確認することはできませんでした。彼らはそうだったと思うが、私はすでに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の歴史のこのグラフィックを見つけました: