Linux Kernel(2.6)の実装に関するメモ書き

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より)





最終更新 2011/03/26 02:46:00 - kztomita
(2011/03/26 02:39:38 作成)
添付ファイル
descriptor.png - kztomita
segment.jpg - kztomita


リンク
最近更新したページ
検索