离散分配:允许将一个进程分散地分配到许多不相邻接的分区中,高效利用分区空间,不必再进行紧凑的方式。
离散分配的三种方式
- 分页存储管理方式:将用户程序的地址空间按“页”或“块”进行分割(固定大小,如1kB),同样地,将内存空间也按“页”或“块”进行划分,这样便可以分散地将用户程序的任一页放入内存空间中
- 分段存储管理方式:将用户程序的地址空间分为若干个大小不同的段,每段都有一组相对完整的信息。
- 段页式存储管理方式:以上两种方式的结合,目前应用广泛。
分页存储管理方式
1. 页面和物理块
- 页面:进程的逻辑地址分为若干个页,并给予编号(0,1)。内存的物理地址分为若干个块,同样也有编号(0#,1#)。一个物理块可以装入若干个逻辑页。
- 页内碎片:由于最后一页经常填不满一个块所产生的不可利用的空间。
- 页面大小:
- 太小:空间利用率高,但是会有很多页面,导致页表过长,页面换入换出频繁,占用大量内存。
- 太大:空间利用率低,减少页面,缩短页表,提高换入换出速度,但是会增加页内碎片。
- 大小的选择:大小应该是2的幂,通常为 2KB ~ 8 KB
2. 地址结构
3. 页表
- 解释:系统为进程创建一张页面映射表,可以将页号对应到物理块。
地址变换机构
- 基本任务:完成逻辑地址到物理地址的转换。
- 因为页内地址和物理块内的地址是一一对应的,所以实际上是将页转化为物理块号。借助于页表。
- 页表寄存器
- 页表始址: 页表在内存中的起始位置
- 页表长度: 页表的长度
- 变换过程:
- 先将逻辑地址转化为页号 p 和页内地址 d。页号用来检索页表。
- 如果 p 大于 页表长度,则发生越界中断
- 否则得到物理块号 = 页表始址 + 页表长度 × 页号
- 将物理块号放入物理地址寄存器,再将页内地址送入物理地址寄存器
- 逻辑地址到物理地址的变换结束
- 具有快表的地址变换机构
- 出现原因:基本地址变换机构是处理机的速度降低了 1/2(存取一个数据时要访问两次内存)
- 快表:特殊的高速缓存寄存器