存储挂历虚拟储存器_第1页
存储挂历虚拟储存器_第2页
存储挂历虚拟储存器_第3页
存储挂历虚拟储存器_第4页
存储挂历虚拟储存器_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章存储管理虚拟存储器

(VirtualMemory)(续)

教学目的:

为了在内存空间运行超过内存总容量的大作业,或者

同时运行大量作业,解决的方法是从逻辑上扩充内存

容量,这就是虚拟存储技术所要解决的主要问题。本

课要介绍虚拟存储技术实现的各种方案,每种方案所

需的硬件和软件支持。

教学要求:

掌握虚拟存储器的理论基础和定义,熟悉虚拟存储器实

现方式和特征。

掌握请求分页的页表机制、缺页中断机构和地址变换机

构,熟悉页面的分配和置换策略、页面的分配的算法。

熟练掌握最佳置换算法、先进先出(FIFO)置换算法、

最近最久未使用置换算法LRU,掌握Clock置换算法和页

面缓冲算法;掌握有效访问时间计算,熟悉工作集概

念。

掌握请求分段的段表机制、缺段中断机构和地址变换机

构,熟悉分段的共享和保护。

(-)虚拟存储器的基本概念

(1)虚拟存储器的引入

1.局部性原理

早在1968年P.Denning就指出过,程序在执行时将呈现出局部

性规律,即在一段时间内,程序的执行仅局限于某个部分;相

应地,它所访问的存储空间也局限于某个区域内。那么程序为

什么会出现局部性规律呢?原因可以归结为以下几点:

程序在执行时,除了少部分的转移和过程调用指令外,大

多数仍是顺序执行的。

子程序调用将会使程序的执行由一部分内存区域转至另一

部分区域。但在大多数情况下,过程调用的深度都不超过

5o

程序中存在许多循环结构,循环体中的指令被多次执行。

程序中还包括许多对数据结构的处理,如对连续的存储空

虚拟存储器的引入・工

所以局限性表现为:

时间局限性:如果程序中的某条指令一旦执行,则不久的

将来该指令可能再次被执行;如果某个存储单元被访问,

则不久以后该存储单元可能再次被访问。产生时间局限性

的典型原因是在程序中存在着大量的循环操作。

空间局限性:一旦程序访问了某个存储单元,则在不久的

将来,其附近的存储单元也最有可能被访问。即程序在

一段时间内所访问的地址,可能集中在一定的范围内,其

典型原因是程序是顺序执行的。

2o虚拟存储器的定义

根据局部性原理,一个作业在运行之前,没有必要把全部作

业装入内存,而仅将那些当前要运行的那部分页面或段,先

装入内存便可启动运行,其余部分暂时留在磁盘上。

虚拟存储器的引入・2

程序在运行时如果它所要访问的页(段)已调入内存,便可继

续执行下去;但如果程序所要访问的页(段)尚未调入内存

(称为缺页或缺段),此时程序应利用os所提供的请求调页

(段)功能,将它们调入内存,以使进程能继续执行下去。

如果此时内存已满,无法再装入新的页(段),则还须再

利用页(段)的置换功能,将内存中暂时不用的页(段)

调出至磁盘上,腾出足够的内存空间后,再将所要访问的

页(段)调入内存,使程序继续执行下去。这样,便可使

一个大的用户程序在较小的内存空间中运行;也可使内存

中同时装入更多的进程并发执行。从用户角度看,该系统

所具有的内存容量,将比实际内存容量大得多,人们把这

样的存储器称为虚拟存储器。

虚拟存储器的引入・3

虚拟存储器是具有请求调入功能和置换功能,能仅把作业

的一部分装入内存便可运行作业的存储器系统,它能从逻

辑上对内存容量进行扩充的一种虚拟的存储器系统。其逻

辑容量由内存和外存容量之和所决定,其运行速度接近于

内存速度,而每位的成本却又接近于外存。可见,虚拟存

储技术是一种性能非常优越的存储器管理技术,故被广泛

地应用于大、中、小型机器和微型机中。

(2)虚拟存储器实现方式

1。请求分页系统:

它是在分页系统的基础上,增加了请求调页功能和页面置换功

能所形成的页式虚拟存储系统。它允许只装入若干页(而非全

部程序)的用户程序和数据,就可以启动运行,以后再通过调

页功能和页面置换功能,陆续把将要运行的页面调入内存,同

