💨

メモリマップ

2022/12/24に公開

メモリマップ

https://www.kernel.org/doc/Documentation/x86/x86_64/mm.rst

5段テーブルマップを使っています。
.configで
CONFIG_X86_5LEVEL=y 
が有効になっていると5段テーブルマップが使われます。

このメモリマップのアドレスはすべて仮想アドレスです。

 0000000000000000 |    0       | 00007fffffffffff |  128 TB | user-space virtual memory, different per mm
 
 ffff888000000000 | -119.5  TB | ffffc87fffffffff |   64 TB | direct mapping of all physical memory (page_offset_base)
 
 ffffffff80000000 |   -2    GB | ffffffff9fffffff |  512 MB | kernel text mapping, mapped to physical address 0
 

重要なのはこの3つ。

最初のアドレスが0の場合、ユーザー空間を意味します。
Fだとカーネル空間です。

direct mapping of all physical memoryにはカーネル変数が入ります。

kernel text mappingにはカーネルのプログラムコードが入ります。

https://mmi.hatenablog.com/entry/2017/03/21/151320

Discussion