arm64 memory layout

从kernel的.config中可以知道kernel只支持4k/16k/64K的page size
# CONFIG_ARM64_4K_PAGES is not set
# CONFIG_ARM64_16K_PAGES is not set
CONFIG_ARM64_64K_PAGES=y
# CONFIG_ARM64_VA_BITS_42 is not set
CONFIG_ARM64_VA_BITS_48=y
CONFIG_ARM64_VA_BITS=48

va 支持39bit和48 bit。我们这里明显用的是4k/48bit的配置

如果va=39,则user 和 kernel 分别是512GB
AArch64 Linux memory layout with 4KB pages + 3 levels:

Start            End            Size        Use
-----------------------------------------------------------------------
0000000000000000    0000007fffffffff     512GB        user
ffffff8000000000    ffffffffffffffff     512GB        kernel

如果va=48,则user和kernel 分别是256TB
AArch64 Linux memory layout with 4KB pages + 4 levels:

Start            End            Size        Use
-----------------------------------------------------------------------
0000000000000000    0000ffffffffffff     256TB        user
ffff000000000000    ffffffffffffffff     256TB        kernel
下面是kernel实际跑起来的memory 配置,可以看到kernel是从0xffff 0000 0000 0000 到0xffff842ffc000000 只用了132TB

[    0.000000] Virtual kernel memory layout:
[    0.000000]     modules : 0xffff000000000000 - 0xffff000008000000   (   128 MB)
[    0.000000]     vmalloc : 0xffff000008000000 - 0xffff7dffbfff0000   (129022 GB)
[    0.000000]       .text : 0xffff000008080000 - 0xffff000008b20000   ( 10880 KB)
[    0.000000]     .rodata : 0xffff000008b20000 - 0xffff000008f80000   (  4480 KB)
[    0.000000]       .init : 0xffff000008f80000 - 0xffff0000090d0000   (  1344 KB)
[    0.000000]       .data : 0xffff0000090d0000 - 0xffff0000092a5a00   (  1879 KB)
[    0.000000]        .bss : 0xffff0000092a5a00 - 0xffff00000992d9f0   (  6688 KB)
[    0.000000]     fixed   : 0xffff7dfffe7fd000 - 0xffff7dfffec00000   (  4108 KB)
[    0.000000]     PCI I/O : 0xffff7dfffee00000 - 0xffff7dffffe00000   (    16 MB)
[    0.000000]     vmemmap : 0xffff7e0000000000 - 0xffff800000000000   (  2048 GB maximum)
[    0.000000]               0xffff7e0000000000 - 0xffff7e10bff00000   ( 68607 MB actual)
[    0.000000]     memory  : 0xffff800000000000 - 0xffff842ffc000000   (4390848 MB)


如果是64kpage,则user 和 kernel分配如下:
AArch64 Linux memory layout with 64KB pages + 2 levels:

Start            End            Size        Use
-----------------------------------------------------------------------
0000000000000000    000003ffffffffff       4TB        user
fffffc0000000000    ffffffffffffffff       4TB        kernel


AArch64 Linux memory layout with 64KB pages + 3 levels:

Start            End            Size        Use
-----------------------------------------------------------------------
0000000000000000    0000ffffffffffff     256TB        user
ffff000000000000    ffffffffffffffff     256TB        kernel


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值