
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
这个认识是没错的,是对页表的一个功能性和概念性认识,读者在阅读下方的页表具体技术细节时也应该要时刻明确页表的作用本质上就是哈希映射。但是这个认识太浅了,页表作为虚拟地址空间中一个重要的模块,其实是一个非常复杂的东西,涉及到了权限,操作系统管理内存的方式和单个虚拟地址的划分等知识,下面就来进行讲解(先进行原理的说明,再分析源代码的具体实现)。

从本篇文章开始将讲解虚拟地址空间的实现的具体技术细节,会涉及到一部分的Linux源代码分析,可能会比较枯燥,希望读者保持耐心,在此处还要进行说明的是:虚拟地址空间机制贯穿了整个操作系统中的几乎所有概念,因此本章会涉及到比较多的操作系统概念,比如进程,线程,文件系统,MMU....,所以本章并不建议没有系统的学习过操作系统的读者阅读,又或者是可以只挑自己可以理解的部分进行阅读。
如果你了解过操作系统,那么虚拟地址空间一定会是一个让你非常迷惑的点,作为一个抽象的概念,虚拟地址空间在操作系统中有着无与伦比的地位,想要学明白操作系统管理内存的方法,理解虚拟地址空间就是必须的。而虚拟地址的抽象性就意味着其必然是非常难理解的,比如现在提出一个问题:现在一款大型游戏动辄就是几百G,但是电脑的内存条撑死了就只有十多G,十多G的内存是怎么运行起几百G的游戏的呢(后面的文章将会回答该问题)
在编程中,指针与地址是同一个概念,因此可以先从地址的角度理解指针。编程中的地址可以说是对实际生活中地址的抽象,比如在收发快递时,快递员通过提供的地址,就可以准确的定位到你家的位置。对应到编程中,可以说操作系统对每字节的内存空间都进行了编号,通过这个编号,就可以准确定位到每字节的内存空间,这个编号,就是所谓的指针,并且我们在大多数情况下并不关注指针本身,而是关注通过这个指针能够找到的资源数据。然后很







