段页式存储管理
页式存储管理、段式存储管理、段页式存储管理 都是管理进程内存空间的(把进程的内存空间映射到物理的内存空间中)
Question
操作系统是如何管理进程的空间的呢?
页式存储管理
- 将进程逻辑空间等分成若干大小的页面
- 相应的把物理内存空间分成与页面大小的物理块
- 以页面为单位把进程空间装进物理内存中分散的物理块
- 观察上图,由于页面大小在节点中产生了
内存碎片
,所以页面大小应该适中,过大会难以分配,过小内存碎片会过多。 - 页面大小通常是512B ~ 8K,通过页式存储管理就可以把进程的逻辑空间的每个页面都放在内存的物理块里面去。但是我们如何知道进程的某一个页面是分配到哪一个字块里去呢?因此我们要了解
页表
。页表
是记录进程逻辑空间与物理空间的映射。 页表
存储的映射关系图解页式
存储管理的缺点- 在现代计算机系统中,可以支持非常大的逻辑地址空间(2^32 ~ 2^64),这样,页表就变得非常大,要占用非常大的内存空间,比如 具有32位逻辑地址空间的分页系统,规定页面大小为4KB,则在每个进程页表中的页表项可达1M(2^20)个,如果每个页表项占用1Byte,故每个进程仅仅页表就要占用1MB的内存空间。
- 总结
- 将进程逻辑空间等分成若干大小的页面
- 相应的把物理内存空间分成与页面大小的物理块
- 以页面为单位把进程空间装进物理内存中分散的物理块
- 需要注意的事,如果有一段连续的逻辑分布在多个页面中,将会大大降低执行效率
段式存储管理
- 将进程逻辑空间划分成若干段(非等分)
- 段的长度由连续逻辑的长度决定
- 主函数MAIN、子程序段X、子函数Y等
- 图示
页式存储与段式存储的差异与共同点
- 共同点
- 段式存储和页式存储都离散地管理了进程的逻辑空间
- 差异
- 页是物理单位,段是逻辑单位
- 分页是为了合理利用空间,分段是满足用户要求
- 页大小由硬件固定,段长度可动态变化
- 页表信息是唯一的,段表信息是二维的
段页式存储管理
- 介绍
- 分页可以有效提高内存利用率(虽然存在页内碎片)
- 分段可以更好满足用户需求
- 两者结合,形成段页式存储管理
- 主要逻辑
- 先将逻辑空间按段式管理分成若干段
- 再把段内空间按页式管理等分成若干页
- 图示
- 页地址
- 段地址
- 段页地址
- 页地址、段地址、段页地址图示总结