操作系统:9、存储管理之页式存储管理
进程的存储管理
进程内存空间管理主要以下方三种进行:
- 页式存储管理
- 段式存储管理
- 段页式存储管理
三种方法本质上都是将进程的内存空间映射到物理内存空间中去。
页式存储管理
字块
是相对物理设备的定义
页面
则是相对逻辑空间的定义(进程空间的定义)
页式存储管理:
将进程逻辑空间等分成若干大小的页面
相应的把物理内存空间分成与页面大小的物理块
以页面为单位把进程空间装进物理内存中分散的物理块
内存碎片:
页表:
页表是记录进程逻辑空间与物理空间映射关系的表
现代计算机系统中,可以支持非常大的逻辑地址空间(2^32 到2^64),这样,页表就变得非常大,要占用非常大的内存空间。
假如在32位
逻辑地址空间的分页系统,规定页面大小为4KB
,则在每个进程页表中的页表项可达1M(2^20)
个,如果每个页表项占用1Byte
,故每个进程仅仅页表就要占用1MB
的内存空间。
因此就会出现一个多级页表的概念
运行时只需要把根页表加载到内存中即可,如果调用某一个字块发现二级页表没有在内存中,只需要把二级页表加载到内存里面,这样就可以按需去取页表,节省内存空间。
段式存储管理
页式存储管理若遇到一段连续的逻辑分布在多个页面中,将大大降低执行效率。因此就提出了段式存储管理。
段式存储管理将进程逻辑空间划分成若干段(非等分);
段的长度由进程的逻辑长度决定;
比如逻辑中有主函数Main,子函数X,子函数Y等,这个时候将会按照每个函数逻辑的长度,去分配逻辑空间;
段表:
段式存储和页式存储对比
段式存储和页式存储都离散地管理了进程的逻辑空间
- 页是物理空间,段是逻辑单位
- 分页是为了合理利用空间,分段是为了满足用户需求
- 页的大小由硬件固定,段长度可动态变换
- 页表信息是一维的,段表信息是二维的
段页式存储管理
段式存储和页式存储各自优势:
- 分页可以有效提高内存利用率(虽然有片内碎片)
- 分段可以更好满足用户需求
段页式管理:
先将逻辑空间按段式管理分成若干段;
再把段内空间按页式管理等分成若干页;