计算机操作系统 第五章 虚拟存储器知识总结

5.1 虚拟存储器概述

第四章介绍的各种传统存储器管理方式都有一个共同的特点,即它们都要求将一个作业全部装入内存后方可运行,于是会出现这两种情况:
(1)有些作业很大,其所要求的内存空间超过了内存总容量,作业不能全部被装入内存,致使该作业无法运行;
(2)有大量作业要求运行,但由于内存容量不足以容纳所有这些作业,只能将少数作业装入内存让它们先运行,而将其他大量的作业留在外存上等待。
虚拟内存技术可以从逻辑上扩充内存容量。

5.11 常规存储管理方式的特征和局部性原理

1.常规存储管理方式的特征
(1)一次性,指作业必须一次性地全部装入内存后方能开始运行。
(2)驻留性,指作业被装入内存后,整个作业都一直驻留在内存中。
2.局部性原理
(1)程序执行时,除了少部分的转移和过程调用指令外,在大多数情况下是顺序执行的。
(2)过程调用将会使程序的执行轨迹由一部分区域转至另一部分区域。但经研究看出,过程调用的深度在大多数情况下都不超过5。
(3)程序过程中存在着许多循环结构,这些结构虽然只由少数指令构成,但是它们将被多次执行。
(4)程序中还包括许多对数据结构的处理,如对数组进行操作,这些处理往往都局限于很小的范围内。
局限性又表现在以下两个方面:
(1)时间局限性。如果程序中的某条指令被执行,则不久之后该指令可能再次执行;如果某数据被访问过,则不久之后该数据可能再次被访问。产生时间局限性的典型原因是在程序中存在着大量的循环操作。
(2)空间局限性。一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内,其典型情况便是程序的顺序执行。
3.虚拟存储器的基本工作情况

5.12 虚拟存储器的定义和特征

1.虚拟存储器的定义
虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速度,而每位的成本又接近于外存。虚拟存储技术是一种性能非常优越的存储器管理技术。故被广泛地应用于大、中、小型机器和微型机中。
2.虚拟存储器的特征
(1)多次性。
(2)对换性。
(3)虚拟性。

5.13 虚拟存储器的实现方法

1.分页请求系统
分页请求系统是在分页系统的基础上增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。它允许用户程序只装入少数页面的程序(及数据)即可启动运行。以后,再通过调页功能及页面置换功能陆续地把即将运行的页面调入内存,同时把暂不运行的页面换出到外存上。置换时以页面为单位。为了能实现请求调页和页面置换功能,系统必须提供必要的硬件支持和实现请求分页的软件。
(1)硬件支持。包括请求分页的页表机制、缺页中断机构、地址变换机构。
(2)实现请求分页的软件。
2.请求分段系统
请求分段系统是在分段系统的基础上,增加了请求调段及分段置换功能后所形成的段式虚拟存储系统。它允许用户程序只要装入少数段(而非所有的段)的程序和数据即可启动运行。以后通过调段功能和段的置换功能将暂不运行的段调出,再调入即将运行的段。置换是以段为单位进行的。为了实现请求分段,系统同样需要必要的硬件和软件支持。
(1)硬件支持主要的硬件支持有:请求分段的段表机制、缺段中断机构、地址变换机构。
(2)软件支持。

5.2 请求分页存储管理方式

5.21 请求分页中的硬件支持

