Day17 探访 mmap( )

此文章会在未来继续补完

前言

前几天我们讲了虚拟记忆体,就提到了在系统内部管理虚拟记忆体的结构VMA,并且讲解了VMA是放在 mm_struct 内部,并且利用链表与红黑树管理VMA,也讲了一些操作VMA的方式,与c语言常用的函数 malloc() 与跟他长得很类似的一些函数。

mmap

mmap 是一种虚拟记忆体映射文件的方法,也就是将一个文件或是其他对象映射到行程的定址空间,实现文件的磁碟地址与空间中一段虚拟地址的一一对应关系,建立好映射关系之後,对於文件的读写变只要针对已经映射好的这个区域读写就可以完成目标了。

如同前几天所说的, Linux 会利用 vm_area_struct 表示某段独立的虚拟记忆体区域,因为不同的区域会有不同的性质,所以会用到多个表示不同类型的虚拟记忆体区域。如下图来自此

原理与步骤

mmap 完成记忆体映射的过程,可以分成三个阶段:

  1. 行程开始映射,并且在虚拟记忆体为映射分配区域

  2. 调用 mmap 实现文件物理地址和行程虚拟地址的一一映射关系。

  3. 行程实际对该映射空间存取,造成缺页异常(page fault),此时才正式将文件内容移至实体记忆体。

优点

ref


<<:  IT 铁人赛 k8s 入门30天 -- day18 Task Configure Default Memory Requests and Limits for a Namespace

>>:  Vaadin 对话视窗 Dialog - day17

[Day 16] MySQL下载注意事项(Mac版)

其实下载流程非常的简单,只需要搜寻MySQL下载 MySQL community Server 和M...

DAY11 - 第一个小范例 : LineBot 自动回话

前言 今天是铁人赛的第十一天,开始进入新的阶段啦 从这边开始会写一些我自学过程中写过的范例 申请 L...

建立第一个RESTful api server(重构篇)-1 (Day16)

在之前的开发过程中,会发现整个main.go越来越长,在阅读理解上会相对没有那麽直觉且快速,因此接下...

Real Microsoft DA-100 Dumps - Pass DA-100 Exam With Ease

Actual Microsoft DA-100 Dumps – Quickest Way to Ge...