NOTE

3.5 段页式存储

1. 地址空间 1.1. 物理地址空间 为了更好的管理内存,操作系统将内存的的每个字节编址,形成了物理地址空间。 这个空间最大就是内存的大小 1.2. 虚拟地址空间 为了解决内存不够用的问题,操作系统的虚拟内存技术将所有的存储设备的每个字节编址,形成了虚拟地址空间,这也是进程看到的逻辑地址空间 这个

Operating System / Linux创建于 更新于 historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 地址空间

1.1. 物理地址空间

为了更好的管理内存,操作系统将内存的的每个字节编址,形成了物理地址空间。 这个空间最大就是内存的大小

1.2. 虚拟地址空间

为了解决内存不够用的问题,操作系统的虚拟内存技术将所有的存储设备的每个字节编址,形成了虚拟地址空间,这也是进程看到的逻辑地址空间 这个地址空间理论上可以达到2^CPU位数-1,当然实际范围则是MIN(内存+外存容量之和, 2^CPU位数-1)

2. 存储管理

就是进程逻辑地址空间实际的物理地址空间按什么单位划分,才能更好管理

3. 页式存储管理

将进程逻辑空间分成若干等大小的页面,将物理内存空间分成同等页面大小的物理块,以页面为单位把进程的页面装进物理内存中的页面中

3.1. 页面

进程逻辑空间的页面过大的话难以找到合适的内存块分配,过小的话会产生内存碎片,通常是512B-8K。

3.2. 页表

我们需要知道进程的页面分配到内存的哪块页面上,页面用来记录物理空间和逻辑空间的映射关系 如上图,就是把进程逻辑空间中的页面1映射到物理内存的第1个块

3.3. 问题

如果有一段连续的逻辑分布在多个页面中,将大大降低执行效率

4. 段式存储管理

将进程逻辑空间分成若干非等大小的段(段的大小由连续逻辑的大小决定),将物理内存空间分成同等段大小的物理块,以段为单位把进程的段装进物理内存中的段中

4.1. 段表

如上图,把进程逻辑地址空间的段1映射到物理内存基址为10K,段长为30K的地方

4.2. 问题

会产生内存碎片

4.3. 段 VS 页

单位 物理单位 逻辑单位
目的 为了更好的管理物理内存 为了更好的适应进程的需求
页、段大小 页大小由硬件决定 段长度可以动态变化
页、段表 页表信息是一维的 段表信息是二维的

5. 段页式存储管理

综合了页和段的优点,页可以有效提高内存利用率,段可以更好满足用户需求

先将逻辑空间按段式管理分成若干非等大小的段,再把段内空间按页式管理分成若干等大小的页,将物理内存空间分成同等页面大小的物理块,以页面为单位把进程的页面装进物理内存中的页面中

6. 参考