web-dev-qa-db-ja.com

Mac OS XとBSDはどの程度密接に関連していますか?

Mac OS Xとbsdは関連していると読みました。それらはどの程度密接に関係していますか。 Mac OS Xソフトウェアを調整してBSDにインストールできますか?

45
Boolean

OS X 10.4の時代に、OS XのVFSを書くのに失敗するのにしばらく時間を費やしました。当時、カーネルの主要なサブシステムのうち、ネットワークスタックとVFSだけがまだ真のBSDでした。当時、VFSでさえも部分的に書き直されてよりモジュール化されていました(すべてのBSD VFSデータ構造は不透明なポインターになり、APIはKPI関数と呼ばれるものを介して行われました)。ネットワークスタックも同じように進んでいたと思います。また、ユーザーランドとのインターフェースには、OSをユーザーランドプログラムから見るとBSDのように見せるための薄いレイヤーがありました。

それ以外はすべて書き直されたか、置き換えられました。メモリ管理、プロセス管理などは、Machマイクロカーネルから来ました。デバイスドライバーサブシステムは、Appleによってゼロから作成されました。

ユーザーランドのプログラミングに関しては、OS XはBSDに非常に似ており、BSD用に作成されたプログラムは簡単に移植できるはずです。ただし、OS Xには、BSDでは利用できないAPIがたくさんあります。これらには、グラフィック、サウンドなど、ユーザーインターフェイスに関連するほとんどすべてが含まれます。OSXがバックグラウンドプロセスを起動するのに推奨される起動APIなど、BSDには存在しない他のインターフェイスもあります。

31
JeremyP

ウィキペディア BSD記事 は良いです(そして、それは価値があるので、私自身の理解と一致しています)。 AppleのMac OS Xが構築されているシステムであるDarwinは4.4BSD-Lite2とFreeBSDの派生物であり、4.4BSDはBerkeleyの最後のリリースであると述べています。に関与していました。

だから、Darwinはあなたが得ることができるBSDである(他のすべてのBSDと同じように!)。 OS Xは、主にGUIではあるがオープンソースではないディストリビューションの部分を指しますが、さまざまなフレームワークを含み、これらに依存するものは移植性がありません。

OS X全体は NIX システムです。これは、(POSIXに似ているのではなく)真のPOSIX準拠システムであることに相当します。

他の回答が指摘しているように、OSのユーザーランド部分はUNIXの経験が豊富な人には当然のことであり、OS XでポータブルUNIXソフトウェアを構築するのに苦労したことはほとんどありません。

対照的に、OSの非ユーザーランド部分はかなり異なります。 Appleはこれらの分野でかなり元気に革新する気があります。これらの変更は正式にはダーウィンの一部であると思います。最も明白な違いの1つは- launchd は、cron、at、inetd、およびスタートアップインフラストラクチャの多くを置き換えました。

19
Norman Gray

MacソフトウェアがApple独自の表示ライブラリであるCocoaを使用している場合(GUIを備えたMac上で実行され、Xサーバーを起動する必要がない場合はdoes)、通常のBSDシステムのコード。

コードがPOSIXで指定された関数のみを使用する場合、Linux、BSD、さらにはWindowsにすっきりと移植されます。

Mac OS XとBSDが関連しているのは事実です。カーネルは異なりますが、共通の祖先と重要なユーザーランドコードを共有しています。明らかに、「どれだけ近いか」を定量化することはできません-それは主観的です。

7
Borealid

Mac OS X is BSD Unixの1つのフレーバー。 Borelaidが既に指摘したように、それは必ずしもMacアプリを他のBSDフレーバーに移植することが簡単または管理しやすくなることを意味するわけではありません。それらのすべてが独自の詳細をもたらし、OS Xは他のものよりも優れています。

other BSDフレーバーからOS Xへのプログラムの移植も作業を伴い、常に(スムーズに、またはまったく)動作するとは限りませんが、通常ははるかに簡単です。

移植しようとしているアプリの種類によって異なります。 POSIX互換のC/C++コンソールプログラムを作成する場合、それらはPOSIX互換システム(ほとんどの場合LinuxおよびBSDフレーバー)の下でコンパイルおよび正常に動作しますが、OS Xは最新のPOSIX関数(たとえばutimensat)Linuxで利用可能です。一方、グラフィカルアプリケーションでは、GNUstepが必要なCocoaまたは以前のCarbonを使用します。グラフィカル環境にはそれぞれ異なる設計標準や規則があるため、グラフィカルアプリケーションの移植は非常にまれです。したがって、通常、グラフィカルアプリケーションは各グラフィカル環境についてゼロから作成する必要があります。

1
Philipp

インストール済み-いいえ。

ソースから移植される可能性があります-Gnustep、Cocotron、EtoileOSを参照してください-これらはすべて、Cocoa開発スタックとの互換性の度合いが異なります(ただし、古いCarbonとは互換性がありません)。そのように開発されたXプラットフォームのObjective-Cソフトウェアは限られています。

0
JulesLt