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

XNU カーネル

XNUの図

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」および「OPENSTEP」を参照

もともとNeXTSTEP OSのためにNeXTによって開発されたXNUは、カーネギーメロン大学が開発したMachカーネル2.5に4.3BSDコンポーネントを付加し、Driver Kitと呼ばれるドライバを記述するためのオブジェクト指向APIを組み合わせたハイブリッドカーネルであった。
Apple買収後詳細は「macOS」、「Darwin」、および「iOS」を参照

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に移植しなければならない。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:28 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef