DUICUO

Apple はなぜ OS X カーネルのみをオープンソース化し、GUI はオープンソース化しないのでしょうか?

[[123854]]

Zhihuユーザー@ibuickからの回答:

1. GUIをオープンソース化すると、OS Xに似た「独立した知的財産」のLinuxディストリビューションや、その他様々な無意味なMODが登場するでしょう。さらに重要なのは、GUIハックの開発がはるかに簡単になり、今のBartenderのように簡単になるということです。面倒なリバースエンジニアリングはもう必要ありません。Menu Extraの代替を直接作成できます。そうなると、システムバグが蔓延し、OS Xの見た目は驚くほど多様化します。これはAppleが望まないことです。OS Xのデスクトップ環境は、最も先進的なオペレーティングシステムの一つであることは特筆に値します。Appleは本当にオープンソース化する意思があるのでしょうか?もしそうしたら、iOSの多くの側面が露出してしまい、Appleにとって不利な状況になるでしょう。

2. ドライバ自体はオープンソースではありませんが、ドライバフレームワークであるIOKitはオープンソースです。IOKitの利点の一つは、オブジェクト指向フレームワークであるため、ゼロから開発を始めることなく、必要な機能を直接継承できることです。

3. GUIレイヤー(Aquaレイヤーとも呼ばれる)はCocoaベースで、システムアーキテクチャの最上位に位置し、ユーザーとほとんどのアプリケーション開発者に直接アクセスします。もちろん、OS XはX11もサポートしています。X11のことを指しているのであれば、これはオープンソースです。

4. IOKitはMach層に存在します。OS Xを少し理解している方なら、CocoaやCarbon関連のコンポーネントを除けば、DarwinというUnixオペレーティングシステムで構成されていることがお分かりいただけるでしょう。DarwinはOS XのSUS認証の鍵となるもので、POSIX準拠、Unixスレッド、プロセス実装を網羅しています。DarwinのカーネルはXNUと呼ばれ、BSDとMachの2つの部分からなるハイブリッドカーネルです。BSDはPOSIX、ネットワーク、ファイルシステムを実装し、Machは基本的なマルチプロセッササポート、仮想メモリ、ページング、スケジューリング、IPC、RPCを実装しています。Machの上にIOKitと様々なkextが構築されています。XNUコンポーネント全体はカーネルモードで動作します。

5. Linuxについてはあまり詳しくありませんが、かつてはモノリシックな巨大カーネルで、OS Xとは大きく異なっていました。今はどうなっているのかは分かりません。Linuxの実装の方がパフォーマンスは優れています。

いくつかの記事を読むことをお勧めします:

  • カーネルプログラミングガイド: カーネルアーキテクチャの概要
  • OS Xのアーキテクチャ
  • マイクロカーネル
  • モノリシックカーネル
  • Linuxカーネル

この記事はhttp://www.zhihu.com/question/26961853/answer/34710600からの引用です。