XNU

From Wikipedia, the free encyclopedia

初版 1996年12月 (29年前) (1996-12)
最新版
xnu-11215.1.10 / 2024年9月25日 (18か月前) (2024-09-25)
XNU
開発元 Apple
初版 1996年12月 (29年前) (1996-12)
最新版
xnu-11215.1.10 / 2024年9月25日 (18か月前) (2024-09-25)
リポジトリ ウィキデータを編集
プログラミング
言語
C C++
対応OS Darwin, iOS, macOS, Unix系
サイズ 20.5MB
サポート状況 開発中
種別 カーネルハイブリッドカーネル
ライセンス Apple Public Source License 2.0
公式サイト https://github.com/apple-oss-distributions/xnu
テンプレートを表示

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

Mach

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

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

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

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

BSD

カーネルのBSDの部分は、POSIX API(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を用いることができる。

歴史

脚注

外部リンク

Related Articles

Wikiwand AI