操作系统页面置换

一、基本思想

分页存储管理是将固定分区方法与动态重定位技术结合在一起提出的一种存储管理方案,它需要硬件的支持,基本思想如下:

1. 等分内存

把整个内存划分成大小相等的许多分区,每个分区称为”块“(具有固定分区的管理思想)

分页式存储管理中,“块”是存储分配的单位

2. 等分逻辑空间

用户作业仍然相对于“0”进行编址,形成一个连续的相对地址空间

操作系统按照内存块的尺寸对用户作业的逻辑空间进行划分

用户程序相对地址空间的每一个分区称为“页”,页号编号从 0 开始

用户相对地址空间中的每一个相对地址,都可以用(页号,页内偏移)来表示,(页号,页内偏移)与相对地址是一一对应

为了加快一维地址到二维地址的转换速度,一般页的大小采用 2n

3. 建立页表

需要解决:作业装入不连续的存储块能正常运行的问题(比如,作业 A 装入第 0、5、8 块内存块)

页表:系统为了知道一个作业的某一页存放在内存中的哪一块中,建立的页、块对应关系表

一维逻辑地址转换为二维逻辑地址(页号,页内偏移)的方法:

页号 = 相对地址 / 块尺寸

页内偏移 = 相对地址 % 块尺寸

二维逻辑地址(页号,页内偏移)转换为物理地址的方法:

查页表,找到该页的物理块号

用页内偏移拼出物理地址(物理块号,页内偏移)

用户程序原封不动的进入各个内存块

指令中的相对地址重定位工作是在指令执行时执行

4. 硬件支持

分页存储管理的实现需要硬件支持

硬件需要提供页表起始地址寄存器(Pb)和页表长度寄存器(Pl)

页表起始地址寄存器保存了正在运行进程页表的首地址

页表长度寄存器保存了正在运行进程页表的长度

二、存储空间的分配和回收

1. 存储空间的分配

分页式存储管理是以块为单位进行存储分配的,每块的尺寸相同,在有存储请求时,只要系统中有足够的空闲块存在,就可以进行分配,分配哪一块都一样,无好坏之分

为了记住内存哪块是已分配的,哪块是空闲的,可以采用“存储分块表”和“位示图”的管理方法

a. 存储分块表

操作系统维持的一张表格,它的每一项与内存中的一块相对应,记录了该块的使用情况。如:内存大小为 64kB,每块大小是 4kB,总共有 16 块,那么存储分块表就有 16 个表项,记录了这 16 个块的使用情况

当有存储请求时,查存储分块表,只要表中“空闲块”总数大于请求的存储量,就可以进行分配,把表中分配出去的块的状态改为“已分配”,当作业完成归还存储块时,将相应块的状态改为“空闲”

b. 位示图

用二进制位与内存块的使用状态建立关系,该位为 0 表示对应的块空闲,该位为 1 表示已分配。二进制位的整体称为位示图

当进行块分配时,首先查看当前空闲块数能否满足作业提出的存储请求,若不能,该作业不能装入内存,否则,根据需求的块数,在位示图中找出当前值为 0 的位,把它的值改成 1,修改空闲分区总数,另外,按照位号和字节号,可以这样确定分块编号:

块号 = 字节号 * 字长 + 位号

把作业相对地址空间里的页面装入这些块,并在页表里记录页号与块号的这些对应关系,形成作业的页表

2. 存储空间的回收

在作业完成运行归还存储空间时,可以按照下面的公式,根据归还的块号计算出该块所在位示图中的位置,将该位置的 1 改为 0,实现块的回收

字节号 = 块号 / 字长

位号 = 块号 % 字长

三、地址转换与块表

1. 一维逻辑地址到二维逻辑地址的转换方法

如果把块的尺寸设计成 2 的方幂,很容易得到一个相对地址所对应的二维地址:

假设块的尺寸是 2n,将一维逻辑地址写成 2 进制形式,那么,截取它的低 n 位就是页内偏移,剩下的就是页号

2. 地址转换过程

a. 当进程运行时,系统将该进程 PCB 中页表起始地址及其长度送入页表起始地址寄存器(PB)和页表长度寄存器(Pl)

b. 系统将 CPU 给出的逻辑地址由硬件中的地址映射机制自动分成两部分:页号 p 和页内地址 d

c. 比较 p 和 Pl,若 p>= Pl,发生地址越界终端,否则进行地址映射

d. 根据页表起始地址寄存器 Pb 和 p,找到也表中相应表项,即:找到页号 p 的物理块号 p'

e. 将 p' 与 d 拼在一起形成内存物理地址

3. 块表

在分页式存储管理中,每一个作业都有自己的页表。用户作业相对地址空间划分成多少页,页表就有多少表项,表项按页号顺序排列

页表的构成是应该考虑的问题

(1). 一种办法利用内存:硬件设置页表起始地址寄存器(Pb)和页表长度寄存器(Pl),每当进程调度时,把调度到作业的页表起始地址和页表长度放入相应寄存器中,就能达到映射不同作业地址空间的目的

缺陷:增加了内存上的花销,降低了 CPU 的访问速度

(2). 另一办法是用一组快速的硬件寄存器构成公用的页表:调度到谁时,就把谁在内存的页表内容装入该组寄存器中。这组硬件寄存器的工作过程:

硬件把页号与寄存器组中所有的表项同时进行比较,立即输出与该页号匹配的块号

优点:无需访问内存、通过并行匹配直接完成地址的变换,速度极快

缺点:快速寄存器硬件成本高,且需要大量的快速寄存器

(3). 改进的做法:考虑到大多数程序在一次调度运行时,倾向于在少数页面中进行频繁的访问,因此实际系统中的做法是采用内存页表与快速寄存器组相结合的解决方案,利用程序的局部性原理,只用极少数对(一般是 8~16 对)快速寄存器构成快速寄存器组,此时把快速寄存器组称为“联想寄存器”或“相联寄存器”,地址转换过程如下:

a. 当进程运行时,系统将该进程 PCB 中页表起始地址及其长度分别送入页表起始地址寄存器(Pb)和页表长度寄存器(Pl)

b. 系统将 CPU 给出逻辑地址由硬件中的地址影射机制自动分成页号 p 和业内地址 d

c. 比较 p 和 Pl,若 p >= Pl,则产生地址越界中断,否则进行地址映射,与此同时,用 p 去查找快表,若找到一项,则终止步骤 d,转入步骤 e

d. 根据页表起始地址寄存器 Pb 和 p,找到页表中相应表项,即 p 的物理块号 p'

e. 将 p' 和 d 放入块表中,若块表已满,则用淘汰算法,淘汰表中的一项。常用淘汰算法:先进先出(淘汰最先进入的)、访问位(淘汰访问次数最少的)

f. 将 p' 和 d 拼在一起形成内存物理地址

通过查块表能实现内存访问的成功率为“命中率”,命中率越高,性能越好

四、存储保护

1. 地址保护

由页表长实现:由 p 和 Pl 进行比较,若 p >= Pl,则为非法访问,发生越界中断

2. 内容保护

由页表中增加存储共享保护位实现:R 表示可读,W 表示可写,E 表示可执行

五、分页存储管理的优缺点

1. 优点

作业可不连续存放,解决了可变分区存储的外部碎片问题

有利于多道程序运行

2. 缺点

存在内部碎片

页的划分没有考虑程序的逻辑结构,不利于共享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值