1.请求页表机制
在请求分页系统中需要的主要数据结构是请求页表,其基本作用仍然是将用户地址空间中的逻辑地址映射为内存空间中的物理地址。
(1)状态位(存在位)P:由于在请求分页系统中,只将应用程序的一部分调入内存,还有一部分仍在外存磁盘上,故须在页表中增加一个存在位字段。由于该字段仅有一位,敌文称位字。它用于指示该页是查已调入内存,供程序访问时参考。
(2)访问字段A:用于记录本页在一段时间内被访问的次数,或记录本页最近已有多长时间未被访问,提供给置换算法(程序)在选择换出页面时参考。
(3)修改位M:标识该页在调入内存后是否被修改过。由于内存中的每一页都在外存上保留一份副本,因此,在置换该贝时,若未被修改,就不需再将该页写回到外存上,以减少系统的开销和启动磁盘的次数:若已被修改,则必须将该页重写到外存上,以保证外存中所保留的副本始终是最新的。简而言之,M位供置换页面时参考。
(4)外存地址:用于指出该页在外存上的地址,通常是物理块号,供调入该页时参考。
2.缺页中断机构
(1)在指令执行期间产生和处理中断信号。通常,CPU都是在一条指令执行完后,才检查是否有中断请求到达。若有,便去响应,否则,继续执行下一条指令。然而,缺页中断是在指令执行期间,若发现所要访问的指令或数据不在内存时,便立即产生和处理缺页中断信号,以便能及时将所缺之页面调入内存。
(2)一条指令在执行期间可能产生多次缺页中断。基于这些特征,系统中的硬件机构应能保存多次中断时的状态,并保证最后能返回到中断前产生缺页中断的指令处继续执行。
3.地址变换机构
在进行地址变换时,首先检索快表,试图从中找出所要访问的页。若找到,便修改了表项中的访问位,供置换算法选换出页面时参考。对于写指令,还须将修改位置成“1”,表示该页在调入内存后已被修改。然后利用页表项中给出的物理块号和页内地址形成物理地址。地址变换过程到此结束。
如果在快表中未找到该页的页表项,则应到内存中去查找页表,再从找到的页表项中的状态位P来了解该页是否已调入内存。若该页已调入内存,这时应将该页的页表项写入快表。当快表已满时,则应先调出按某种算法所确定的页的页表项,然后再写入该页的页表项:若该页尚未调入内存,这时应产生缺页中断,请求OS丛外存把该页週入内存。

5.22 请求分页中的内存分配

1.最小物理块数的确定
最小物理块数是指能保证进程正常运行所需的最小物理块数,当系统为进程分配的物理块数少于此值时,进程将无法运行。
2.内存分配策略
(1)固定分配局部置换(Fixed Allocation,Local Replacement)。
所谓固定分配,是指为每个进程分配一组固定数目的物理块,在进程运行期间不再改变。所谓局部置换,是指如果进程在运行中发现缺页,则只能从分配给该进程的n个页面中选出一页换出,然后再调入一页,以保证分配给该进程的内存空间不变。
实现这种策略的困难在于:应为每个进程分配多少个物理块难以确定。若太少,会频繁地出现缺页中断,降低了系统的吞吐量。若太多,又必然使内存中驻留的进程数目减少,进而可能造成CPU空闲或其它资源空闲的情况,而且在实现进程对换时,会花费更多的时间。
(2)可变分配全局置换(Variable Allocation,Global Replacement)。
可变分配,是指先为每个进程分配一定数目的物理块,在进程运行期间,可根据情况做适当的增加或减少。所谓全局置换,是指如果进程在运行中发现缺页,则将OS所保留的空闲物理块(一般组织为一个空闲物理块队列)取出一块分配给该进程,或者以所有进程的全部物理块为标的,选择一块预出,然后将所缺之页週入。
(3)可变分配局部置换(Variable Allocation,Local Replacement)。
基于进程的类型或根据程序员的要求,为每个进程分配一定数目的物理块,但当某进程发现缺页时,只允许从该进程在内存的页面中选择一页换出,这样就不会影响其它进程的运行。如果进程在运行中频繁地发生缺页中断,则系统须再为该进程分配若干附加的物理块,直至该进程的缺页率减少到适当程度为止。反之,若一个进程在运行过程中的缺页率特别低,则此时可适当减少分配给该进程的物理块数,但不应引起其缺页率的明显增加。
3.物理块分配算法
(1)平均分配算法。
(2)按比例分配算法。
(3)考虑优先权的分配算法。

5.23 页面调入策略

