Movatterモバイル変換


[0]ホーム

URL:


コンテンツにスキップ
Wikipedia
検索

XNU

出典: フリー百科事典『ウィキペディア(Wikipedia)』
この記事は更新が必要とされています。
この記事には古い情報が掲載されています。編集の際に新しい情報を記事に反映させてください。反映後、このタグは除去してください。2025年2月
この記事は検証可能参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。このテンプレートの使い方
出典検索?"XNU" – ニュース ·書籍 ·スカラー ·CiNii ·J-STAGE ·NDL ·dlib.jp ·ジャパンサーチ ·TWL
(2020年12月)
XNU
開発元Apple
初版1996年12月 (28年前) (1996-12)
リポジトリウィキデータを編集
プログラミング
言語
C C++
対応OSDarwin,iOS,macOS, Unix系
サポート状況開発中
種別カーネルハイブリッドカーネル
ライセンスApple Public Source License 2.0
公式サイトhttps://github.com/apple-oss-distributions/xnu
テンプレートを表示

XNUは、Appleが取得・開発したオペレーティングシステムカーネルである。macOSに用いられ、オープンソースソフトウェアDarwinの一部として公開されている。XNUはX is NotUnixの略[1]

デザイン

[編集]

XNUはモノリシックカーネルマイクロカーネルの特徴を併せもつハイブリッドカーネルで、マイクロカーネルが可能にするメッセージパッシングのモジュール性やより広範なメモリ保護、モノリシックカーネルがもつ実行速度の保持など、両方の技術を有効に利用することを試みている。

XNUは現在、ARM[2]IA-32x64PowerPCベースのプロセッサにおいて、シングルプロセッサとSMPの両方で動作する。

  • XNUカーネルの図
    XNUカーネルの図
  • Noyau xnu simplifié
    Noyau xnu simplifié

Mach

[編集]

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

Machは、カーネルスレッドプロセス管理、プリエンプティブ・マルチタスク、メッセージパッシング(プロセス間通信)、メモリ保護仮想記憶ソフトリアルタイム処理のサポート、カーネルデバッグのサポート、コンソールI/Oを提供する。

  • XNU カーネル
    XNU カーネル
  • XNUの図
    XNUの図

BSD

[編集]

カーネルのBSDの部分は、POSIXAPI(BSDシステムコール)、Machタスク上でのUnixプロセスモデル、基本的なセキュリティーポリシー、ユーザIDとグループID、アクセス権、プロトコルスタック仮想ファイルシステムHFS+ /APFSなどいくつかのローカルファイルシステム、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」および「OPENSTEP」を参照

もともとNeXTSTEPOSのためにNeXTによって開発されたXNUは、カーネギーメロン大学が開発したMachカーネル2.54.3BSDコンポーネントを付加し、Driver Kitと呼ばれるドライバを記述するためのオブジェクト指向APIを組み合わせたハイブリッドカーネルであった。

Apple買収後

[編集]
→詳細は「macOS」、「Darwin」、および「iOS」を参照

NeXTがAppleに買収された後、Machコンポーネントは3.0へ、BSDコンポーネント4.4BSD-Lite2FreeBSDプロジェクトに由来するコードへとアップグレードされ、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

外部リンク

[編集]
バージョン
macOS logo
アプリケーション
廃止
ユーティリティ
廃止
テクノロジーおよび
インタフェース
非推奨
廃止
開発ツール
Unix系
Linux
Android
SHR
Maemo-Moblin
その他
その他
Windows
Nokia
ゲーム機
その他
関連プラットフォーム
関連項目
https://ja.wikipedia.org/w/index.php?title=XNU&oldid=103714928」から取得
カテゴリ:
隠しカテゴリ:

[8]ページ先頭

©2009-2025 Movatter.jp