linux-kernel - VM_IO 和 VM_RESERVED 之间的区别

标签 linux-kernel virtual-memory

vma_flags VM_IOVM_RESERVED 之间有什么区别?应该如何使用它们?
Linux内核源码中的注释很困惑

http://lxr.free-electrons.com/source/include/linux/mm.h?v=3.4;a=arm#L104
http://lxr.free-electrons.com/source/include/linux/mm.h?v=3.4;a=arm#L96

#define VM_IO           0x00004000      /* Memory mapped I/O or similar */
#define VM_RESERVED     0x00080000      /* Count as reserved_vm like IO */

谢谢

最佳答案

来自:http://www.makelinux.net/ldd3/chp-15-sect-1

VM_IO 将 VMA 标记为内存映射 I/O 区域。除其他外,VM_IO 标志可防止该区域包含在进程核心转储中。
VM_RESERVED 告诉内存管理系统不要尝试换出此VMA;它应该在大多数设备映射中设置。”

为了更好地了解这些演变的方式和原因以及 Linux 内核社区的建议是什么,请阅读以下 lwn 文章:

http://lwn.net/Articles/161204/
http://lwn.net/Articles/162860/


更新:
VM_RESERVED 标志已停止使用。请参阅 Linus 的 patch

关于linux-kernel - VM_IO 和 VM_RESERVED 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22316289/

相关文章:

linux - 给定 linux 内核模块中的页面指针,如何获取分配它的 NUMA 节点 ID?

c - 在什么情况下我们在 mmap 中将文件描述符设置为 -1?

c - 换入换出页面后,使用页映射表访问物理地址的过程是什么

linux - ZONE_HIGHMEM 在 32 位 x86 内核地址空间中的映射

c - 虚拟内存系统、页表和TLB

linux-kernel - 是否可以从内核空间阻塞任务?

c - Linux 内核的 __is_constexpr 宏

ios - iOS 是否将 LZO 魔数(Magic Number)放在压缩内存的开头?

c++ - VirtualAlloc 的内存使用率高于预期;这是怎么回事?

c - c中变量的物理地址