基本分页存储管理方式

操作系统内存空间管理可以分为连续分配管理方式非连续分配管理方式

连续分配管理方式又可以分为单一连续分配、固定分区分配、动态分区分配。
连续分配管理方式会形成许多的碎片,虽然可以使用拼接/紧凑技术将许多碎片拼接成可用的大块空间,但代价非常大

因此提出非连续分配管理方式,非连续分配管理方式分为:

页面与物理块

分页存储管理将进程的逻辑地址空间划分成若干个大小相等的区域,称为页或页面,页面大小由地址结构决定 ,并为各页从0开始编号。

把内存的物理地址空间也分成若干个块,同样也为它们从0开始编号。称为物理块,或者页框页帧内存块物理页面

进程的每个页面分别放入一个物理块中。各个页面不必连续存放,可以放到不相邻的各个物理块中。

进程的最后一个页面可能没有一个页框那么大。分页存储管理有可能产生内部碎片,因此页框不能太大,否则可能产生过大的内部碎片造成浪费

地址结构

在这里插入图片描述
分页存储地址结构包括两部分:页号P,位移量W。

页号P = 逻辑地址 / 页面长度 (整除)
位移量W = 逻辑地址 % 页面长度(取余)

例如:在某计算机系统中,页面大小为1KB,设逻辑地址为2170B,求页号、位移量。

页号:2170/1024=2
位移量:2170%1024=122

页表

为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表。
页表通常存在PCB(进程控制块)中

一个进程对应一张页表
进程的每个页面对应一个页表项
页表记录进程页面和实际存放的内存块之间的映射关系
每个页表项的长度是相同的

在这里插入图片描述

地址交换机构

1、根据逻辑地址计算出页号,页内地址。
2、比较页号和页表长度,若页号大于页表长度,则产生越界中断(内中断),否则继续执行。
3、页表中页号对应的页表项地址 = 页表起始地址+ 页号*页表项长度,取出该页表项内容,即为内存块号。
4、计算物理地址E= 块号*页面大小+页内地址,用得到的物理地址E去访存。

物理地址=块号*页面大小+页内地址

在这里插入图片描述
例如:页面大小L 为1K字节(按字节寻址,页内偏移量占10位),页号2对应的内存块号b = 8,将逻辑地址A=2500转换为物理地址E

  • 1、计算页号,页内地址
    页号=2500/1024=2;页内地址=2500%1024=452

  • 2、判断页号是否越界
    页号为2,没有越界,内存块号为8

  • 计算物理地址
    物理地址E=8*1024+452=8644

显然,从物理地址取数据,需要进行两次访问内存:
1、从内存中的页表,取出块号也页内地址计算出物理地址
2、根据物理地址取出数据

为了提高速率,引入快表

快表
快表,又称联想寄存器(TLB, translation lookaside buffer ),是一种访问速度比内存快很多的高速缓存,用来存放最近访问的页表项的副本,可以加速地址变换的速度。

在这里插入图片描述

  • 在引入快表之前:

1、计算出页号、页内地址
2、检查页号合法性
3、查页表,找到页面存放的内存块号
4、根据内存块号与页内地址计算出物理地址
5、访问目标内存单元

需要进行两次访问内存

  • 在引入快表之后:

1、算页号、页内偏移量
2、检查页号合法性
3、查快表。若命中,即可知道页面存放的内存块号,可直接进行5;若未命中则进行4
4、查页表,找到页面存放的内存块号,并且将页表项复制到快表中
5、根据内存块号与页内地址得到物理地址
6、访问目标内存单元

若快表命中,只需要一次访问内存;若快表未命中,需要两次访问内存。

两级和多级页表

单级页表存在的问题:
1、页表是连续存放的,页表过大,需要很大连续空间
2、在一段时间内,并非所有页面都会用到,没有必要将整个页表常驻内存中。

为了解决第一个问题,可以将页表进行分页,使每个页面大小与内存物理块的大小相同,并对它们进行编号,然后离散的将各个页面存放在不同的物理块中,同样,为离散的页表再建立一张页表,在每个页表项中记录页表页面的物理块号,称为外层页表。

在这里插入图片描述
基本过程:
1、按照地址结构将逻辑地址拆分成三部分
2、在地址交换机构中,有存放外层页表的始址外层页表寄存器,根据外层页号查外层页表,找到下一级页表在内存中的存放位置
3、根据外层页内地址查页表,找到最终的内存块号
4、结合页内偏移量得到物理地址

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值