(Translated by https://www.hiragana.jp/)
XNU - Wikipedia コンテンツにスキップ

XNU

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
XNU
開発元かいはつもと Apple
初版しょはん 1996ねん12月 (27ねんまえ) (1996-12)
リポジトリ ウィキデータを編集
プログラミング
言語げんご
C C++
対応たいおうOS Darwin, iOS, macOS, Unixけい
サポートじょうきょう 開発かいはつちゅう
種別しゅべつ カーネルハイブリッドカーネル
ライセンス Apple Public Source License 2.0
公式こうしきサイト www.opensource.apple.com/
テンプレートを表示ひょうじ

XNUは、Apple取得しゅとく開発かいはつしたオペレーティングシステムカーネルである。macOSもちいられ、オープンソースソフトウェアDarwin一部いちぶとして公開こうかいされている。XNUはX is Not Unixりゃく[1]

デザイン[編集へんしゅう]

XNUはモノリシックカーネルマイクロカーネル特徴とくちょうあわせもつハイブリッドカーネルで、マイクロカーネルが可能かのうにするメッセージパッシングのモジュールせいやより広範こうはんメモリ保護ほご、モノリシックカーネルがもつ実行じっこう速度そくど保持ほじなど、両方りょうほう技術ぎじゅつ有効ゆうこう利用りようすることをこころみている。

XNUは現在げんざいARM[2]IA-32x64PowerPCベースのプロセッサにおいて、シングルプロセッサとSMP両方りょうほう動作どうさする。

Mach[編集へんしゅう]

XNUの基礎きそであるMachはシンプルなマイクロカーネルであり、OSのコアを分割ぶんかつされた柔軟じゅうなんなプロセスとして実行じっこうすることができる(MachコアのうえでいくつかのOSを平行へいこうして実行じっこうできる)。しかし、これはカーネル/ユーザモードのえに時間じかん消費しょうひし、またマイクロカーネルのアドレス空間くうかんとデーモンとのあいだでおこなわれるメッセージのマッピングやコピーによってオーバーヘッドをしょうじることから、しばしばパフォーマンスが低下ていかしてしまう。macOSでは効率こうりつのために、BSD機能きのうはMachのコアのなかまれた。その結果けっか、Machと古典こてんてきなBSDカーネル両方りょうほう利点りてん欠点けってんあわせもつものとなった。

Machは、カーネルスレッドプロセス管理かんりプリエンプティブ・マルチタスク、メッセージパッシング(プロセスあいだ通信つうしん)、メモリ保護ほご仮想かそう記憶きおくソフトリアルタイム処理しょりのサポート、カーネルデバッグのサポート、コンソールI/O提供ていきょうする。

BSD[編集へんしゅう]

カーネルのBSD部分ぶぶんは、POSIX API(BSDシステムコール)、MachタスクじょうでのUnixプロセスモデル、基本きほんてきなセキュリティーポリシー、ユーザIDとグループID、アクセスけんプロトコルスタック仮想かそうファイルシステムHFS / HFS+などいくつかのローカルファイルシステム、Network File System (NFS) クライアントとサーバ、暗号あんごうフレームワーク、UNIX System Vプロセスあいだ通信つうしん、auditサブシステム、強制きょうせいアクセス制御せいぎょ、いくつかのlocking primitivesを提供ていきょうする。

I/O Kit[編集へんしゅう]

I/O Kit英語えいごばんC++のサブセットでかれたデバイスドライバフレームワークである。オブジェクト指向しこう設計せっけいもちいており、ドライバのクラスに共通きょうつうする機能きのう提供ていきょうし、ドライバをよりはやくよりすくないコードでけるようにする。I/O Kitはマルチスレッドされており、対称たいしょうがたマルチプロセッシング保証ほしょうし、ホットプラグや動的どうてきなデバイスの配置はいち可能かのうにする。

システムの安定あんていせいたかめるため、おおくのドライバはユーザ空間くうかん実行じっこうされるようにくことができる。(もしユーザ空間くうかんのドライバがクラッシュしてもカーネルはクラッシュしないが、カーネル空間くうかんのドライバがクラッシュするとカーネルもクラッシュする。)カーネル空間くうかんのドライバのれいとして、ディスクアダプタやネットワークアダプタのドライバ、グラフィックドライバ、USBFireWireのコントローラのドライバ、仮想かそう機械きかいのドライバなどがある。

共有きょうゆう資源しげん保護ほご[編集へんしゅう]

マルチプロセッサのマシンを安全あんぜんうごかすために(ファイル、データ構造こうぞうなど)共有きょうゆう資源しげんへのアクセスは、どういちあいだのうちにリソースが改変かいへんされないように直列ちょくれつしなければならない。同時どうじ発生はっせいてきなアクセスをふせぐための手法しゅほうとして不可分ふかぶん操作そうさスピンロッククリティカルセクション排他はいた制御せいぎょ、serializing tokenをもちいることができる。

歴史れきし[編集へんしゅう]

NeXTしゃ時代じだい[編集へんしゅう]

もともとNeXTSTEP OSのためにNeXTによって開発かいはつされたXNUは、カーネギーメロン大学だいがく開発かいはつしたMachカーネル2.54.3BSDコンポーネント付加ふかし、Driver Kitばれるドライバを記述きじゅつするためのオブジェクト指向しこうAPIをわせたハイブリッドカーネルであった。

Apple買収ばいしゅう[編集へんしゅう]

NeXTがAppleに買収ばいしゅうされたのちMachコンポーネントは3.0へ、BSDコンポーネントFreeBSDプロジェクトに由来ゆらいするコードへとアップグレードされ、Driver KitはI/O Kitばれるドライバを記述きじゅつするためのC++ APIにえられた。

K32/K64[編集へんしゅう]

XNUはMac OS X 10.6 Snow Leopard(Darwinバージョン10)から、K32とばれる32ビットのバージョンとK64とばれる64ビットのバージョンの2つになった[3]。K32は64ビットアプリケーションをユーザランドで実行じっこうできる。Mac OS X 10.6であたらしくなったのは、XNUが64ビットのカーネル空間くうかん実行じっこうできるようになったことである。K64はK32とくらべていくつかの利点りてんがある[4]

  • じつメモリとして32GBよりおおいRAMをあつかうことができる。
  • よりおおきなキャッシュバッファがあつかえ、潜在せんざいてきなI/Oパフォーマンスが向上こうじょうする。
  • 非常ひじょうおおきなDMAバッファがいくつかあっても、すべてのデバイスを64ビット空間くうかん配置はいちでき、高性能こうせいのうなネットワークデバイスや複数ふくすうGPU使つかったときのパフォーマンスが向上こうじょうする。

64ビットカーネルをサポートする機種きしゅで、6と4キーをつづけて起動きどうするとK64で起動きどうできる[5]。K64は32ビットアプリケーションを実行じっこうできるが、32ビットカーネル機能きのう拡張かくちょう (KEXT) は実行じっこうできないので、これらをめるようにするにはK64に移植いしょくしなければならない。

脚注きゃくちゅう[編集へんしゅう]

  1. ^ Porting UNIX/Linux Applications to Mac OS X: Glossary”. Apple Computer (2005ねん). 2009ねん3がつ27にち閲覧えつらん
  2. ^ iPhone processor found: 620MHz ARM CPU” (2007ねん7がつ1にち). 2008ねん1がつ6にち閲覧えつらん
  3. ^ Mac OS X 10.6 Snow Leopard: the Ars Technica review, page 5
  4. ^ What's New in Mac OS X: Mac OS X v10.6
  5. ^ Mac OS X Server v10.6: Starting up with the 32-bit or 64-bit kernel

外部がいぶリンク[編集へんしゅう]

  • XNU: The Kernel - kernelthread.comによる、XNUコンポーネントの概要がいよう
  • Inside the Mac OS X Kernel - 'This talk intends to clear up the confusion by presenting details of the Mac OS X kernel'