一:背景
1. 讲故事
前段时间训练营里有朋友问 内存映射文件 是怎么玩的?说实话这东西理论我相信很多朋友都知道,就是将文件映射到进程的虚拟地址,说起来很容易,那如何让大家眼见为实呢?可能会难倒很多人,所以这篇我以自己的认知尝试让大家眼见为实。
二:如何眼见为实
1. 我想象的文件映射
在任何讨论之前,内存文件映射大概像下面这样,多个进程可以完全View一个文件,也可以 View 文件的一部分到进程的虚拟地址中,画个图大概像下面这样。

但仔细一想,这里还有很多的小细节,比如:
疑问1:到底是映射文件还是映射磁盘的物理地址 ?
疑问2:既然是后备存储,那是不是每次修改虚拟地址都要刷硬盘 ?
疑问3:内存页是4k为一个单位,文件大小不是 4k 整数倍怎么办 ?
这三个疑问我相信很多朋友或多或少都会遇到,这里我简单解答一下,后面再用 windbg 验证。
订阅专栏 解锁全文
688

被折叠的 条评论
为什么被折叠?



