1. 保护
    1. kaslr
  2. 内存

保护

kaslr

没开 kaslr 时, page_offset_base 是常量 0xffff888000000000, 开了 kaslr 后, 会在 kernel_randomize_memory() 中加上一个随机偏移, 这个偏移对齐 PUD_MASK, 即 $2^{30}$

entropy = remain_entropy / (ARRAY_SIZE(kaslr_regions) - i);
prandom_bytes_state(&rand_state, &rand, sizeof(rand));
entropy = (rand % (entropy + 1)) & PUD_MASK;
vaddr += entropy;
*kaslr_regions[i].base = vaddr;

#define PUD_MASK    (~(PUD_SIZE - 1))
#define PUD_SIZE    (1UL << PUD_SHIFT)
#define PUD_SHIFT   30

在题目里面有如下写法,是因为内存很小所以可以直接以获得到基址吗?

    vmemmap_base = slab_vmemmap_addr & 0xfffffffff0000000;  // 问号

内存

https://blog.csdn.net/pwl999/article/details/112055498

vmalloc

buddy