操作系统——第三章(两级页表与分段存储)

一、两级页表

单级页表存在的问题?

问题一:页表必须连续存放,因此当页表很大时,需要占用很多个连续的页框。
问题二:没有必要让整个页表常驻内存,因为进程在一段时间内可能只需要访问某几个特定的页面。

结合图像法来进行分析:

进而引出两级页表,

两级页表如何实现地址转换?

步骤:

①按照地址结构将逻辑地址拆分成三部分
②从PCB中读出页目录表始址,再根据一级页号查页目录表,找到下一级页表在内存中的存放位置
③根据二级页号查表,找到最终想访问的内存块号
④结合页内偏移量得到物理地址

 

例题:将逻辑地址(0000000000,0000000001,111111111111)转换为物理地址(用十进制表示)。

最终要访问的内存块号为4
该内存块的起始地址为4*4096=16384
页内偏移量为1023
最终的物理地址为16384+1023=17407
 

对于单级页表的问题二 应该如何解决?

【注】1.若采用多级页表机制,则各级页表的大小不能超过一个页面。(选择题、大题常考)

2.两级页表的访存次数分析(假设没有快表机构)
第一次访存:访问内存中的页目录表
第二次访存:访问内存中的二级页表
第三次访存:访问目标内存单元   

n级页表缓存次数为(n+1)次

二、基本分段存储管理

分段

段表

问题:程序分多个段,各段离散地装入内存,为了保证程序能正常运行,就必须能从物理内存中
找到各个逻辑段的存放位置。为此,需为每个进程建立一张段映射表,简称“段表”

1.每个段对应一个段表项,其中记录了该段在内存中的起始位置(又称“基址”)和段的长度。
2.各个段表项的长度是相同的。例如:某系统按字节寻址,采用分段存储管理,逻辑地址结构为(段号16位,段内地址16位),因此用16位即可表示最大段长。物理内存大小为4GB(可用32位表示整个物理内存地址空间)。因此,可以让每个段表项占16+32=48位,即6B。由于段表项长度相同,因此段号可以是隐含的,不占存储空间。若段表存放的起始地址为M,则K号段对应的段表项存放的地址为M+K*6。

段表实现地址变换?


思路图如下:

分段与分页的最大区别是——分页中每个页的长度是相同的,分段中每个段的长度是不同的。

分段与分页管理的对比

是信息的物理单位。分页的主要目的是为了实现离散分配,提高内存利用率。分页仅仅是系统管
理上的需要,完全是系统行为,对用户是不可见的。
是信息的逻辑单位。分段的主要目的是更好地满足用户需求。一个段通常包含着一组属于一个逻
辑模块的信息。分段对用户是可见的,用户编程时需要显式地给出段名。
页的大小固定且由系统决定。段的长度却不固定,决定于用户编写的程序。
分页的用户进程地址空间是一维的,程序员只需给出一个记忆符即可表示一个地址。
分段的用户进程地址空间是二维的,程序员在标识一个地址时,既要给出段名,也要给出段内地址。

总结如下:

特点分页分段
物理单位页面
目的实现离散分配,提高内存利用率更好地满足用户需求
是否可见不可见可见
大小固定,由系统决定不固定,取决于用户编写的程序
地址空间一维二维
地址表示给出一个记忆符表示地址需要同时给出段名和段内地址表示地址

分段比分页更容易实现信息的共享和保护

三、段页式存储管理

段页式存储管理的引入

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

段表、页表

进行地址转换的思路图如下:


下一小节虚拟内存与请求分页、页面置换算法...敬请期待(* ̄︶ ̄)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白上线*^_^*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值