您好、欢迎来到现金彩票网!
当前位置:一品彩票app下载 > 共享页表 >

6虚拟储存

发布时间:2019-06-11 21:12 来源:未知 编辑:admin

  第三章存储管理虚拟存储器存储管理存储器(VirtualMemory)(续)(Virt

  教学目的:教学目的:为了在内存空间运行超过内存总容量的大作业,或者同时运行大量作业,解决的方法是从逻辑上扩充内存容量,这就是虚拟存储技术所要解决的主要问题。本本课要介绍虚拟存储技术实现的各种方案,每种方案所需的硬件和软件支持。

  掌握虚拟存储器的理论基础和定义,熟悉虚拟存储器实现方式和特征。掌握请求分页的页表机制、缺页中断机构和地址变换机构,熟悉页面的分配和置换策略、页面的分配的算法。熟练掌握最佳置换算法、先进先出(FIFO)置换算法、最近最久未使用置换算法LRU,掌握Clock置换算法和页面缓冲算法;掌握有效访问时间计算,熟悉工作集概念。掌握请求分段的段表机制、缺段中断机构和地址变换机构,熟悉分段的共享和保护。

  (一)虚拟存储器的基本概念一)虚拟存储器的基本概念(1)虚拟存储器的引入(1)

  1.局部性原理早在1968年P.Denning就指出过,程序在执行时将呈现出局部序在执行时将呈现出局部性规律,即在一段时间内,程序的执行仅局限于某个部分;相性规律,即在一段时间内,程序的执行仅局限于某个部分;相应地,它所访问的存储空间也局限于某个区域内。那么程序为应地,它所访问的存储空间也局限于某个区域内。那什么会出现局部性规律呢?原因可以归结为以下几点:程序在执行时,除了少部分的转移和过程调用指令外,大多数仍是顺序执行的。子程序调用将会使程序的执行由一部分内存区域转至另一部分区域。但在大多数情况下,过程调用的深度都不超过5。程序中存在许多循环结构,循环体中的指令被多次执行。程序中还包括许多对数据结构的处理,如对连续的存储空

  所以局限性表现为:时间局限性:如果程序中的某条指令一旦执行,则不久的时间局限性将来该指令可能再次被执行;如果某个存储单元被访问,则不久以后该存储单元可能再次被访问。产生时间局限性的典型原因是在程序中存在着大量的循环操作。空间局限性:一旦程序访问了某个存储单元,则在不久的空间局限性将来,其附近的存储单元也最有可能被访问。即程序在一段时间内所访问的地址,可能集中在一定的范围内,其典型原因是程序是顺序执行的。2。虚拟存储器的定义虚拟存储器的定义根据局部性原理,一个作业在运行之前,没有必要把全部作业装入内存,而仅将那些当前要运行的那部分页面或段,先装入内存便可启动运行,其余部分暂时留在磁盘上。

  程序在运行时如果它所要访问的页(段)已调入内存,便可继续执行下去;但如果程序所要访问的页(段)尚未调入内存(称为缺页或缺段),此时程序应利用OS所提供的请求调页(段)功能,将它们调入内存,以使进程能继续执行下去。如果此时内存已满,无法再装入新的页(段),则还须再利用页(段)的置换功能,将内存中暂时不用的页(段)调出至磁盘上,腾出足够的内存空间后,再将所要访问的页(段)调入内存,使程序继续执行下去。这样,便可使一个大的用户程序在较小的内存空间中运行;也可使内存中同时装入更多的进程并发执行。从用户角度看,该系统所具有的内存容量,将比实际内存容量大得多,人们把这样的存储器称为虚拟存储器。

  虚拟存储器是具有请求调入功能和置换功能,能仅把作业的一部分装入内存便可运行作业的存储器系统,它能从逻辑上对内存容量进行扩充的一种虚拟的存储器系统。其逻辑上对内存容量进行扩充的一种虚拟的存储器系统。辑容量由内存和外存容量之和所决定,其运行速度接近于内存速度,而每位的成本却又接近于外存。可见,虚拟存储技术是一种性能非常优越的存储器管理技术,故被广泛地应用于大、中、小型机器和微型机中。

  它是在分页系统的基础上,增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。它允许只装入若干页(而非全部程序)的用户程序和数据,就可以启动运行,以后再通过调页功能和页面置换功能,陆续把将要运行的页面调入内存,同时把暂不运行的页面置换到外存上,置换时以页面为单位。2。请求分段系统:它是在分段系统的基础上,增加了请求调段和分段置换功能所形成的段式虚拟存储系统。它允许只装入若干段(而非全部段)的用户程序和数据,就可以启动运行,以后再通过调段功能和置换功能将不运行的段调出,同时调入将要运行的段,置换以段为单位。3。请求段页式系统:它是在段页式系统的基础上,增加了请求调页和页面置换功能所形成的段页式虚拟存储系统。

  离散性:指在内存分配时采用离散的分配方式,它是虚拟离散性存储器的最基本的特征。多次性:指一个作业被分成多次调入内存运行,即在作业多次性运行时没有必要将其全部装入,只须将当前要运行的那部分程序和数据装入内存即可。多次性是虚拟存储器最重要的特征。对换性:指允许在作业的运行过程中在内存和外存的对换对换性区之间换进、换出。虚拟性:指能够从逻辑上扩充内存容量,使用户所看到的虚拟性内存容量远大于实际内存容量。

  它是在纯分页系统的基础上,增加了请求调页功能、页面置换功能所形成的页式虚拟存储系统,它是目前常用的一种虚拟存储器的方式。1.请求分页的页表机制它是在纯分页的页表机制上形成的,由于只将应用程序的一部分调入内存,还有一部分仍在磁盘上,故需在页表中再增加若干项,供程序(数据)在换进、换出时参考。在请求分页系统中的每个页表项如图所示。页号物理块号状态位P访问字段A修改位M外存地址

  其中各字段说明如下:状态位(存在位P):用于指示该页是否已调入内存,供状态位程序访问时参考。访问字段A:用于记录本页在一段时间内被访问的次数,访问字段A或最近已有多长时间未被访问,提供给置换算法选择换出页面时参考。修改位M:表示该页在调入内存后是否被修改过。由于内修改位存中的每一页都在外存上保留一份副本,因此,若未被修改,在置换该页时就不需将该页写回到外存上,以减少系统的开销和启动磁盘的次数;若已被修改,则必须将该页重写到外存上,以保证外存中所保留的始终是最新副本。外存地址:用于指出该页在外存上的地址,通常是物理块外存地址号,供调入该页时使用。

  2.缺页中断机构在请求分页系统中,每当所要访问的页面不在内存时,便要产生一缺页中断,请求OS将所缺页调入内存。与一般中断的主要区别在于:缺页中断在指令执行期间产生和处理中断信号,而一般中断在一条指令执行完后检查和处理中断信号。缺页中断返回到该指令的开始重新执行该指令,而一般中断返回到该指令的下一条指令执行。一条指令在执行期间,可能产生多次缺页中断。3.地址变换机构请求分页系统中的地址变换机构,是在分页系统的地址变换机构的基础上,再为实现虚拟存储器而增加了某些功能所形成的,如产生和处理缺页中断,以及从内存中换出一页的功能等等,下图给出了请求分页系统的地址变换过程。

  缺页中断处理是否否是CPU检索快表是否产生缺页中否是断请求调页是求调页访问页表

  将该页写回外存CPU从外存读缺页启动I/O硬件将一页从外存换入内存修改页表

  1.最少物理块数在为进程分配物理块时,首先应该考虑的问题是:能保证进程能正常运行所需的最少物理块数(称为最小物理块数)。若系统为某进程所分配的物理块数少于此值时,进程将无法运行,这取决于指令的格式、功能和寻址方式。2.页面的分配和置换策略在请求分页系统中,可采取两种分配策略——固定和可变分配策略。在进行置换时,也可采取两种策略——全局置换和局部置换。于是可组合成以下三种策略:固定分配局部置换策略:它基于进程的类型(交互型或批固定分配局部置换策略处理型等),或根据程序员、系统管理员的建议,为每个进程分配一固定页数的内存空间,在整个运行期间都不再改变。如果进程在运行中发现缺页,则只能从该进程在内存的固定页面中选出一页换出,然后再调入另一页,保证分配给该进程的内存空间不变。

  可变分配全局置换策略:系统为每个进程分配一定数目的可变分配全局置换策略物理块,而OS本身也保持一个空闲物理块队列。当某进程发现缺页时,由系统从空闲物理块队列中,取出一物理块分配给该进程,并将欲调入的缺页装入其中。当空闲物理块队列中的物理块用完时,OS才能从内存中选择一页调出,该页可能是系统中任一进程的页。可变分配局部置换:根据进程的类型或程序员的要求,为可变分配局部置换每个进程分配一定数目的内存空间;但当某进程发生缺页时,只允许从该进程在内存的页面中选出一页换出,而不影响其它进程的运行。

  3.页面分配算法在采用固定分配策略时,可采用以下几种物理块分配方法:平均分配算法:将系统中所有可供分配的物理块,平均分平均分配算法配给各个进程。按比例分配算法:这是根据进程的大小按比例分配物理按比例分配算法块。考虑优先权的分配算法:该方法是把内存中可供分配的所考虑优先权的分配算法有物理块分成两部分:一部分按比例分配给各进程;另一部分则根据各进程的优先权,适当地增加其相应份额后,分配给各进程。

  为能使进程运行,必须事先将一部分要执行的程序和数据调入内存。1.调入页面的时机为了将进程运行时所缺的页面调入内存,可采取策略有:预调页策略是一种主动的缺页调入策略,即将那些预计在预调页策略不久的将来会被访问的程序或数据所在的页面,预先调入内存。由于预测的准确率不高(50%),所以这种策略主要。用于进程的首次调入。有的系统将预调页策略用于请求调页,例如在VAX/VMS操作系统中,采用了一种称为群页式的调页策略,当系统将进程所请求的页面调入内存时,也同时将其相邻的几个页面调入内存。请求调页策略是指当进程在运行中发生缺页时,就立即提出请求,由系统将缺页调入内存。目前的虚拟存储器中,。大多采用此策略。但这种策略在调页时须花费较大的系统开销,如需频繁启动磁盘I/O。

  2。从何处调入页面在虚拟存储系统中,外存(硬盘)常常被分成两部分;文件区(用于存放文件)和对换区(用于存放对换页面)。通常,对换区的磁盘I/O速度比文件区要高。每当进程发出缺页请求时,系统应从何处将缺页调入内存呢?在UNIX系统中,对于从未运行过的页面,都应从硬盘文件区调入;对于曾经运行过而又被换出的页面,可以从对换区调入;对于共享页面,该页面可能已由其它进程调入内存,此时就无须再从对换区调入。

  在进程运行过程中,如果发生缺页,此时内存中又无空闲块时,为了保证进程能正常运行,就必须从内存中调出一页程序或数据送磁盘的对换区。但将哪个页面调出,则须根据一定的页面置换算法来确定。置换算法的好坏将直接影响系统的性能,不适当的算法可能会导致进程发生“抖动”(Thrashing)。即刚被换出的页很快又被访问,需重新调入,导致系统频繁地更换页面,以致一个进程在运行中把大部分时间花费在完成页面置换的工作上,我们称该进程发生了“抖动”(颠簸)。从理论上讲,应将那些以后不再被访问的页面换出,或把那些在较长时间内不会再被访问的页面换出。下面介绍几种常用的置换算法。

  它是一种理想化的算法,性能最好,但在实际上难于实现。即选择那些永不使用的,或者是在最长时间内不再被访问的页面置换出去。但是要确定哪一个页面是未来最长时间内不再被访问的,目前来说是很难估计的,所以该算法通常用来评价其它算法。例:假定系统为某进程分配了三个物理块,并考虑有以下例:的页面号引用串:7,0,l,2,0,3,0,4,2,3,0,3,2,l,2,0,l,7,0,1。如下图所示,进程运行时先将7,0,1三个页面装入内存。当进程访问页面2时,产生缺页中断,此时OS根据最佳置换算法,页面7将在第18次才被访问,是三页中将最久不被访问的页面,所以被淘汰。接着访问页面0时,发现已在内存中,而不会产生缺页中断,以此类推。从图可

  (4)Clock置换算法(最近未用算法NUR(NotUsedRecently))将最近一段时间未引用过的页面换出

  块号页号访问位指针替换指针0始指向最近被替1换的4号页所24042在块的块号32→64261→0被调入页的页5号为6675→60→17112简单Clock置换算法的数据结构—存储器分块表

  例子1:计算缺页次数例子:计算缺页次数某程序在内存中分配三个页面,初始为空,页面走向为4,3,2,1,4,3,5,4,3,2,1,,,,,,,,,,,5

  理想淘汰算法—最佳页面算法(理想淘汰算法最佳页面算法(OPT))淘汰以后不再需要的或最远的将来才会用到的页面

  例子2:计算缺页次数例子:计算缺页次数某程序在内存中分配m页初始为空,某程序在内存中分配页初始为空,页面走向为1,2,3,4,1,2,5,1,2,3,4,,,,,,,,,,,5。当。当m=3,m=4时缺页中断分别,时缺页中断分别为多少?用FIFO算法为多少?用算法

  例子2:计算缺页次数例子:计算缺页次数m=3时,缺页中断次时,缺页中断9次m=4时,缺页中断次时,缺页中断10次注:FIFO页面淘汰算法会产生异常现注:页面淘汰算法会产生异常现象(Belady现象),即:当分配给进象(现象),即:当分配给进程的物理页面数增加时,缺页次数反而增加

  5、影响缺页次数的因素、影响缺页次数的因素(1)分配给进程的物理页面数(2)页面本身的大小(3)程序的编制方法(4)页面淘汰算法

  例子3:内存分配一页,初始时第一页在内存;页面大小为128个整数;矩阵A128X128按行存放

  1.缺页率对有效访问时间的影响在请求分页系统中,假设存储器的访问时间ma为100ns(一般为10ns~几百ns),缺页率为p,缺页中断时间为25ms,则有效访问时间就可以表示为:有效访问时间=(1一p)×ma十p×缺页中断时间=(1一p)×0.1十p×25000=0.1十24999.9p由上式可以看出,有效访问时间与缺页率成正比。如果缺页率为0.1%,则有效访问时间约为25μs,与直接访问存储器的有效访问时间(0.1μs)相比的时间,程序执行的性能将受到严重的影响。如果希望在缺页时,仅使有效访问时间延长不超过10%,则可计算出缺页率p=0.0000004,由此得出,要求在2500000次的访问中才发生一页缺页,即请求分页方式应保持非常低的缺页率;否则,将使程序执行速度受到严重影响。此外,提高磁盘I/O的速度,对改善请求分页系统的性能至关重要。为此,应选用高速磁盘和高速磁盘接口。

  2.工作集程序在运行中所产生的缺页情况,会影响程序的运行速度及系统性能,而缺页率的高低又将是与每个进程所占用的物理块数目有关。这里我们简单地分析一下应为每个进程分配多少个物理块,才能把缺页率保持在一个合理的水平上。缺页率与进程所分得的物理块数目有密切关系。下图说明了的缺页率与进程分得的物理块数目N之间的关系曲线。从图中可以看出,缺页率随着所分得的物理块数目的减少而递增,并在所分到的物理块数目较少处,出现一个拐点。在拐点上限以左时,随着分到的物理块数目的增加,缺页率明显地减少;而过了拐点,在下限以右时,随着分到的物理块数目的增加,却对缺页率的改善并不明显。所以,为进程分配的物理块数,应取在该曲线的拐点左右。

  缺页率拐点所分得的物理块数工作集的理论是在1968年由Denning提出来的。他认为,程序在运行时对页面的访问是不均匀的,即往往在某段时间内的访问仅局限于较少的若干个页面,如果能够预知程序在某段时间间隔内要访问哪些页面,并能将它们提前调入内存,将会大大地降低缺页率,从而减少置换工作,提高CPU的利用率。

  所谓工作集是指,在某段时间间隔(Δ)里,进程实际要所谓工作集是指,在某段时间间隔()里,进程实际要访问的页面的集合。Denning认为,虽然程序只需有少量的几页在内存就可以运行,但为了使程序能够有效地运行,较少地产生缺页、就必须使程序的工作集全部在内存中。把某进程在时间t的工作集记为w(t,Δ),把变量Δ称为工作集“窗口尺寸”(WindowsSize)。正确选择工作集窗口(Δ)的大小,对存储器的有效利用和系统吞吐量的提高,都将产生重要的影响。在WindowsNT中,虚拟存储管理程序(VirtualMemoryManager)为每一个进程分配固定数量的页面,并且这个数目可以进行动态的调整。那么这个数量如何确定?又如何进行动态的调整呢?这个数目就是由每个进程的工作集来确定,并且根据主存的负荷和进程的缺页情况动态地调整其工作集。

  其具体的作法是:一个进程在创建时就指定了一个最小工作集,该工作集的大小是保证进程运行在主存中应有的最小页面数。但在主存负荷不太大(页面不太满)时,虚存管理程序还允许进程拥有尽可能多的页面作为其最大工作集。当主存负荷发生变化时,如空闲页架(块)不多了,虚存管理程序就使用“自动调整工作集”的技术来增加主存中可用的自由页架。方法是检查主存中的每个进程,将它当前工作集大小与其最小工作集进行比较。如果大于最小值,则从它们的工作集中移去一些页面作为主存自由页面,可为其它进程所使用。若主存自由页面仍然太小,则不断进行检查,直到每个进程的工作集都达到最小值为止。当每个工作集都已达到最小值时,虚存管理程序跟踪进程的缺页数量,根据内存中自由页面数量可以适当增加其工作集的大小。

  这里要讨论的问题是分给每个进程多少物理页面,以及这里要讨论的问题是分给每个进程多少物理页面,以及如何动态调整各进程的物理页面数。如何动态调整各进程的物理页面数。

  常驻集指虚拟页式管理中给进程分配的物理页面数目。常驻集指虚拟页式管理中给进程分配的物理页面数目。常驻集与缺页率的关系:

  每个进程的常驻集越小,则同时驻留内存的进程就越多,可以提高并行度和处理器利用率;另一方面,进程的缺页率上升,使调页的开销增大。进程的常驻集达到某个数目之后,再给它分配更多页面,缺页率不再明显下降。该数目是缺页率-常驻集大小曲线上的拐点(curve)。

  固定分配(fixed-allocation):常驻集大小固定。各固定分配:常驻集大小固定。各进程平均分配,根据程序大小按比例分配,优先权进程平均分配,根据程序大小按比例分配,优先权可变分配(variable-allocation):常驻集大小可可变分配:常驻集大小可变,按照缺页率动态调整(高或低-增大或减小变,按照缺页率动态调整(高或低-增大或减小常驻集),性能较好。增加算法运行的开销。常驻集),性能较好。增加算法运行的开销。

  置换范围(replacementscope):被置换的页面局限在本进程,或允许在其他进程。

  局部置换(localreplacement):容易进行性能分析局部置换:容易进行性能分析全局置换(globalreplacement):更为简单,容易全局置换:更为简单,容易实现,运行开销小

  固定分配+局部置换:这时的主要问题进程开始固定分配局部置换:这时的主要问题进程开始前要依据进程类型决定分配多少页面。多了会影响并发水平,少了会使缺页率过高。可变分配+局部置换:局部转换但在大尺度上进可变分配局部置换:局部转换但在大尺度上进行可变分配。可变分配+全局置换:这时OS会一直维持一定数可变分配全局置换:这时会一直维持一定数目的空闲页面,以快速置换;这时的主要问题是置换策略的选择,如何决定哪个进程的页面将被调出。较好的选择是页面缓冲算法。不包括“固定分配全局置换(因为对各进程进行不包括固定分配全局置换”(因为对各进程进行固定分配时不可能进行全局置换)。

  1.改善时间性能的途径降低缺页率:缺页率越低,虚拟存储器的平均访问降低缺页率:缺页率越低,虚拟存储器的平均访问时间延长得越小;提高外存的访问速度:外存和内存的访问时间比值提高外存的访问速度:外存和内存的访问时间比值越大,则达到同样的平均访问时间,所要求的缺页率就越低;即在平均访问时间不变的条件下,外存速度越快,要求的缺页率就越松(高);速度越快,要求的缺页率就越松高;

  随着驻留内存的进程数目增加,或者说进程并发水平(multiprogramminglevel)的上升,处理器利用率先是上升,然后下降。这里处理器利用率下降的原因通常称为虚拟存储器发生“抖动”,也就是:每个进程的常驻集不断减小,缺页率不断上升,频繁调页使得调页开销增大。OS要选择一个适当的进程数目,以在并发水平和缺页率之间达到一个平衡。

  决定驻留内存的进程数目,在避免出现抖动的前题下,尽可能提供进程并发水平。OS不能完全控制进程的创建,但它可通过进程挂起来不能完全控制进程的创建,但它可通过进程挂起来减少驻留内存的进程数目。即:需要减少驻留内存的进程数目时,可以将部分进程挂起并全部换出到外存上。如:低优先级的、缺页率高的、常驻集最小的、页面最多的,等等。

  基于工作集策略的算法(如基于工作集策略的算法(如PFF,VSWS):它们):它们隐含负载控制策略,只有那些常驻集足够大的进隐含负载控制策略,只有那些常驻集足够大的进程才能运行,从而实现对负载的自动和动态控制。L=S判据策略(Denning,1980):让缺页的判据策略():让缺页的平均间隔时间(是指真实时间而不是虚拟时间)平均间隔时间(是指真实时间而不是虚拟时间)等于对每次缺页的处理时间(即缺页率保持在最等于对每次缺页的处理时间(即缺页率保持在最佳水平),这时CPU的利用率达到最大。假设系佳水平),这时的利用率达到最大。(假设系统中CPU和缺页处理两部分同时满负荷工作时,统中和缺页处理两部分同时满负荷工作时,系统利用率最高)系统利用率最高基于轮转置换算法的负载控制策略:基于轮转置换算法的负载控制策略:

  定义一个轮转计数,描述轮转的速率(即扫描环形页面链的速率)。当轮转计数少于一定的阈值时,表明缺页较少或存在足够的空闲页面;

  请求分段系统在分段系统的基础上实现的虚拟存储器,是以分段为单位进行换入、换出的。在程序运行之前只要先调入若干个分段(不必调入所有的分段),便可启动运行。当所访问的段不在内存时可请求OS将所缺的段调入内存。为实现请求分段存储管理方式,同样需要一定的硬件支持和相应的软件,有段表机制、缺段中断机构以及地址变换机构。

  1.段表机制在请求分段式管理中在段表中增加若干项,以供程序在调进、调出时参考。请求分段的段表项如下:段段段的存取访问修改存在增补外存名长基址方式字段A位M位P位起址

  在段表项中,除了段名(号)、段长、段在内存的起始地址外,还增加了以下几项:存取方式:用于标识本分段的存取属性是只执行、只读,还是允许读/写。访问字段A:用于记录该段被访问的频繁程度。修改位M:用于表示该段进入内存后,是否已被修改过。存在位P:说明本段是否已调入内存。增补位:用于表示本段在运行过程中,是否进行过动态增长。外存起址:指示本段在外存中的起始地址,即起始盘块号。2.缺段中断机构在请求分段系统中,采用的是请求调段策略。即当进程所要访问的段未调入内存时,便由缺段中断机构产生一缺段中断信

  阻塞请求的进程N从外存读入段修改段表和内存空闲链唤醒请求进程拼接后形成合适大小的空闲区N淘汰一个或几个段以形成合适大小的空闲区

  3。地址变换机构地址变换机构请求分段系统中的地址变换机构,是在分段系统地址变换机构的基础上形成的。由于被访问的段并非全在内存,所以在地址变换时,若发现所要访问的段不在内存时,必须先将所缺的段调入内存,并修改了段表之后,才能再利用段表进行地址变换。为此,在地址变换机制中又增加了某些功能,如缺段中断的请求及其处理等。

  4。段的动态链接经过编释或汇编得到的一组目标程序需经链接程序,连接装配成一个一维的线性连续地址空间,这一过程称为静态链接,但是这种连接装配过程既复杂又费时,还经常发生许多被连接好的摸块在作业运行过程中根本不用,而造成连接时的机时和主存空间的浪费,所以最好能采用什么时候用到那一段则连接该段的方法,这种方法称为动态连接方法。段的动态链接是指“在一个程序运行开始时,只将主程序装配好并调入主存,其它各段的装配是在主程序段运行过程中逐步进行的,每当需要调用一个新段时,再将该段装配好,并与主程序段连接。在分段存储管理环境中,由于逻辑地址空间是二维的,每段有自己的段名,因而实现动态连接比较容易。5。请求段页式地址变换机构式地址变换机构如下图::

  计算有效地址访问地址v=(s,p,d)NNN执行下一条指令N访问该地址完成指令N形成主存地址N缺页中断处理N越界中断处理连接中断处理缺段中断处理

  分段存储管理方式实现分段的共享和保护只须在每个进程的段表中,用相应的表项来指向共享段在内存中的起始地址。为了实现分段共享,应配置相应的共享段表,用来对共享段进行操作。在系统中,用共享段表来记录了每一个共享段的段号和段长、内存始址、存在位等信息,并记录共享此分段的每个进程的情况。共享段表如下图所示。

  段名段长内存起址状态外存起址其中:共享进程计数器COUNT共享进程计数器COUNT:记录有多少个进程需要共享该分状态段。进程号段号存取控制进程名存取控制字段:说明不同的进程对该分段不同的存取权限。段号:对于同一个共享段,不同的进程可以使用不同的段号去共享该段。

  (1)Intel80386提供的存储管理方式在Inte180386芯片中,包含了存储管理部件MMU(MemoryManagementUnit),由它来提供实现虚拟存储器所需的硬件支持,即请求段表(页表)机制、缺段(页)机构、地址变换机构。其地址变换过程分两步进行,第一步由分段部件将逻辑地址转换为线性地址,并将该地址送分页部件;第二步由分页部件将线性地址变换为物理地址。如果仅用分段存储管理方式,其分页部件将被旁路(失效),此时分段部件送出的线性地址便是物理地址,直接送内存地址寄存器。为了提高分段和分页的地址变换速度,在分段和分页部件中,都配置了高速缓冲存储器,作为快速段表和页表。80386既支持分段,也支持分页,可根据需要构成以下四种存储管理方式:1.不分段也不分页的存储管理方式。

  2.分页不分段存储管理方式(UNIX/386系统)。3.分段不分页存储管理方式。4.分段分页存储管理方式。(2)分段存储管理1.段描述符表80386为每个用户任务所配置的段表,称为局部描述符表LDT(LocalDescriptorTable)。其中,每个表项为一个段的描述符,共8个字节长。此外,还配置了一张对系统任务都有用的全局描述符表GDT(GlobalDescriptorTable)。在任一时刻GDT和某一个LDT是可被访问的,在分段部件中,还配置了全局描述符表寄存器GDTR和局部描述符表寄存器LDTR。它们都是6个字节长,分别指向当前的GDT和LDT。两个描述符的格式基本上相同。如图所示。各字段说明如下:

  段的基址:32位,定义了段在4GB线性地址空间中的始址。段界限值:规定了段的最大长度。其单位可以是字节或页(4KB),这取决于粒度单位G。当G为1时,表示段长是以页为单位;当G为0时,表示段长以字节为单位。由于段长为20位,故当G为1时,最大段长为4GB。段的基址15……0段界限值15……0段基址GD00界限值PDPLSTYPEA段基址31…2419…1623…16

  2.分段的地址变换机构段寄存器在80386处理器中,共有6个段寄存器。它们是:代码段寄存器CS、栈段寄存器SS、四个数据段寄存器DS、ES、FS和GS。段寄存器和8086一样仍为16位。在实方式时,段中存放段的基址的高16位。因此,将它左移4位后与偏移量相加,便形成20位的物理地址。但在保护方式下,16位的段寄存器已不足以用来存放32位的段的基址,所以在段寄存器中所存放的是指向描述符表中某个描述符的指针。此时,段寄存器中的TI(l位)用来指示描述符表的类型,即或者指示选择全局描述符表,或者指示选择局部描述符表。RPL(2位)为请求者的特权级。描述符表项索引Index(13位)可用来在8K个描述符中任选其一。虚地址结构和地址变换

  在80386中的虚地址结构如下:13位1位2位32位段号STIRPL偏移量其中,TI为描述符表类型;RPL是请求者特权级;S为段号Index项,用来选择描述符。其前16位实际上是放在段寄存器中的。分段部件中,是将逻辑地址变换为线性地址,在进行地址变换时,首先是从相应的段寄存器中取得段号S,即获得指向段描述符表的指针Index,如果此时TI=0,则从GDT中选择一描述符;否则(TI=1),从LDT中选择一描述符。从所获得的描述符中可得到段的基址,然后将段的基址与偏移量相加,得到线性地址。对于只分段、不分页的存储管理方式,此线性地址就是内存的物理地址;若是既分段、又分页的存储管理方式,则还须将此线性地址送分页部件,再形成物理地址。

  (3)Windows98系统地址空间的划分Intel386以后的CPU有了32位或64位的内存寻址范围,所以系统的地址空间可达4GB或更大。在Windows98系统提供了4GB虚拟的32位的地址空间,给每个进程分配2GB的专用地址空间,而把剩余的2GB地址空间分成系统空间(1GB)和用于所有的共享内存区域的单个共享的用户空间(1GB)。这个1GB的共享区域对于用户态是可写的,所以任何Win32应用程序都可以写共享内存区和映象文件(映象文件是指把驻留在盘上的文件看成是虚拟主存的一部分)。MS-DOS应用程序和Win16应用程序也都在这个共享的空间中。WindowsNT将共享内存区域放在专用进程地址空间内。每一个基于MS-DOS的程序和32位Windows程序都有各自的4GB虚拟地址空间。16位Windows应用程序共享单个的4GB地址空间。4GB的地址空间分为两部分:2GB用于用户应用程序,2GB用于操作系统组件。程序以如下方式使用虚拟地址空间里的地址:

  0~1MB:基于MS-DOS的程序就像真的在MS-DOS环境中运行那样使用这些地址,所有其它程序将忽略这些地址。这些地址仍可为程序加载的实模式设备驱动程序所使用。1~4MB:由于WindowsNT在这些地址空间上加载,为了维护与NT的兼容性,Windows98与32位程序也不使用这一段地址空间。但由于向下兼容的缘故,16位程序使用这些地址。4MB~2GB:WIN32应用程序使用。2GB~3GB:由DLL(动态链接库)和其它共享组件使用。3GB~4CB:低层的内存管理、文件系统、驱动程序(VxD)使用。这些地址一般是Ring0组件使用。

  (4)VMM——虚拟存储管理程序(4)——虚拟存储管理程序Windows98用虚拟存储管理程序(VirtualMemoryManager)来实现请求调页的虚拟存储技术,把系统4GB的虚拟地址空间映射到机器的物理内存上(32MB或64MB)。Windows98的虚拟存储管理程序通过两个内存管理进程向应用程序提供虚拟内存:一个是页面调度(paging)——负责在物理内存和硬盘的交换文件之间交换数据;另一个是地址转换——负责物理地址和虚拟地址空间的地址或映象文件I/O之间的转换。VMM将物理内存分成一个个大小为4KB页面(或称为块)。将虚拟地址空间(应用程序所在的空间)也划分成4KB大小的页。当程序要运行时,一部分页面被装入物理内存,另一部分则放在硬盘的虚似内存交换文件(或称为页交换文件)中。交换文件是指位于硬盘上用来模拟物理内存的文件,它由VMM专门用来保存内存页面,作为虚拟内存空间使用。

  当程序访问那些不在内存中的页面时,CPU会产生页面出错(PageFault),VMM便会从交换文件中将相应的页面换入内存。Windows98交换文件(Win386.swp)是动态的,它可根据系统内存的负荷和可利用的磁盘空间大小而增大或减小。动态交换文件可以对硬盘进行有效的利用,因为它可占用硬盘的一个已成碎片的区域,而不引起重大的性能下降。注意:保证交换文件高质量运行的一条最好的途径是:确保包含交换文件的磁盘有足够的可利用的空间,以便交换文件的大小可以根据需要增大或减小。一般情况下,可以让Windows98自动管理虚拟内存。如果用户想要把交换文件设置在特定的硬盘上,或者由于磁盘空间有限想把交换文件的大小限制在一定范围,就要修改设置。但是在设置时,特别要注意:交换文件太小会严重影响系统的性能。

  交换文件(Win386.Swp)存放在C:\Window目录下。用户不应把交换文件安置在压缩硬盘上,因为这样做将影响其性能。交换文件的运行速度应当尽可能地快,应当定期对硬盘空间进行整理,以使交换文件能使用连续的存储区,这也有助于提高交换文件访问的速度。在WindowsNT中,交换文件可跨越多个驱动器,其名为Pagefile.sys。(5)页面置换算法Windows95/98虚拟内存管理器置换算法如下:1。调页算法:当某个线程试图访问一无效页面而产生页面出错(PageFault)时,VMM采用群集技术将其邻近的页面与页面目录一起装入内存的空闲块中。所谓群集技术是指当需要调一页时,将包括该页在内的一个页面集合取入内存的空闲块中,这样可以减小页面出错和磁盘操作的次数。

  2。淘汰算法:如果内存中没有空闲块,VMM会使用淘汰算法将页面从内存移到交换文件中。每个进程在内存中都有一组有效的页面——工作集,以保证进程的有效运行。为简化起见,VMM使用先进先出的算法(FIFO)。即当需要进行页面淘汰时,VMM将工作页面集中存在时间最长的页面从内存中移到交换文件中,为新页面腾出空间。由于淘汰页是当前进程的工作页面集,所以可以保证其他进程的页面不会被另外的进程所替代。(6)页表结构Windows95/98/NT支持的虚拟地址空间达4GB,都采用二级页表机构来管理虚拟存储空间。前已讲过。

  (7)映象文件I/O当应用程序将要装入的文件大小比RAM和交换文件合起来还要大时,VMM的映象文件I/O服务功能可以将虚拟内存地址映射到一个大文件中,并通知应用程序此文件可用,然后仅将应用程序实际需要访问的那部分装入内存。由于整个大文件中只有一部分装入内存(RAM或交换文件),极大地减少了文件装入时间,提高了系统资源的使用。这对于那些经常需要访问巨型文件的数据库应用程序来说是一个非常有用的服务。(8)页面锁定对有特殊要求的应用程序和系统核心的页面,VMM可授予进程特殊权限,以将选定的虚拟内存页面锁定在工作页面集中,这样关键页面在使用过程中便不会被换出内存。

http://styleinch.com/gongxiangyebiao/415.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有