时把暂不运行的页面置换到外存上,置换时以页面为单位。

2。请求分段系统:

它是在分段系统的基础上,增加了请求调段和分段置换功能所

形成的段式虚拟存储系统。它允许只装入若干段(而非全部

段)的用户程序和数据,就可以启动运行,以后再通过调段功

能和置换功能将不运行的段调出,同时调入将要运行的段,置

换以段为单位。

3o请求段页式系统:它是在段页式系统的基础上,增加了请

求调页和页面置换功能所形成的段页式虚拟存储系统。

虚拟存储器实现方式・工

(3)虚拟存储器的特征

离散性:指在内存分配时采用离散的分配方式,它是虚拟

存储器的最基本的特征。

多次性:指一个作业被分成多次调入内存运行,即在作业

运行时没有必要将其全部装入,只须将当前要运行的那部

分程序和数据装入内存即可。多次性是虚拟存储器最重要

的特征。

对换性:指允许在作业的运行过程中在内存和外存的对换

区之间换进、换出。

虚拟性:指能够从逻辑上扩充内存容量,使用户所看到的

内存容量远大于实际内存容量。

(二)请求分页存储管理方式

(1)请求分页中的硬件支持

它是在纯分页系统的基础上,增加了请求调页功能、页面置换

功能所形成的页式虚拟存储系统,它是目前常用的一种虚拟存

储器的方式。

1.请求分页的页表机制

它是在纯分页的页表机制上形成的,由于只将应用程序的一部

分调入内存,还有一部分仍在磁盘上,故需在页表中再增加若

干项,供程序(数据)在换进、换出时参考。在请求分页系统中

的每个页表项如图所示。

请求分页中的硬件支持T

其中各字段说明如下:

状态位(存在位P):用于指示该页是否已调入内存,供

程序访问时参考。

访问字段A:用于记录本页在一段时间内被访问的次数,

或最近已有多长时间未被访问,提供给置换算法选择换出

页面时参考。

修改位M:表示该页在调入内存后是否被修改过。由于内

存中的每一页都在外存上保留一份副本,因此,若未被修

改,在置换该页时就不需将该页写回到外存上,以减少系

统的开销和启动磁盘的次数;若已被修改,则必须将该页

重写到外存上,以保证外存中所保留的始终是最新副本。

外存地址:用于指出该页在外存上的地址,通常是物理块

号,供调入该页时使用。

请求分页中的硬件支持-2

2.缺页中断机构

在请求分页系统中,每当所要访问的页面不在内存时,便要产

生一缺页中断,请求OS将所缺页调入内存。与一般中断的主要

区别在于:

缺页中断在指令执行期间产生和处理中断信号,而一般中

断在一条指令执行完后检查和处理中断信号。

缺页中断返回到该指令的开始重新执行该指令,而一般中

断返回到该指令的下一条指令执行。

一条指令在执行期间,可能产生多次缺页中断。

3.地址变换机构

请求分页系统中的地址变换机构,是在分页系统的地址变换机

构的基础上,再为实现虚拟存储器而增加了某些功能所形成

的,如产生和处理缺页中断,以及从内存中换出一页的功能等

等,下图给出了请求分页系统的地址变换过程。

(2)页面分配

1.最少物理块数

在为进程分配物理块时,首先应该考虑的问题是:能保证进程

能正常运行所需的最少物理块数(称为最小物理块数)。若系

统为某进程所分配的物理块数少于此值时,进程将无法运行,

这取决于指令的格式、功能和寻址方式。

2.页面的分配和置换策略

在请求分页系统中,可采取两种分配策略一一固定和可变分配

策略。在进行置换时,也可采取两种策略一一全局置换和局部

置换。于是可组合成以下三种策略:

固定分配局部置换策略:它基于进程的类型(交互型或批

处理型等),或根据程序员、系统管理员的建议,为每个

进程分配一固定页数的内存空间,在整个运行期间都不再

改变。如果进程在运行中发现缺页,则只能从该进程在内

存的固定页面中选出一页换出,然后再调入另一页,保证

分配给该进程的内存空间不变。

页面分配T

可变分配全局置换策略:系统为每个进程分配一定数目的

物理块,而os本身也保持一个空闲物理块队列。当某进程

发现缺页时,由系统从空闲物理块队列中,取出一物理块

