gpt4 book ai didi

linux - 用户进程的有效地址空间是什么? (OS X 和 Linux)

转载 作者:IT王子 更新时间:2023-10-29 01:02:30 27 4
gpt4 key购买 nike

mmap 系统调用文档说如果出现以下情况,该函数将失败:

MAP_FIXED was specified and the addr argument was not page aligned, or part of the desired address space resides out of the valid address space for a user process.

我在任何地方都找不到说明什么 是要映射的有效地址的文档。 (我有兴趣在 OS X 和 Linux 上执行此操作,理想情况下相同的地址对两者都有效...)。

最佳答案

Linux 内核为自己保留了部分虚拟地址空间,用户空间(几乎)无法访问并且无法映射任何内容。您正在寻找所谓的“用户空间/内核空间拆分”。

在 i386 arch 上默认是 3G/1G 一个——用户空间获得较低的 3 GB 虚拟地址空间,内核获得较高的 1 GB,此外还有 2G/2G 和 1G/3G split :

config PAGE_OFFSET
hex
default 0xB0000000 if VMSPLIT_3G_OPT
default 0x80000000 if VMSPLIT_2G
default 0x78000000 if VMSPLIT_2G_OPT
default 0x40000000 if VMSPLIT_1G
default 0xC0000000
depends on X86_32

在 x86_64 上,用户空间位于(当前)48 位虚拟地址空间的下半部分:

/*
* User space process size. 47bits minus one guard page.
*/
#define TASK_SIZE_MAX ((1UL << 47) - PAGE_SIZE)

关于linux - 用户进程的有效地址空间是什么? (OS X 和 Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5203748/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com