【操作系统】内存管理——段页式管理方式(个人笔记)

学习日期:2024.6.24

内容摘要:简述段页式管理的原理


我们已经分别学习过了基本分段存储管理基本分页存储管理,但它们各有优缺,本章我们介绍将二者综合应用的方法——段页式存储管理。

分段和分页的优缺点分析

分页:

空间利用率高,不会产生外部碎片,只会有少量的内部碎片(定义见《连续分配管理方式》)

但不方便按逻辑模块实现信息的共享和保护

分段:

方便按照逻辑模块实现信息的共享和保护,但如果段长过大,就需要为其分配很大的连续空间,违背了非连续存储管理的“初心”,且会产生外部碎片。

分段+分页=段页式存储管理

将进程按逻辑模块分段,再将各段分页,再将内存空间分为大小相同的页框(比如图中是4KB),将各页面装入页框中。

“按逻辑分段,按大小分页”

段页式管理的逻辑地址结构
基本结构

类似分段式,但由段号、页号、页内地址(页内偏移量)组成。

段号的位数决定了每个进程最多可以分多少个段,页号位数决定了每个段最大有多少页,页内偏移量决定了页框大小是多少。

和段式存储管理一样,分段对用户是可见的,程序员编程时需要显式的给出段号和段内地址,而分页是不可见的,系统会根据段内地址自动分页号和页内偏移量,因此段页式管理的地址结构是二维的

段表和页表

每个段对应一个段表项,每个段表项由段号,页表长度、页表存放块号(页表起始地址)组成,每个段表项长度相等,段号是隐含的。(红字为与分段式存储管理的区别)

每个页面对应一个页表项,每个页表项由页号、页面存放的页框号组成,每个页表项长度相等,页号也是隐含的。(同分页存储管理的页表)

一个进程对应一个段表,但一个段表可能对应多个页表,因此一个进程可能对应多个页表。

段页式管理中的地址转换

①根据逻辑地址得到段号、页号、页内偏移量。

②判断段号是否越界,若段号S≥段表长度M,则产生越界中断,否则继续执行。

③查段表,找到对应的段表项,段表项的地址为:段表始址+S*段表项长度。

④检查页号是否越界,若页号≥页表长度,则产生越界中断,否则继续。

⑤根据页表存放块号和页号查页表,找到对应项。

⑥根据内存块号和页内偏移量得到最终物理地址。

⑦成功访问目标内存单元。

一共有三次访存,分别是查段表,查页表和访问最终内存单元。

同样可以引入快表,以段号和页号为关键字,引入后若快表命中只需要一次访存。


 内容总结自王道计算机考研《操作系统》 和 人民邮电出版社《操作系统导论》

  • 25
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值