页式存储管理
最后更新于:2022-04-02 04:05:31
[TOC]
## 概述
- 主存的字,字块是相对物理设备的定义
- 页面则是相对逻辑空间的定义
## 页式存储管理
- 将进程逻辑空间等分成若千大小的页面
- 相应的把物理内存空间分成与页面大小的物理块
- 以页面为单位把进程空间装进物理内存中分散的物理块
>[warning] 有一段连续的逻辑分布在多个页面中,将大大降低执行效率

**页面大小通常是512B~8K**
>[warning] 页面大小应该适中,过大难以分配,过小内存碎片过多
### 页表
页表记录进程逻辑空间与物理空间的映射

**缺点**
现代计算机系统中,可以支持非常大的逻辑地址空间(2^32~2^64),这样,页表就变得非常大,要占用非常大的内存空间,如,具有32位逻辑地址空间的分页系统,规定页面大小为4KB,则在每个进程页表中的页表项可达1M(2^20)个,如果每个页表项占用1Byte,故每个进程仅仅页表就要占用1MB的内存空间。
**解决方案:多级页表**

## 段式存储管理
- 将进程逻辑空间划分成若千段(非等分)
- 段的长度由连续逻辑的长度决定
- 主函数MAN、子程序段X、子函数Y等

段式与页式
1. 段式存储和页式存储都离散地管理了进程的逻辑空间
1. 页是物理单位,段是逻辑单位
2. 分页是为了合理利用空间,分段是满足用户要求
3. 页大小由硬件固定,段长度可动态变化
4. 页表信息是一维的,段表信息是二维的
## 段页式存储管理
1. 分页可以有效提高内存利用率(虽然说存在页内碎片)
2. 分段可以更好满足用户需求
3. 两者结合,形成段页式存储管理
**方法**
1. 先将逻辑空间按段式管理分成若千段
2. 再把段内空间按页式管理等分成若干页
3. 结合两个地址来形成段页地址

## 对比三种方式分配内存的情况

';