第四章_虚拟存储管理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例如: 访问页面:23332325585
w t-w W(t,w)={2,3,5,8} t
T
访问页面:
2333232558558539895878 w t1 W(t1,w)={2,3,5,8} w t2 T
W(t2,w)={3,5,7,8,9}
(3)工作集的应用
工作集W(t,w)是二元函数,随t、w的值而改变。首先工作 集与时间有关,即不同时间的工作集其所包含的页面可能不 同,其所包含的页面个数也可能不同;其次工作集也是工作 集窗口尺寸w的函数,体现在工作集尺寸|W(t,w)|随w的增加 而变大,即满足|W(t,w)|≤|W(t,w+a)|,a>0。
§4.5.1 程序局部性原理
§4.5.2 虚拟存储的实现
§4.5.1 程序局部性原理
1.局部性原理(principle of locality):
指程序在执行过程中的一个较短时期内,所执行的指令地 址和指令的操作数地址,分别局限于一定区域。
2.局部性主要表现:
时间局部性:是指一段指令在某一时间段内会被反复执行。 即程序某一部分的数据或指令被重复性地访问,它们对应于 程序结构中的循环、子程序、常用到的变量及数据等 ; 空间局部性:是指一旦某一个存储单元被访问,那么它附近 的单元也将很快被访问。这对应于程序结构中的顺序执行的 指令、线性数据结构以及在相邻位臵存放的数据或变量等。 而程序中的分支和调用子程序只是将程序的访问空间从一处 移到另外一处,仍具有局部性。
⑵ 按比例分配算法,根据进程的大小按比例分配空闲块。设 系统中现有m个进程、n个空闲块,每个进程拥有的页数为Si, 则系统中所有进程页数之和为: S = S1 + S2 + S3 + … + Sm
则为每个进程分配的物理块数为:
Bi = (Si / S)× n ,Bi应向下取整。 ⑶ 优先权分配算法,为优先权高的作业分配较多的内存空间, 这样可以使重要或紧迫的任务尽快完成。这时可以将内存中 的空闲块分成两部分:一部分按比例分配给各进程,另一部 分则根据各进程的优先权,适当地为其增加相应份额。
页号 物理块号 状态位P 访问位A 修改位M 外存地址
其中:
外存地址指出该页在外存的地址,供调入该页时用;
状态为指示该页是否在内存,供程序访问时用,也是检查是否缺 页的标志位,如臵1表示在内存 ;
访问位或访问字段则是该页被访问过的标志或该页被访问过的次 数;
修改位表示该页是否被修改过;存取控制字段则是用来限制页面 被安全共享的。
虚拟技术进一步说明
系统要提供必要的硬件支持,如虚拟页式存储 中的页表机制、缺页中断机构以及相应的地址变换 机构。 虚拟存储技术是将内存与外存有机地结合在一 起,从而得到一个容量很大的虚拟空间。使用户感 到有一个很大的内存,不用再考虑内存的容量限制。 虚存虽然比内存要大得多,但不可能无限大, 其大小要受到外存空间的限制以及CPU地址所能表 示范围的限制。
(2)为使进程能有效地工作,应为它分配多少物理块合适
随着为每个进程所分配物理块数目的减少,将使进程执行中 的缺页率提高,导致非生产性开销过大,从而降低了进程的 执行速度,严重时导致进程不能向前推进。最少物理块数只 能保证程序能执行下去,而不是最合适的块数。 在1968年,Denning提出了工作集理论。所谓工作集就是进 程在某段时间里实际上要访问的页的集合。依据程序执行时 的局部特性,可以利用程序过去的行为来估计它未来的行为。 故定义运行进程在t-w到t这个时间间隔内所访问的页的集合 为该进程在时间t的工作集,记为W(t,w)。并把变量w称 之为“工作集窗口尺寸”,工作集中所包含的页面数称为 “工作集尺寸”,记为|W(t,w)|。
3.引入虚拟存储技术的好处
大程序:可在较小的可用内存中执行较大的用户 程序; 大的用户空间:提供给用户可用的虚拟内存空间 通常大于物理内存(real memory) 并发:可在内存中容纳更多程序并发执行; 易于开发:与覆盖技术比较,不必影响编程时的 程序结构
总容量不超过物理内存和外存交换区容量之和。其
3.动态地址变换
在虚拟页式存储中,应采用动态地址变换方式,因为某一欲 执行的指令可能不在内存,只能在指令执行之前完成地址变 换。任一作业都应在自己的虚拟地址空间中执行,所以要为 用户作业设臵一个虚拟地址指针VP,虚拟地址依然是由页号 和页内偏移地址组成的。
系统总是执行VP虚指针所指向的指令,为了将虚拟地址VP 变换为对应的实存地址,因此先要查找页表。若从页表中查 出此页不在内存(状态位为0),则产生一个缺页中断。此时, 进程暂停当前指令执行,CPU转去执行缺页中断处理程序。 若该页已在内存,则指令的地址映射过程与页式存储是一样 的。即将块号和页内地址相拼接形成物理地址IP,处理器再 从IP中取指令执行。
返回
页面的动态调度步骤: 1、找到被访问页面在外存的地址; 2、在内存中找一个空闲页面; (1)如果没有,按照淘汰算法选择一个内存 页面; (2)将此内存页面写回外存,修改页表及 页面分配表; 3、读入所需的页面,修改页表及页面分配表; 4、重新启动进程执行被中断的指令。
2.页表机制 标记某页是否在内存,用于查询要访问的 页在不在内存。页表如下:
操作系统
Operating System
第4章 存储管理
§4.1 存储管理的原理 §4.2 连续分配存储管理
§4.3 离散分配存储管理
§4.4 内核主存管理
§4.5 虚拟存储技术
§4.6 虚拟页式存储管理
§4.7 虚拟段式存储管理
§4.8 存储管理实例
§4.5 虚拟存储技术
虚拟内存技术(Virtual Memory)诞生于1961年。 广泛使用是从上个世纪70年代初以后,今天几乎所有的操作 系统都采用虚拟内存技术来管理内存。 这是一种利用虚拟存储器来逻辑扩充物理内存的技术。其基 本思想是用软硬件技术把内存与外存这两级存储器当成一级Βιβλιοθήκη Baidu存储器来用,从而给用户提供了一个比内存也比任何应用程 序大得多的虚拟存储器,使得用户编程时再也不用考虑内存 大小的限制了,给用户编程带来极大的方便。 虚拟内存技术的实现也利用了自动覆盖和交换技术。
则该进程的缺页率f定义为:f=B/S。
显然缺页率越低越好。
§4.6.2 页面分配策略
虚拟存储管理在进行页面分配时,要考虑这 样的问题:空闲页面如何管理;采用什么样的 分配策略;为进程分配多少物理块比较合适; 在什么时间进行页面分配等。
1.空闲页面管理
同页式存储管理相似,虚拟存储方式下的空闲页面的管理也可 以采用位示图或空闲页面链的形式。 由于主存中所有进程的虚拟地址空间之和远大于主存空间,因 此进程执行时常发生缺页中断,这样不断地调入新页,很快就 使主存空间饱和。以后再发生缺页时,要先淘汰一页才能装入 新页,这使得缺页处理时间过长,减缓了进程的执行速度,从 而影响到系统的性能。
运行速度接近于内存,每位的成本又接近于外存, 是一种性能非常优越的存储管理技术
4. 虚拟存储技术的特征
不连续性:物理内存分配的不连续,虚拟地址空间 使用的不连续(数据段和栈段之间的空闲空间,共 享段和动态链接库占用的空间) 部分交换:与交换技术相比较,虚拟存储的调入和 调出是对部分虚拟地址空间进行的; 大空间:通过物理内存和快速外存相结合,提供大 范围的虚拟地址空间
排他性:程序运行不但体现在时间、空间的局部性, 还体现在某些程序段执行的排他性。 即程序设计者编程时要考虑程序执行时所能遇到的各 种情况,但具体到一次程序的执行,并不会发生所有 的状况。因而某些程序段在进程整个运行期间,可能 根本不使用,如出错处理、分支语句等。因而,没有 用到的程序段就不必调入内存。另外,有些程序段仅 执行一次,以后就再也不会用到,这样的程序段也没 有必要一直占用内存空间。 综上所述:程序只要装入内存一部分就可以运行, 当用到不在内存的部分时,再将其装入内存。换句 话就是说程序全部装入内存并不是程序运行的必要 条件。
§4.5.2 虚拟存储的实现
1.虚拟存储技术
如果把程序部分装入内存,其余大部分放在外存,而程序又 能运行,这样我们就拥有了一个比有限的实际内存空间大得多的、 逻辑的虚拟内存空间。即用大容量的外存来模拟内存,这种存储 模式就称之为虚拟存储技术。
2.虚拟技术实现的关键
(1)怎样才能发现欲执行的指令或数据不在内存? 简单有效方法就是进行标识 (2)怎样将不在内存的部分调入进来。 通常系统采用中断技术完成调入工作。 (3)在内存中的作业如何组织? 一个进程可被分为多次调入内存,这样很难保证进程在内存 中占据一个连续的空间,实际上进程在内存中是离散存储的。
2 分配策略(外存)
1、静态分配
一个进程在运行之前,将其页面全部装入外存。 当某一外存页面被调入内存时,并不释放所占用的 外存页面。
2、动态分配
一个进程在运行之前,仅将未装入内存的那部 分页面装入外存。当某一外存页面被调入内存时, 释放所占用的外存页面。
3.工作集
(1)为保证进程能正常运行最少需要多少物理块。
从理论上讲,进程只要获得一个物理块就可以运行。但 是进程正常运行所需的最少物理块数与计算机的硬件结构有 关,取决于指令的格式、功能和寻址方式。由于分页是系统 的行为,可能会出现下面的情景: 涉 及 6 次 缺 页 中 断 的 指 令
1 指令copy A to B 数据A:
2
3 4
5
6
数据B:
由此可见,系统应保证任一条 指令执行时,其所涉及的虚拟地址 所在的页都应在内存中。这个页数 就是进程所需要的最小块数,若系 统为进程所分配的物理块数少于此 值时,进程将无法运行。
该页在内存 no
地址映射
恢 复被中 断 进程现 场
存
?
硬件部分 图 4.30 缺页中断处理流程
软件部分
5.缺页率
虽然通过缺页中断将所需要的页调入内存,但缺页中 断的频繁发生会严重影响程序执行的效率。为了标识 缺页中断发生的频度,可以引入缺页率来表示。 设进程在其执行期间共进行了S次访页操作,其中成 功访页次数为A(访问时该页在主存),不成功的访页 次数为B(即发生了缺页中断),显然有:S=A+B,
虚拟存储技术的种类:
虚拟页式 虚拟段式 虚拟段页式
§4.6 虚拟页式存储管理
§4.6.1 虚拟页式存储的实现
§4.6.2 页面分配策略 §4.6.3 页面置换方法
§4.6.4 虚拟页式存储的优缺点
§4.6.1 虚拟页式存储的实现
1.基本原理
系统自动地将作业的地址空间分页,将系统的主存 空间分块,页与块等大小。 在作业运行前,只把初始需要的一部分页面装入内 存块里,运行中需要访问自己地址空间中的但当前 不在内存的页面时产生缺页中断,由缺页中断服务 程序将所需的页面调入内存。 若此时内存中没有空闲物理块安臵请求调入的新页 面,则系统按预定的臵换策略自动选择一个或一些 在内存的页面,把它们换出到外存。 这里的请求调入和臵换功能都是比实分页存储管理 增加的内容,是实现虚拟存储的主要功能。
进程被创建后, 进入就绪队列
4.缺页中断
保留当前 进程现场
有空闲 进程被调度执行 页
吗?
no
按某算法选 一页淘汰
面 yes
启 动 待 执行 指 令 VP 计算虚页号与 页内地址
执行下 一条指令
调入所 需页面
no
该页已 改过 yes
访问内存 完 成该指 令 yes
调整页表及 空闲页面表
把该页 写回外
在实际的系统中,总是维持一定数量的空闲块,而不是耗尽所 有的空闲块。即空闲块数可以在某一区间浮动,一旦空闲块数 小于下限值,系统就进行页面臵换,以释放出一些空闲块,使 得总的空闲块数不超过系统规定的上限值即可。即系统设臵专 门的独立进程负责页面臵换,以保证链表的适当规模。
2 分配策略(内存)
可变分配:是指一个进程所拥有的物理块数是不定的,这种 分配方式称之为可变分配。 固定分配是指为每个进程分配一固定页数的内存空间,在整 个运行期间都不再改变。 ⑴ 平均分配算法,是将系统中所有可供分配的物理块,平均 分配给每一个进程。例如,当系统中有80个空闲块,4个进 程时,每个进程可分得20个物理块。这种平均分配方式因其 未考虑各进程本身的大小,会造成事实上的不公平。如有一 个进程其大小为100页,只分配给它20个块,这样它必将会 有很高的缺页率;而另一个进程只有10页,却有10个块在闲 臵未用。所以在平均的思想下,还要考虑进程的大小。