コンテンツにスキップ

XNU

Xuất điển: フリー bách khoa sự điển 『ウィキペディア ( Wikipedia ) 』
XNU
Khai phát nguyên Apple
Sơ bản 1996 niên 12 nguyệt(27 niên tiền )(1996-12)
リポジトリ ウィキデータを編集
プログラミング
Ngôn ngữ
C C++
Đối ứng OS Darwin,iOS,macOS,Unix hệ
サポート trạng huống Khai phát trung
Chủng biệt カーネルハイブリッドカーネル
ライセンス Apple Public Source License2.0
Công thức サイト www.opensource.apple.com/
テンプレートを biểu kỳ

XNUは,Appleが thủ đắc ・ khai phát したオペレーティングシステムカーネルである.macOSに dụng いられ,オープンソースソフトウェアDarwinの nhất bộ として công khai されている. XNUはX is NotUnixの lược[1].

デザイン[Biên tập]

XNUはモノリシックカーネルマイクロカーネルの đặc trưng を tịnh せもつハイブリッドカーネルで, マイクロカーネルが khả năng にするメッセージパッシングのモジュール tính やより quảng phạm なメモリ bảo hộ,モノリシックカーネルがもつ thật hành tốc độ の bảo trì など, lạng phương の kỹ thuật を hữu hiệu に lợi dụng することを thí みている.

XNUは hiện tại,ARM[2],IA-32,x64,PowerPCベースのプロセッサにおいて, シングルプロセッサとSMPの lạng phương で động tác する.

Mach[Biên tập]

XNUの cơ sở であるMachはシンプルなマイクロカーネルであり, OSのコアを phân cát された nhu nhuyễn なプロセスとして thật hành することができる ( Machコアの thượng でいくつかのOSを bình hành して thật hành できる ). しかし, これはカーネル/ユーザモードの thiết り thế えに thời gian を tiêu phí し, またマイクロカーネルのアドレス không gian とデーモンとのあいだで hành われるメッセージのマッピングやコピーによってオーバーヘッドを sinh じることから, しばしばパフォーマンスが đê hạ してしまう. macOSでは hiệu suất hóa のために,BSDの cơ năng はMachのコアの trung に tổ み込まれた. その kết quả, Machと cổ điển đích なBSDカーネル lạng phương の lợi điểm と khiếm điểm を tịnh せもつものとなった.

Machは, カーネルスレッド,プロセスQuản lý,プリエンプティブ・マルチタスク,メッセージパッシング (プロセス gian thông tín),メモリ bảo hộ,仮 tưởng ký ức,ソフトリアルタイム処 lýのサポート, カーネルデバッグのサポート, コンソールI/Oを đề cung する.

BSD[Biên tập]

カーネルのBSDの bộ phân は,POSIXAPI( BSDシステムコール ), Machタスク thượng でのUnixプロセスモデル, cơ bổn đích なセキュリティーポリシー, ユーザIDとグループID, アクセス権,プロトコルスタック,仮 tưởng ファイルシステム,HFS/HFS+などいくつかのローカルファイルシステム,Network File System(NFS) クライアントとサーバ, ám hào hóa フレームワーク,UNIX System Vプロセス gian thông tín,auditサブシステム,Cường chế アクセス chế ngự,いくつかのlocking primitivesを đề cung する.

I/O Kit[Biên tập]

I/O Kit(Anh ngữ bản)C++のサブセットで thư かれたデバイスドライバフレームワークである.オブジェクト chỉ hướngThiết kế を dụng いており, ドライバのクラスに cộng thông する cơ năng を đề cung し, ドライバをより tảo くより thiếu ないコードで thư けるようにする. I/O Kitはマルチスレッド hóa されており,Đối xưng hình マルチプロセッシングを bảo chứng し, ホットプラグや động đích なデバイスの phối trí を khả năng にする.

システムの an định tính を cao めるため, đa くのドライバはユーザ không gian で thật hành されるように thư くことができる. ( もしユーザ không gian のドライバがクラッシュしてもカーネルはクラッシュしないが, カーネル không gian のドライバがクラッシュするとカーネルもクラッシュする. ) カーネル không gian のドライバの lệ として, ディスクアダプタやネットワークアダプタのドライバ, グラフィックドライバ,USBFireWireのコントローラのドライバ,仮 tưởng cơ giớiのドライバなどがある.

Cộng hữu tư nguyên の bảo hộ[Biên tập]

マルチプロセッサのマシンを an toàn に động かすために ( ファイル, データ cấu tạo など )Cộng hữu tư nguyênへのアクセスは, đồng nhất thời gian のうちにリソースが cải 変されないように trực liệt hóa しなければならない. Đồng thời phát sinh đích なアクセスを phòng ぐための thủ pháp としてBất khả phân thao tác,スピンロック,クリティカルセクション,Bài tha chế ngự,serializing tokenを dụng いることができる.

Lịch sử[Biên tập]

NeXT xã thời đại[Biên tập]

もともとNeXTSTEPOSのためにNeXTによって khai phát されたXNUは,カーネギーメロン đại họcが khai phát したMachカーネル2.54.3BSDコンポーネントを phó gia し,Driver Kitと hô ばれるドライバを ký thuật するためのオブジェクト chỉ hướng APIを tổ み hợp わせたハイブリッドカーネルであった.

Apple mãi thâu hậu[Biên tập]

NeXTがAppleに mãi thâu された hậu,Machコンポーネントは3.0へ,BSDコンポーネントFreeBSDプロジェクトに do lai するコードへとアップグレードされ, Driver KitはI/O Kitと hô ばれるドライバを ký thuật するためのC++APIに trí き hoán えられた.

K32/K64[Biên tập]

XNUはMac OS X 10.6 Snow Leopard( Darwinバージョン10 ) から, K32と hô ばれる32ビットのバージョンとK64と hô ばれる64ビットのバージョンの2つになった[3].K32は64ビットアプリケーションをユーザランドで thật hành できる. Mac OS X 10.6で tân しくなったのは, XNUが64ビットのカーネル không gian で thật hành できるようになったことである. K64はK32と bỉ べていくつかの lợi điểm がある[4].

  • Thật メモリとして32GBより đa いRAMを tráp うことができる.
  • より đại きなキャッシュバッファが tráp え, tiềm tại đích なI/Oパフォーマンスが hướng thượng する.
  • Phi thường に đại きなDMAバッファがいくつかあっても, すべてのデバイスを64ビット không gian に phối trí でき, cao tính năng なネットワークデバイスや phục sổ のGPUを sử ったときのパフォーマンスが hướng thượng する.

64ビットカーネルをサポートする cơ chủng で, 6と4キーを áp し続けて khởi động するとK64で khởi động できる[5].K64は32ビットアプリケーションを thật hành できるが, 32ビットカーネル cơ năng 拡 trương(KEXT) は thật hành できないので, これらを đọc み込めるようにするにはK64に di thực しなければならない.

Cước chú[Biên tập]

Ngoại bộ リンク[Biên tập]