APUE-内存管理-内存隔离-分段-分页
内存隔离
- 程序是运行在内存中,不同程序之间需要做地址隔离,不然恶意程序会修改其他程序的数据,不好的程序会越界修改变量。
- 因此,内存需要对进程进行隔离,让每个进程拥有独立的虚拟空间
分段
内存映射
- 根据程序所需空间大小,在虚拟内存空间划分出一定的区域大小
- 然后在实际物理内存中相应的划分同样的大小的内存空间
- 最后通过地址映射,连接虚拟内存地址和实际物理地址
分页
分页
- 但是分段并没有解决内存使用效率的问题
- 如果存在大段程序,会造成频繁的磁盘访问操作,影响速度
- 因此,考虑到程序运行的颗粒度和局部性,提出分页的思想
内容
- 分页是把内存地址分成固定大小的页,大部分为4KB,是由硬件决定
- 把进程数据安页划分后,将常用的数据和代码页加载到内存中,
- 不常用的保存在磁盘中,等用到的时候再去加载出来
不同页的名字
- 虚拟内存的页,叫做虚拟页
- 实际物理内存的页,叫做物理页
- 磁盘的页,叫做磁盘页
- 以上,通过内存映射实现内存共享
MMU内存管理-页保护
- 分页还有一个好处就是内存数据的保护,
- 每个页都有其权限,当越界时,系统会发出警告
- 每个系统都会有一个额MMU内存管理单元来进行页映射和管理