1.何时调入页面
(1)预调页策略。
(2)请求调页策略。
2.从何处调入页面
(1)系统拥有足够的对换区空间,这时可以全部从对换区调入所需页面,以提高调页速度。为此,在进程运行前,便须将与该进程有关的文件从文件区拷贝到对换区。
(2)系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;而当换出这些页面时,由于它们未被修改,则不必再将它们重写到磁盘(换出),以后再调入时,仍从文件区直接调入。但对于那些可能被修改的部分,在将它们换出时便须调到对换区,以后需要时再从对换区调入。
(3)UNIX方式。由于与进程有关的文件都放在文件区,故凡是未运行过的页面,都应从文件区调入。而对于曾经运行过但又被换出的页面,由于是被放在对换区,因此在下次调入时应从对换区调入。由于UNIX系统允许页面共享,因此,某进程所请来的页面有可能已被其它进程调入内存,此时也就无需再从对换区调入。
3.页面调入过程.
每当程序所要访问的页面未在内存时(存在位为“0”),便向CPU发出一缺页中断,中新处理程序首先保留CPU环境,分析中断原因后转入缺页中断处理程序。该程序通过在找页表得到该页在外存的物理块后,如果此时内存能容纳新页,则启动磁盘I/O,将所缺之页调入内存,然后修改买表,如果内存已满,则须先按照某种置换算法,从内存中选出一页准备换出:如果该页未被修改过(修改位为“0”),可不必将该页写回暖盘;但如果此页已被修改(修改位为“1”),则必须将它写回磁盘,然后再把所缺的页调入内存,并修改页表中的相应表项,置其存在位为“1”,并将此页表项写入快表中。在缺页调入内存后,利用修改后的页表形成所要访问数据的物理地址,再去访问内存数据。整个页面的调入过程对用户是透明的。
4.缺页率
在进程的运行过程中,访问页面成功(即所访问页面在内存中)的次数为S,访问页面失败(即所访问页面不在内存中,需要从外存调入)的次数为F,则该进程总的页面访问次数为A=S+F,那么该进程在其运行过程中的缺页率即为:
f=F/A
缺页率受到以下几个因素的影响:
(1)页面大小。页面划分较大,则缺页率较低;反之,缺页率较高。
(2)进程所分配物理块的数目。所分配的物理块数目越多,缺页率越低;反之则越高。
(3)页面置换算法。
(4)程序固有特性。
假设被置换的页面被修改的概率是β,其缺页中断处理时间为ta,被置换页面没有被修改的缺页中断时间为tb,那么缺页中断时间的计算公式为:
t=β×ta+(1-β)×tb

5.3 页面置换算法

5.31 最佳置换算法和先进先出置换算法

1.最佳(Optimal)置换算法
2.先进先出(FIFO)置换算法

5.32 最近最久未使用和最少使用置换算法

1.LRU(Least Recently Used)置换算法的描述
2.LRU置换算法的硬件支持
(1)寄存器。
(2)栈。
3最少使用(Least Frequently Used,LFU)置换算法

5.33 Clock置换算法

1.简单的Clock置换算法
2.改进型Clock置换算法
该算法与简单Clock置换算法比较,可减少磁盘的I/O操作次数。但为了找到一个可置换的页,可能须经过几轮扫描。换言之,实现该算法本身的开销将有所增加。

5.34 页面缓冲算法(Page Buffering Algorithm,PBA)

1.影响页面换进换出效率的若干因素
(1)页面置换算法。
(2)写回磁盘的频率。
(3)读入内存的频率。
2.页面缓冲算法PBA
主要特点:显著地降低了页面换进、换出的频率,使磁盘1/O的操作次数大为减少,因而减少了页面换进、换出的开销;正是由于换入换出的开销大幅度减小,才能使其采用一种较简单的置换策略,如先进先出(FIFO)算法,它不需要特殊硬件的支持,实现起来非常简单。
为了能显著地降低页面换进、换出的频率,在内存中设置了如下两个链表:
(1)空闲页面链表。
(2)修改页面链表。

5.35 访问内存的有效时间

(1)被访问页在内存中,且其对应的页表项在快表中。
此时不存在缺页中断情况,内存的有效访问时间(EAT)分为查找快表的时间(λ)和访问实际物理地址所需的时间(t):
EAT=λ+t
(2)被访问页在内存中,且其对应的页表项不在快表中。
有效访问时间可分为查找快表的时间、查找页表的时间、修改快表的时间和访问实际物理地址的时间:
EAT=λ+t+λ+t=2×(λ+t)
(3)被访问页不在内存中。
假设缺页中断处理时间为ε:
EAT=λ+t+ε+λ+t=ε+2(λ+t)
考虑快表的命中率(a)和缺页率(f)等因素后:
EAT=λ+a×t+(1-a)×[t+f×(ε+λ+t)+(1-f)×(λ+t)]
如果不考虑命中率,仅考虑缺页率,即上式中的λ=0和a=0,设缺页中断处理时间为δ:
EAT=t+f×(δ+t)+(1-f)×t

5.4 “抖动”与工作集

5.41 多道程序度与“抖动”

1.多道程序度与处理机的利用率
发生“抖动”的根本原因是,同时在系统中运行的进程太多,由此分配给每一个进程的物理块太少,不能满足进程正常运行的基本要求,致使每个进程在运行时,频繁地出现缺页,必须请求系统将所缺之页调入内存。这会便得在系统中排队等待页面调进/调出的进程数目增加。

5.42 工作集

