【Linux 内核 内存管理】内存映射相关数据结构 ⑥ ( 文件映射 虚拟内存区域 | vm_area_struct | vm_operations_struct | 匿名映射 虚拟内存区域 )

2023-03-30 14:30:04 浏览数 (1)

文章目录

  • 一、文件映射 虚拟内存区域
    • 1、文件映射 虚拟内存区域 的 vm_ops 成员
    • 2、文件映射 虚拟内存区域 的 vm_file 成员
    • 3、文件映射 虚拟内存区域 图示
  • 二、匿名映射 虚拟内存区域

一、文件映射 虚拟内存区域


" 文件映射 " 的 " 虚拟内存区域 " vm_area_struct 结构体 的 数据结构表示形式如下 ;

1、文件映射 虚拟内存区域 的 vm_ops 成员

vm_area_struct 结构体 中的 const struct vm_operations_struct *vm_ops; 成员 , 指向 虚拟内存操作集合 vm_operations_struct 类型的实例 ;

vm_ops 成员是 " 虚拟内存操作集合 " , 该 vm_operations_struct 结构体中封装了大量的虚拟内存操作 ;

代码语言:javascript复制
	/* Function pointers to deal with this struct. */
	const struct vm_operations_struct *vm_ops;

参考 【Linux 内核 内存管理】内存映射相关数据结构 ④ ( vm_area_struct 结构体成员分析 | vm_ops 成员 | vm_operations_struct 结构体成员分析 ) 博客 ;

2、文件映射 虚拟内存区域 的 vm_file 成员

vm_area_struct 结构体 中的 struct file * vm_file; 成员 , 指向 文件 file 类型的实例 , file 结构体中的 struct inode *f_inode; 成员 指向 文件索引节点 inode 实例 ;

vm_area_struct 结构体 中的 vm_file 成员 是 " 内存映射 “ 中的 ” 文件映射 " 类型中 被映射的 文件 , 如果是 " 匿名映射 " 类型的 " 内存映射 " , 该成员为 NULL ;

代码语言:javascript复制
	struct file * vm_file;		/* File we map to (can be NULL). */

参考 【Linux 内核 内存管理】内存映射相关数据结构 ⑤ ( vm_area_struct 结构体成员分析 | vm_pgoff 成员 | vm_file 成员 | vm_private_data ) 博客 ;

3、文件映射 虚拟内存区域 图示

二、匿名映射 虚拟内存区域


在 " 匿名映射 " 虚拟内存区域 中 , 与 " 文件映射 " 不同之处是 struct file * vm_file; 成员为空 ;

0 人点赞