【发布时间】:2012-01-07 21:25:09
【问题描述】:
mmap() 函数应在进程虚拟地址空间和设备文件或物理内存区域之间建立映射。
进程虚拟内存布局包含以下部分:
mmap() 使用进程虚拟地址空间的哪个区域进行映射?
【问题讨论】:
标签: linux linux-kernel linux-device-driver
mmap() 函数应在进程虚拟地址空间和设备文件或物理内存区域之间建立映射。
进程虚拟内存布局包含以下部分:
mmap() 使用进程虚拟地址空间的哪个区域进行映射?
【问题讨论】:
标签: linux linux-kernel linux-device-driver
Mmap 使用“未分配内存”。
请注意,您绘制的图片不太可能用于任何 30 岁以下的 UNIX 系统。 UNIX使用在 70 年代初确实有这种内存布局,但现在情况要复杂得多,尤其是在使用共享库时。
【讨论】:
要了解今天发生的事情,请尝试(在 Linux 上)以下命令
cat /proc/self/maps
在我的机器上,它现在提供
00400000-0040c000 r-xp 00000000 08:01 1850896 /bin/cat
0060c000-0060d000 rw-p 0000c000 08:01 1850896 /bin/cat
00adc000-00afd000 rw-p 00000000 00:00 0 [heap]
7ffe843ef000-7ffe84569000 r-xp 00000000 08:01 787567 /lib/x86_64-linux-gnu/libc-2.13.so
7ffe84569000-7ffe84769000 ---p 0017a000 08:01 787567 /lib/x86_64-linux-gnu/libc-2.13.so
7ffe84769000-7ffe8476d000 r--p 0017a000 08:01 787567 /lib/x86_64-linux-gnu/libc-2.13.so
7ffe8476d000-7ffe8476e000 rw-p 0017e000 08:01 787567 /lib/x86_64-linux-gnu/libc-2.13.so
7ffe8476e000-7ffe84773000 rw-p 00000000 00:00 0
7ffe84773000-7ffe84792000 r-xp 00000000 08:01 790578 /lib/x86_64-linux-gnu/ld-2.13.so
7ffe8495e000-7ffe84961000 rw-p 00000000 00:00 0
7ffe84990000-7ffe84992000 rw-p 00000000 00:00 0
7ffe84992000-7ffe84993000 r--p 0001f000 08:01 790578 /lib/x86_64-linux-gnu/ld-2.13.so
7ffe84993000-7ffe84994000 rw-p 00020000 08:01 790578 /lib/x86_64-linux-gnu/ld-2.13.so
7ffe84994000-7ffe84995000 rw-p 00000000 00:00 0
7fffdbaac000-7fffdbacd000 rw-p 00000000 00:00 0 [stack]
7fffdbb66000-7fffdbb67000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
它显示了执行cat命令的进程的内存映射。