mmap()使用哪个进程虚拟内存布局?

时间:2011-11-28 12:01:43

标签: linux linux-kernel linux-device-driver

mmap()函数应在进程虚拟地址空间与设备文件或物理内存区域之间建立映射。

流程虚拟内存布局包含以下部分:

enter image description here

处理虚拟地址空间的哪个区域 mmap()用于映射?

1 个答案:

答案 0 :(得分:4)

要了解今天发生的事情,请尝试(在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命令的进程的内存映射。