☰
[deprecate]linux mmap 的匿名映射和设备映射
2026/10/22 6:53:47 网站建设 项目流程

1. 内存映射基础架构

1.1 虚拟地址空间布局

Linux 进程的虚拟地址空间分为用户空间(通常 32 位系统占 3GB,64 位系统占 128TB)和内核空间。用户空间通过mmap创建的匿名映射属于私有堆外内存区域,独立于brk管理的堆空间。其地址范围由内核动态分配,通常位于[stack - mmap_area]之间。

1.1.1 关键数据结构

VMA(Virtual Memory Area):内核通过struct vm_area_struct管理内存区域,包含以下核心字段:

struct vm_area_struct { unsigned long vm_start; // 虚拟地址起始 unsigned long vm_end; // 虚拟地址结束 pgprot_t vm_page_prot; // 访问权限(PROT_*) unsigned long vm_flags; // 映射标志(MAP_*) struct file *vm_file; // 关联文件(匿名映射为NULL) unsigned long vm_pgoff; // 文件偏移量(匿名映射无效) ... };

VMA 链表是内核管理虚拟内存的核心数据结构,匿名映射的 VMA 通过vm_flags设置VM_ANONYMOUS

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询