64bit環境での32bitプロセスの動作
Rev.2を表示中。最新版はこちら。
概要
64bit環境においても、32bitプロセスを動作させることができるが、どのように動作しているか。CPU(x86)の動作モード
まずはCPUの動作モードから。
Intel64アーキテクチャのCPUには、従来のProtectedモードの他にIA-32eモードがある。IA-32eモードの中にはさらに、64bitモードと互換モードの二つのサブモードがあり、互換モードでは、Protectedモードでの32bit動作と同じ動きをする。
64bitカーネル(CONFIG_X86_64付きでコンパイルされたカーネル)は、IA-32eモードの64bitサブモードで動作し、32bitプロセスを動作させる場合は、64bitモード、互換モードを切り替えながら動作する。
動作中のサブモードはCode Segmentによって決まる。現在使用中のCode Segment DescriptorのL bitが立っていると64bitモード、クリアされていると互換モードでの動作になる。
Segment Descriptorのフォーマット
(Intel® 64 and IA-32 Architectures Software Developer’s Manualより)