分配给该进程,并将欲调入的缺页装入其中。当空闲物理

块队列中的物理块用完时,OS才能从内存中选择一页调

出,该页可能是系统中任一进程的页。

可变分配局部置换:根据进程的类型或程序员的要求,为

每个进程分配一定数目的内存空间;但当某进程发生缺页

时,只允许从该进程在内存的页面中选出一页换出,而不

影响其它进程的运行。

页面分配-2

3.页面分配算法

在采用固定分配策略时,可采用以下几种物理块分配方法:

平均分配算法:将系统中所有可供分配的物理块,平均分

配给各个进程。

按比例分配算法:这是根据进程的大小按比例分配物理

块。

考虑优先权的分配算法:该方法是把内存中可供分配的所

有物理块分成两部分:一部分按比例分配给各进程;另一

部分则根据各进程的优先权,适当地增加其相应份额后,

分配给各进程。

⑶页面调入策略

为能使进程运行,必须事先将一部分要执行的程序和数据调入

内存。

1.调入页面的时机

为了将进程运行时所缺的页面调入内存,可采取策略有:

预调页策略是一种主动的缺页调入策略,即将那些预计在

不久的将来会被访问的程序或数据所在的页面,预先调入

内存。由于预测的准确率不高(50%),所以这种策略主要

用于进程的首次调入。有的系统将预调页策略用于请求调

页,例如在VAX/VMS操作系统中,采用了一种称为群页式的

调页策略,当系统将进程所请求的页面调入内存时,也同

时将其相邻的几个页面调入内存。

请求调页策略是指当进程在运行中发生缺页时,就立即提

出请求,由系统将缺页调入内存。目前的虚拟存储器中,

大多采用此策略。但这种策略在调页时须花费较大的系统

开销,如需频繁启动磁盘I/。。

页面调入策略-1

2o从何处调入页面

在虚拟存储系统中,外存(硬盘)常常被分成两部分;

文件区(用于存放文件)和对换区(用于存放对换页

面)。通常,对换区的磁盘I/O速度比文件区要高。

每当进程发出缺页请求时,系统应从何处将缺页调入内

存呢?在UNIX系统中,对于从未运行过的页面,都应从

硬盘文件区调入;对于曾经运行过而又被换出的页面,

可以从对换区调入;对于共享页面,该页面可能已由其

它进程调入内存,此时就无须再从对换区调入。

(三)页面置换算法

