💨
メモリマップ
メモリマップ
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にはカーネルのプログラムコードが入ります。
Discussion