1.工作集的基本概念
进程发生缺页率的时间间隔与进程所获得的物理块数有关。
2.工作集的定义
工作集,是指在某段时间间隔里,进程实际所要访问页面的集合。
工作集是二元函数,即在不同时间的工作集大小不同,所含的页面数也不同;工作集与窗口尺寸有关,是窗口尺寸的非降函数。

5.43 “抖动”的预防方法

1.采取局部置换策略
2.把工作集算法融入到处理机调度中
3.利用“L=S”准则调节缺页率
4.选择暂停的进程

5.5 请求分段存储管理方式

5.51 请求分段中的硬件支持

1.请求段表机制
(1)存取方式。由于应用程序中的段是信息的逻辑单位,可根据该信息的属性对它实施保护,故在段表中增加存取方式字段,如果该字段为两位,则存取属性是只执行、只读和允许读/写。
(2)访问字段A。其含义与请求分页的相应字段相同,用干记录该段被访问的频繁程度。提供给置换算法选择换出页面时参考。
(3)修改位M。该字段用于表示该页在进入内存后是否已被修改过,供置换页面时参考。
(4)存在位P。该字段用于指示本段是否已调入内存,供程序访问时参考。
(5)增补位。这是请求分段式管理中所特有的字段,用于表示本段在运行过程中是否做过动态增长。
(6)外存始址。指示本段在外存中的起始地址,即起始盘块号。
2.缺段中断机构
3.地址变换机构

5.52 分段的共享与保护

1.共享段表
(1)共享进程计数count。非共享段仅为一个进程所需要。当进程不再需要该段时,可立即释放该段,并由系统回收该段所占用的空间。而共享段是为多个进程所需要的,为记录有多少进程正在共享该分段,须设置共享进程计数count。当某进程不再需要而释放它时,系统并不立即回收该段所占内存区,而是检查count是否为0。若不是0,则表示还有进程需要它,仅当所有共享该段的进程全都不再需要它时,此时count为0,才由系统回收该段所占内存区。
(2)存取控制字段。对于一个共享段,应为不同的进程赋予不同的存取权限。
(3)段号。对于一个共享段,在不同的进程中可以具有不同的段号,每个进程可用自己进程的段号去访问该共享段。
2.共享段的分配与回收
(1)共享段的分配。
由于共享段是供多个进程所共享的,因此,对共享段的内存分配方法,与非共享段的内存分配方法有所不同。在为共享段分配内存时,对第一个请求使用该共享段的进程,由系统为该共享段分配一物理区,再把共享段调入该区,同时将该区的始址填入请求进程的段表的相应项中,还须在共享段表中增加一表项,填写请求使用该共享段的进程名、段号和存取控制等有关数据,把count置为1。当又有其它进程需要调用该共享段时,由王该共享段已被调入内存,故此时无须再为该段分配内存,而只需在调用进程的段表中增加一表项,填写该共享段的物理地址。在共享段的段表中增加一个表项,填上调用进程的进程名、该共享段在本进程中的段号、存取控制等,再执行count=count+T操作,以表明有两个进程共享该段。以后,凡有进程需要访问此共享段的,都按上述方式在共享段的段表中增加-个表项。
(2)共享段的回收。
当共享此段的某进程不再需要该段时,应将该段释放,包括撤消在该进程段表中共享段所对应的表项,以及执行count=count-1操作。若结果为0,则须由系统回收该共享段的物理内存,以及取消在共享段表中该段所对应的表项,表明此时已没有进程使用该段;否则(减1结果不为0),只是取消调用者进程在共享段表中的有关记录。
3.分段保护
(1)越界检查。
越界检查是利用地址变换机构来完成的。为此,在地址变换机构中设置了段表寄存器,用于存放段表始址和段表长度信息。在进行地址变换时,首无将逻辑地址空间的段号与段表长度进行比较,如果段号等于或大于段表长度,将发出地址越界中断信号。此外,还在段表中为每个段设置有段长字段,在进行地址变预时,还要检查段内地址是否等于或大于段长,若大于段长,将产生地址越界中断信号,从而保证了每个进程只能在自己的地址空间内运行。
(2)存取控制检查。
只读,即只允许进程对该段中的程序或数据进行读访问;
只执行,即只允许进程调用该段去执行,但不准读该段的内容,更不允许对该段执行写操作;
读/写,即允许进程对该段进行读/写访问。
(3)环保护机构。
在环系统中,程序的访问和调用应遵循以下规则:
一个程序可以访问驻留在相同环或较低特权环(外环)中的数据;
一个程序可以调用驻留在相同环或较高特权环(内环)中的服务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值