mmap() 使用进程虚拟内存布局的哪一部分?

发布于 2024-12-18 06:49:20 字数 220 浏览 5 评论 0原文

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

进程虚拟内存布局具有以下部分:

在此处输入图像描述

> >进程虚拟地址空间mmap()用于映射吗?

The mmap() function shall establish a mapping between a process virtual address space and a device file or physical memory region.

A process virtual memory layout has the following sections:

enter image description here

Which region of Process Virtual Address Space does mmap() use for mapping?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

余生共白头 2024-12-25 06:49:20

Mmap 使用“未分配的内存”。

请注意,您绘制的图片不太可能在任何 30 年以下的 UNIX 系统上使用。 UNIX使用在 70 年代初确实有这种内存布局,但现在情况要复杂得多,特别是在使用共享库时。

Mmap uses "unallocated memory".

Please note that the picture you drew is unlikely to be used on any UNIX system that is younger than about 30 years. UNIX used do have that memory layout in the early 70s, but the picture is much more complicated nowdays, especially when using shared libraries.

比忠 2024-12-25 06:49:20

要了解今天发生的情况,请

cat /proc/self/maps

在我的机器上尝试(在 Linux 上)以下命令,它现在

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 命令的进程的内存映射。

To get an insight of what is happenning today, try (on Linux) the following command

cat /proc/self/maps

on my machine, it gives now

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]

It shows the memory map of the process executing the cat command.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文