段页式管理

一、分段和分页的优缺点

1.分页

优点:内存空间利用率高,不会产生外部碎片,只会有少量的页内碎片

缺点:不方使按照逻辑模块实现信息的共享和保护

2.分段

优点:很方便按照逻辑模块实现信息的共享和保护

缺点:如果段长过大,为其分配很大的连续空间会很不方便。另外,段式管理会产生外部碎片

产生的外部碎片可以通过“紧凑”技术来解决,不过需要较大的时间代价

二、段页式管理

1.概念

分段+分页=段页式管理

将进程按逻辑模块分段,再将各段分页(如每个页面4KB)

再将内存空间分为大小相同的内存块/页框/页帧/物理块

进程将各页面分别装入各内存块中

2.逻辑地址结构

段页式系统的逻辑地址结构由段号、页号、页内地址(页内偏移量)组成。

32位的计算机:

0~11(12位):表示页内偏移量

12~15(4位):表示页号

16~31(16位):表示段号

段号的位数决定了每个进程最多可以分几个段

页号位数决定了每个段最大有多少页

页内偏移量决定了页面大小、内存块大小是多少

在上述例子中,若系统是按字节寻址的,则 段号占16位,因此在该系统中,每个进程最多有2^16= 64 K个段

页号占4位,因此每个段最多有2^4= 16页

页内偏移量占12位,因此每个页面\每个内存块大小为:2^12= 4096 = 4KB

“分段”对用户是可见的,程序员编程时需要显式地给出段号、段内地址。而将各段“分页”对用户是不可见的。系统会根据段内地址自动划分页号和页内偏移量。

因此段页式管理的地址结构是二维的。

3.逻辑地址——》物理地址

每个段对应一个段表项,每个段表项由段号、页表长度、页表存放块号(页表起始地址)组成。每个段表项长度相等,段号是隐含的。

每个页面对应一个页表项,每个页表项由页号、页面存放的内存块号组成。每个页表项长度相等,页号是隐含的。

硬件设施:段表寄存器——段表始址F ,段表长度 M

1.根据逻辑地址A得到段号S、页号P、页内偏移量W

2.判断段号是否越界。若S≥M,则产生越界中断,否则继续执行

3.查询段表找到对应的段表项,段表项的存放地址为:F+S*段表项长度

4.检查页号是否越界,若页号≥页表长度,则发生越界中断,否则继续执行

5.根据页表存放块号、页号查询页表,找到对应页表项

6.根据内存块号、页内偏移量得到最终的物理地址

7.访问目标内存单元

需要三次访问内存:

第一次:查询段表

第二次:查询页表

第三次:访问内存地址单元

也可引入快表机构,用段号和页号作为查询快表的关键字。若快表命中则仅需一次访存

三、总结

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值