このような32ビットカーネルを実施でき64ビットバイナリー?
質問
私OS Xボックス、カーネルは、32ビットのバイナリーなので、64ビットのバイナリ.す。
cristi:~ diciu$ file ./a.out ./a.out: Mach-O 64-bit executable x86_64 cristi:~ diciu$ file /mach_kernel /mach_kernel: Mach-O universal binary with 2 architectures /mach_kernel (for architecture i386): Mach-O executable i386 /mach_kernel (for architecture ppc): Mach-O executable ppc cristi:~ diciu$ ./a.out cristi:~ diciu$ echo $? 1
解決
CPUの切り替えることができ64ビット実行モードを32ビットがトラップへのカーネルのコンテキスト、32ビットまたはカーネルで構築されるかたちを楽しみながら理解でき渡された64ビットのユーザ空間アプリとなります。
のMacOS Xカーネルは直接参照のポインタからのユーザアプリかで、住、それ自身の個別のアドレス空間です。ユーザー-スペースポインタにioctl、例えば、最初に解決するための物理アドレスとして新しい仮想アドレスで作成したカーネルのアドレス空間です。すいかかるポインタのioctlした64ビットまたは32ビット、カーネルのない接参照で直接ます。
なので混合、32ビットまたはカーネルおよび64ビットのバイナリで、その逆も成り立ちます。ることができませんこれまでの32ビットまたは図書館の64ビットアプリのポインタを渡しい切り捨てられます。MacOS X用品以上の枠組みの両方の32ビット版および64ビット版バージョンの各リリース。
他のヒント
なのにカーネルとされるバイナリー.このプロセッサー
バイナリは通図書館機能と必要と64bit.とする必要がある場合にはシステムを作るのでその責任への対応という事実その64bitでのカーネルは32.
でも、それだけではありませんもいて安心です。
ませんのでご注意 すべての 32ビットカーネルできるのは64-bitプロセス。Windows確かなことは見たことがありませんで行うプログラムを利用しています。.
の32ビットまたはカーネルできる荷重や64ビットのバイナリが一部または64ビットコードをメモリマッピングプログラムの負荷やその他の64ビット。
しかし、スケジューラや他の多くのOS業んな仕事が求められるため、64ビットモードに対応するため、その他の問題でスイッチプロセッサーの32ビットモードの後必要に応じて対応ドライバー、タスク、メモリの割り当ておよびマッピング、障害等に
実際、多くのものOSならないものいずれか高速走行で64ビットOSではない重データプロセッサー、およびその部分する(ストリーム、ディスクI/Oなど)が変換される64ビット(プラグインのOSとにかく).
その裸カーネル本体のだろうなタスクスイッチの他、などまたは64ビット.
この場合ほとんどの人たちが走り32ビットまたはアプリで、モードの切り替えだけではない、必要なもののことになるオーバヘッド操作では時間がかかることがあります。
-アダム
るELF32ファイルを含むことができ、64ビットの指示および実行または64ビットモードになります。だけであとはその組織のヘッダおよび記号で32bitます。記号のテーブルオフセットを32ビット.シンボルテーブルエントリは32ビット幅。ファイルの両方を含む64ビットコードの32ビットまたはコードされるものでは32ビットまたはELFファイルにじで64ビットregistorsのための内部算出します。mach_kernelな実行形式にまとめたものです。利点を得られるので、あなたは32ビットまたはドライバELFsでリンクします。合意のポインタにある以下の4GBsその他のリンクELFバイナリではありません。
のカーネルを64ビットだけを有効に活用するカーネルの拡張機能は、通常、ドライバーが64ビットとしています。実際、する必要は全64ビットカーネルの拡張子や、どの場合)すべての32ビットのなんたるれている必要があるネイティブアーキテクチャのを含んでいます。