Advertisement

Linux内核学习笔记 -19 实践内存映射基础 - 上

阅读量:

mmap作为一种内存映射文件的途径,能够将文件内容映射至进程的地址空间,从而在文件磁盘位置与进程虚拟地址之间建立起一一对应的关系。通过这种方式,进程只需访问对应的虚拟地址即可直接获取文件中的数据。

该映射方式的最大优势在于使进程能够直接操作内存,从而避免了频繁调用read/write等系统接口所带来的性能损耗。需要特别指出的是,mmap本身并不实际分配物理内存,其核心任务是为进程的映射区域创建相应的虚拟地址页表项。

从图示可以看出,进程的虚拟地址空间由多个独立的虚拟内存区域组成。如图中所展示的text段、初始数据段、bss段、堆区以及栈区,均属于不同的虚拟内存区域。而用于支持内存映射功能的地址空间,则位于堆与栈之间的未使用区域之中。

Linux内核中,vm_area_struct结构被用来描述一个独立的虚拟内存区域。由于各个虚拟内存区域的功能和内部机制存在差异,因此每个进程通常会使用多个vm_a

全部评论 (0)

还没有任何评论哟~