(PageReplacement

在进程运行过程中,如果发生缺页,此时内存中又无空闲块

时,为了保证进程能正常运行,就必须从内存中调出一页程序

或数据送磁盘的对换区。但将哪个页面调出,则须根据一定的

页面置换算法来确定。置换算法的好坏将直接影响系统的性

能,不适当的算法可能会导致进程发生“抖

动”(Thrashing)o即刚被换出的页很快又被访问,需重新调

入,导致系统频繁地更换页面,以致一个进程在运行中把大部

分时间花费在完成页面置换的工作上,我们称该进程发生

了“抖动”(颠簸)。

从理论上讲,应将那些以后不再被访问的页面换出,或把那些

在较长时间内不会再被访问的页面换出。下面介绍几种常用的

置换算法。

页面置换算法T

(1)最佳(Optimal)置换算法

它是一种理想化的算法,性能最好,但在实际上难于实现。即

选择那些永不使用的,或者是在最长时间内不再被访问的页面

置换出去。但是要确定哪一个页面是未来最长时间内不再被访

问的,目前来说是很难估计的,所以该算法通常用来评价其它

算法。

例:假定系统为某进程分配了三个物理块,并考虑有以下

的页面号引用串:

7,0,L2,0,3,0,4,2,3,0,3,2,L2,0,L

7,0,lo如下图所示,进程运行时先将7,0,1三个页面

装入内存。当进程访问页面2时,产生缺页中断,此时OS根

据最佳置换算法,页面7将在第18次才被访问,是三页中将

最久不被访问的页面,所以被淘汰。接着访问页面。时,发

现已在内存中,而不会产生缺页中断,以此类推。从图可

最佳(Optimal)置换算法T

发生了6次面置换,9次缺页中断。

⑵先进先出(FIFO)置换算法

(3)最近最久未使用置换算法

(4)Clock置换算法

(最近未用算法NUR(NotUsedRecently))

将最近一段时间未引用过的页面换出

Clock置换算法-1

块号页号访问位指针替换指针

0始指向最近被替

1换的4号页所

24U4在块的块号2

3

2f6

4

21-06被调入页的页

5

号为6

65f60一17

'/112

简单Clock置换算法的数据结构一存储器分

例子1:计算缺页次数

某程序在内存中分配三个页面,初始

为空,页面走向为

4,3,2,1,4,3,5,4,3,2,1

FIFO432143543215

页1432143555211

页243214333522

页34321444355

XXXXXXXXX

共缺页中断9次

LRU432143543215

页1432143543215

页243214354321

页34321435432

XXXXXXXXXX

共缺页中断10次

理想淘汰算法一最佳页面算法(OPT)

淘汰以后不再需要的或最远的将来才会用到的

页面

OPT432143543215

M1432111555211

页243333333555

页34444444444

XXXXXXX

共缺页中断7次

例子2:计算缺页次数

某程序在内存中分配m页初始为空,

页面走向为

1,2,3,4,1,2,5,1,2,3,4

,5o当m=3,m=4时缺页中断分别

例子2:计算缺页次数

m=3时,缺页中断9次

m=4时,缺页中断10次

注:FIFO页面淘汰算法会产生异常现

象(Begdy现象),即:当分配给进

程的物理页面数增加时,缺页次数反

而增加

5、影响缺页次数的因素

(1)分配给进程的物理页面数

(2)页面本身的大小

(3)程序的编制方法

(4)页面淘汰算法

例子3:内存分配一页,初始时第一页在内

存;页面大小为128个整数;矩阵A128X128

按行存放

程序编制方法1:程序编制方法2:

Forj:=lto128Fori:=lto128

Fori:=lto128Forj:=lto128

A[iJ]:=0;A[iJ]:=0;

(5)性能分析

1.缺页率对有效访问时间的影响

在请求分页系统中,假设存储器的访问时间ma为100ns(一般

为10郎~几百115),缺页率为p,缺页中断时间为25ms,则有

效访问时间就可以表示为:

有效访问时间二(l-p)Xma十pX缺页中断时间

=(1—p)X0.1+pX25000=0.1+24999.9p

由上式可以看出,有效访问时间与缺页率成正比。如果缺页率

为0.1%,则有效访问时间约为25口,与直接访问存储器的有效

访问时间(0.1口)相比的时间,程序执行的性能将受到严重

的影响。如果希望在缺页时,仅使有效访问时间延长不超过

10%,则可计算出缺页率p=0.0000004,由此得出,要求在

2500000次的访问中才发生一页缺页,即请求分页方式应保持

非常低的缺页率;否则,将使程序执行速度受到严重影响。此

外,提高磁盘I/O的速度,对改善请求分页系统的性能至关重

要。为此,应选用高速磁盘和高速磁盘接口。

性能分析T

2.工作集

程序在运行中所产生的缺页情况,会影响程序的运行速度

及系统性能,而缺页率的高低又将是与每个进程所占用的

物理块数目有关。这里我们简单地分析一下应为每个进程

分配多少个物理块,才能把缺页率保持在一个合理的水平

上。

缺页率与进程所分得的物理块数目有密切关系。下图说明了的

缺页率与进程分得的物理块数目N之间的关系曲线。从图中可

以看出,缺页率随着所分得的物理块数目的减少而递增,并在

所分到的物理块数目较少处,出现一个拐点。在拐点上限以左

时,随着分到的物理块数目的增加,缺页率明显地减少;而过

了拐点,在下限以右时,随着分到的物理块数目的增加,却对

缺页率的改善并不明显。所以,为进程分配的物理块数,应取

在该曲线的拐点左右。

性能分析-2

缺页警

拐点

所分得的物吗数

工作集的理论1968年由Denning提出来的。他认为,

程序在运行时对负面在某段时

同内的访问仅局限于较少的若干不贡而就w够预知程

序在某段时间间隔内要访问哪些页面,并能将它们提前调

入内存,将会大大地降低缺页率,从而减少置换工作,提

高CPU的利用率。

性能分析-3

所谓工作集是指,在某段时间间隔(A)里,进程实际要

访问的页面的集合。Denning认为,虽然程序只需有少量

的几页在内存就可以运行,但为了使程序能够有效地运

行,较少地产生缺页、就必须使程序的工作集全部在内存

中。把某进程在时间t的工作集记为w(t,A),把变量△

称为工作集“窗口尺寸”(WindowsSize)。正确选择工

作集窗口(△)的大小,对存储器的有效利用和系统吞吐

量的提高,都将产生重要的影响。

在WindowsNT中,虚拟存储管理程序(VirtualMemory

Manager)为每一个进程分配固定数量的页面,并且这个数

目可以进行动态的调整。那么这个数量如何确定?又如何

进行动态的调整呢?这个数目就是由每个进程的工作集来

确定,并且根据主存的负荷和进程的缺页情况动态地调整

其工作集。

性能分析-4

其具体的作法是:一个进程在创建时就指定了一个最小工

作集,该工作集的大小是保证进程运行在主存中应有的最

小页面数。但在主存负荷不太大(页面不太满)时,虚存

管理程序还允许进程拥有尽可能多的页面作为其最大工作

集。当主存负荷发生变化时,如空闲页架(块)不多了,

虚存管理程序就使用“自动调整工作集”的技术来增加主

存中可用的自由页架。方法是检查主存中的每个进程,将

它当前工作集大小与其最小工作集进行比较。如果大于最

小值,则从它们的工作集中移去一些页面作为主存自由页

面,可为其它进程所使用。若主存自由页面仍然太小,则

不断进行检查,直到每个进程的工作集都达到最小值为

止。

当每个工作集都已达到最小值时,虚存管理程序跟踪进程的

缺页数量,根据内存中自由页面数量可以适当增加其工作集

的大小。

(6)常驻集和工作集策略

这里要讨论的问题是分给每个进程多少物理页面,以及

如何动态调整各进程的物理页面数。

1.常驻集(residentset)

常驻集指虚拟页式管理中给进程分配的。

常驻集与缺页率的关系:

常驻集驻留内存的进程

并行度和处理器利用率

缺页率调页的开销

到某个数目之后,再给它

再明显下降。该数目

返回

的确定方式:

围定分配

平均程序大小优先权

可变分配

缺页率

性能算法运行的开销

(replacementscope):被置换的页

面局限在本进程,或允许在其他进程。

局部置换性能分析

全局置换简单

常驻集大小和置换范围的配合:三种策略

固定分配+局部置换

可变分配+局部置换

可变分配+全局置换

(7)虚拟存储中的负载控制

这里要讨论的是OS要在内存中驻留多少个并发进程是较好的。

:缺页率越低,虚拟存储器的平均访问

时间延长得越小;

:外存和内存的访问时间比值

越大,则达到同样的平均访问时间,所要求的缺页

率就越低;即在平均访问时间不变的条件下,外存

速度越快,要求的缺页率就越松(高);

返回

2.抖动问题(thrashing)

随着驻留内存的进程数目增加,或者说进程并发

水平(multiprogramminglevel)的上升,

用率先是上升,然后下降。

这里处理器利用率下降的原因通常称为虚拟存储

器发生“抖动”,也就是:每个进程的常断

减小,缺断上升,频繁调页使得调

大。OS要选择一个适当的进程数目,以在

发水平和缺页率之间达到一个平衡。

决定驻留内存的进程数目,在避免出现抖动的前题下,

尽可能提供进程并发水平。

OS不能完全控制进程的创建,但它可通过进程挂起来

减少驻留内存的进程数目。即:需要减少驻留内存的进

程数目时,可以将部分进程挂起并全部换出到外存上。

如:低优先级的、缺页率高的、常驻集最小的、页面最

多的,等等。

的算法(如PFF,VSWS):它们

隐含负载控制策略,只有那些常驻集足够大的进

才能运行,从而实现对负载的自动和动态控

制。

(Denning,1980):让

(是指真实时间而不是虚拟时间)

等于对每次(即缺页率保持在最

佳水平),这时CPU的利用率达到最大。(假设系

统中CPU和缺页处理两部分同时满负荷工作时,

系统利用率最IWJ)

的负载控制策略:

轮转的速率

(四)请求分段存储管理方式

请求分段系统在分段系统的基础上实现的虚拟存储器,是以分

段为单位进行换入、换出的。在程序运行之前只要先调入若干

个分段(不必调入所有的分段),便可启动运行。当所访问的

段不在内存时可请求OS将所缺的段调入内存。为实现请求分段

存储管理方式,同样需要一定的硬件支持和相应的软件,有段

表机制、缺段中断机构以及地址变换机构。

(1)请求分段中的硬件支持

1.段表机制

在请求分段式管理中在段表中增加若干项,以供程序在调进、

调出时参考。请求分段的段表项如下:

请求分段中的硬件支持T

在段表项中,除了段名(号)、段长、段在内存的起始地址外,

还增加了以下几项:

存取方式:用于标识本分段的存取属性是只执行、只读,

还是允许读/写。

访问字段A:用于记录该段被访问的频繁程度。

修改位M:用于表示该段进入内存后,是否已被修改过。

存在位P:说明本段是否已调入内存。

增补位:用于表示本段在运行过程中,是否进行过动态增

长。

外存起址:指示本段在外存中的起始地址,即起始盘块

号。

2.缺段中断机构

在请求分段系统中,采用的是请求调段策略。即当进程所要访

问的段未调入内存时,便由缺段中断机构产生一缺段中断信

请求分段中的硬件支持T

请求分段中的硬件支持-2

3o地址变换机构

请求分段系统中的地址变换机构,是在分段系统地址变换机构

的基础上形成的。由于被访问的段并非全在内存,所以在地址

变换时,若发现所要访问的段不在内存时,必须先将所缺的段

调入内存,并修改了段表之后,才能再利用段表进行地址变

换。为此,在地址变换机制中又增加了某些功能,如缺段中断

的请求及其处理等。

请求分段中的硬件支持-3

4。段的动态链接

经过编释或汇编得到的一组目标程序需经链接程序,连接装配

成一个一维的线性连续地址空间,这一过程称为静态链接,但

是这种连接装配过程既复杂又费时,还经常发生许多被连接好

的摸块在作业运行过程中根本不用,而造成连接时的机时和主

存空间的浪费,所以最好能采用什么时候用到那一段则连接该

段的方法,这种方法称为动态连接方法。段的动态链接是

指”在一个程序运行开始时,只将主程序装配好并调入主存,

其它各段的装配是在主程序段运行过程中逐步进行的,每当需

要调用一个新段时,再将该段装配好,并与主程序段连接。在

分段存储管理环境中,由于逻辑地址空间是二维的,每段有自

己的段名,因而实现动态连接比较容易。

5o请求段页式地址变换机构如下图:

N

(2)分的共享与俣护

分段存储管理方式实现分段的共享和保护只须在每个进程的段

表中,用相应的表项来指向共享段在内存中的起始地址。为了

实现分段共享,应配置相应的共享段表,用来对共享段进行操

作。

在系统中,用共享段表来记录了每一个共享段的段号和段长、

内存始址、存在位等信息,并记录共享此分段的每个进程的情

况。共享段表如下图所示。

分段共享与保护T

(五)Windows98虚拟存储技术

(1)Intel80386提供的存储管理方式

在Intel80386芯片中,包含了存储管理部件MMU(Memory

ManagementUnit),由它来提供实现虚拟存储器所需的硬件

支持,即请求段表(页表)机制、缺段(页)机构、地址变换

机构。其地址变换过程分两步进行,第一步由分段部件将逻辑

地址转换为线性地址,并将该地址送分页部件;第二步由分页

部件将线性地址变换为物理地址。如果仅用分段存储管理方

式,其分页部件将被旁路(失效),此时分段部件送出的线性

地址便是物理地址,直接送内存地址寄存器。为了提高分段和

分页的地址变换速度,在分段和分页部件中,都配置了高速缓

冲存储器,作为快速段表和页表。

80386既支持分段,也支持分页,可根据需要构成以下四种存

储管理方式:

1.不分段也不分页的存储管理方式。

Windows98虚拟存储技术-1

2.分页不分段存储管理方式(UNIX/386系统)。

3.分段不分页存储管理方式。

4.分段分页存储管理方式。

(2)分段存储管理

1.段描述符表

80386为每个用户任务所配置的段表,称为局部描述符表

LDT(LocalDescriptorTable)。其中,每个表项为一*个段

的描述符,共8个字节长。止匕外,还配置了一张对系统任务都

有用的全局描述符表GDT(GlobalDescriptorTable)。在任

一时刻GDT和某一个LDT是可被访问的,在分段部件中,还配

置了全局描述符表寄存器GDTR和局部描述符表寄存器LDTR。它

们都是6个字节长,分别指向当前的GDT和LDT。两个描述符的

格式基本上相同。如图所示。

各字段说明如下:

Windows98虚拟存储技术-2

段的基址:32位,定义了段在4GB线性地址空间中的始址。

段界限值:规定了段的最大长度。其单位可以是字节或页

(4KB),这取决于粒度单位G。当G为1时,表示段长是以

页为单位;当G为0时,表示段长以字节为单位。由于段长

为20位,故当G为1时,最大段长为4GBo

312319161512870

Windows98虚拟存储技术-3

2.分段的地址变换机构

段寄存器

在80386处理器中,共有6个段寄存器。它们是:代码段寄存器

CS、栈段寄存器SS、四个数据段寄存器DS、ES、FS和GS。段

寄存器和8086一样仍为16位。在实方式时,段中存放段的基址

的高16位。因此,将它左移4位后与偏移量相加,便形成20位

的物理地址。但在保护方式下,16位的段寄存器已不足以用来

存放32位的段的基址,所以在段寄存器中所存放的是指向描述

符表中某个描述符的指针。此时,段寄存器中的TI(1位)用

来指示描述符表的类型,即或者指示选择全局描述符表,或者

指示选择局部描述符表。RPL(2位)为请求者的特权级。描述

符表项索引Index(13位)可用来在8K个描述符中任选其一。

虚地址结构和地址变换

Windows98虚拟存储技术-4

在80386中的虚地址结构如下:

中的。

分段部件中,是将逻辑地址变换为线性地址,在进行地址变换

时,首先是从相应的段寄存器中取得段号S,即获得指向段描

述符表的指针Index,如果此时TI=0,则从GDT中选择一描述

符;否则(TI=1),从LDT中选择一描述符。从所获得的描述

符中可得到段的基址,然后将段的基址与偏移量相加,得到线

性地址。对于只分段、不分页的存储管理方式,此线性地址就

是内存的物理地址;若是既分段、又分页的存储管理方式,则

还须将此线性地址送分页部件,再形成物理地址。

Windows98虚拟存储技术-5

(3)Windows98系统地址空间的划分

Intel386以后的CPU有了32位或64位的内存寻址范围,所以系

统的地址空间可达4GB或更大。在Windows98系统提供了4GB

虚拟的32位的地址空间,给每个进程分配2GB的专用地址空

间,而把剩余的2GB地址空间分成系统空间(1GB)和用于所

有的共享内存区域的单个共享的用户空间(1GB)o

这个1GB的共享区域对于用户态是可写的,所以任何Win32应

用程序都可以写共享内存区和映象文件(映象文件是指把驻留

在盘上的文件看成是虚拟主存的一部分)。MS-DOS应用程序

和Winl6应用程序也都在这个共享的空间中。WindowsNT将共

享内存区域放在专用进程地址空间内。

每一个基于MS-DOS的程序和32位Windows程序都有各自的

4GB虚拟地址空间。16位Windows应用程序共享单个的4GB地

址空间。4GB的地址空间分为两部分:2GB用于用户应用程

序,2GB用于操作系统组件。程序以如下方式使用虚拟地址空

间里的地址:

Windows98虚拟存储技术-6

0-1MB:基于MS-DOS的程序就像真的在MS-DOS环境中运

行那样使用这些地址,所有其它程序将忽略这些地址。这

些地址仍可为程序加载的实模式设备驱动程序所使用。

1-4MB:由于WindowsNT在这些地址空间上加载,为了

维护与NT的兼容性,Windows98与32位程序也不使用这

一段地址空间。但由于向下兼容的缘故,16位程序使用这

些地址。

4MB-2GB:WIN32应用程序使用。

2GB-3GB:由DLL(动态链接库)和其它共享组件使用。

3GB-4CB:低层的内存管理、文件系统、驱动程序

(VxD)使用。这些地址一般是Ring。组件使用。

Windows98用虚拟存储管理程序(VirtualMemoryManager)

来实现请求调页的虚拟存储技术,把系统4GB的虚拟地址空间

映射到机器的物理内存上(32MB或64MB)。

Windows98的虚拟存储管理程序通过两个内存管理进程向应用

程序提供虚拟内存:一个是页面调度(paging)——负责在物

理内存和硬盘的交换文件之间交换数据;另一个是地址转换

——负责物理地址和虚拟地

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论