虽然请求的映射地址是页起始地址,但它会使用移位了几页的地址。
我正在尝试做这样的事情:
char *mapped = mmap(base, page_size, PROT_NONE, MAP_SHARED,
file_handle, 0);
printf("Base : %p\n", base);
printf("Mapped: %p\n", mapped);
样本输出(page_size
= 4096
= 0x1000
):
Base : 0x7f22a1047000
Mapped: 0x7f22a1045000
偏移量为 2 页。这似乎也随length
. 例如,如果我尝试映射 4 页而不是一页,则输出变为:
Base : 0x7fd24d994000
Mapped: 0x7fd24d98f000
这是 5 页偏移量。
为什么会这样?