页式存储管理
最后更新于:2022-04-02 04:05:31
[TOC]
## 概述
- 主存的字,字块是相对物理设备的定义
- 页面则是相对逻辑空间的定义
## 页式存储管理
- 将进程逻辑空间等分成若千大小的页面
- 相应的把物理内存空间分成与页面大小的物理块
- 以页面为单位把进程空间装进物理内存中分散的物理块
>[warning] 有一段连续的逻辑分布在多个页面中,将大大降低执行效率
![](https://cdn.jsdelivr.net/gh/idcpj/imgs/1599980995844-12A5CD1E-59E7-459C-8854-9016D3FA7D71.png)
**页面大小通常是512B~8K**
>[warning] 页面大小应该适中,过大难以分配,过小内存碎片过多
### 页表
页表记录进程逻辑空间与物理空间的映射
![EEF09D61-D543-4925-8177-67913DB6C622.png](http://img04.sogoucdn.com/app/a/100520146/03266f9ffe0f1aff06b0645e028ecf88)
**缺点**
现代计算机系统中,可以支持非常大的逻辑地址空间(2^32~2^64),这样,页表就变得非常大,要占用非常大的内存空间,如,具有32位逻辑地址空间的分页系统,规定页面大小为4KB,则在每个进程页表中的页表项可达1M(2^20)个,如果每个页表项占用1Byte,故每个进程仅仅页表就要占用1MB的内存空间。
**解决方案:多级页表**
![D633921E-4FD2-415B-A6A5-B72BECD6C4B0.png](http://img02.sogoucdn.com/app/a/100520146/8ff411d33bed907a59765597835f7498)
## 段式存储管理
- 将进程逻辑空间划分成若千段(非等分)
- 段的长度由连续逻辑的长度决定
- 主函数MAN、子程序段X、子函数Y等
![BD4E9039-E357-4AC2-B7E9-856C55EF089A.png](http://img02.sogoucdn.com/app/a/100520146/471023d35c16895fc3d88f9de919f333)
段式与页式
1. 段式存储和页式存储都离散地管理了进程的逻辑空间
1. 页是物理单位,段是逻辑单位
2. 分页是为了合理利用空间,分段是满足用户要求
3. 页大小由硬件固定,段长度可动态变化
4. 页表信息是一维的,段表信息是二维的
## 段页式存储管理
1. 分页可以有效提高内存利用率(虽然说存在页内碎片)
2. 分段可以更好满足用户需求
3. 两者结合,形成段页式存储管理
**方法**
1. 先将逻辑空间按段式管理分成若千段
2. 再把段内空间按页式管理等分成若干页
3. 结合两个地址来形成段页地址
![703C21E8-4462-439D-BC9A-5C0FDC557954.png](http://img04.sogoucdn.com/app/a/100520146/3dfdaddb532462a00776dc8b79f38663)
## 对比三种方式分配内存的情况
![7B0AADA8-A5F5-4C5B-B40D-E911A07156D0.png](http://img03.sogoucdn.com/app/a/100520146/9fc0fbc84e7adb3d255cee45b63e461b)
';