实验四 存储管理.docx

上传人:b****0 文档编号:17282679 上传时间:2023-07-23 格式:DOCX 页数:25 大小:26.64KB
下载 相关 举报
实验四 存储管理.docx_第1页
第1页 / 共25页
实验四 存储管理.docx_第2页
第2页 / 共25页
实验四 存储管理.docx_第3页
第3页 / 共25页
实验四 存储管理.docx_第4页
第4页 / 共25页
实验四 存储管理.docx_第5页
第5页 / 共25页
实验四 存储管理.docx_第6页
第6页 / 共25页
实验四 存储管理.docx_第7页
第7页 / 共25页
实验四 存储管理.docx_第8页
第8页 / 共25页
实验四 存储管理.docx_第9页
第9页 / 共25页
实验四 存储管理.docx_第10页
第10页 / 共25页
实验四 存储管理.docx_第11页
第11页 / 共25页
实验四 存储管理.docx_第12页
第12页 / 共25页
实验四 存储管理.docx_第13页
第13页 / 共25页
实验四 存储管理.docx_第14页
第14页 / 共25页
实验四 存储管理.docx_第15页
第15页 / 共25页
实验四 存储管理.docx_第16页
第16页 / 共25页
实验四 存储管理.docx_第17页
第17页 / 共25页
实验四 存储管理.docx_第18页
第18页 / 共25页
实验四 存储管理.docx_第19页
第19页 / 共25页
实验四 存储管理.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

实验四 存储管理.docx

《实验四 存储管理.docx》由会员分享,可在线阅读,更多相关《实验四 存储管理.docx(25页珍藏版)》请在冰点文库上搜索。

实验四 存储管理.docx

实验四存储管理

实验四存储管理

背景知识

耗尽内存是Windows2000/XP系统中最常见的问题之一。

当系统耗尽内存时,所有进程对内存的总需求超出了系统的物理内存总量。

随后,Windows2000/XP必须借助它的虚拟内存来维持系统和进程的运行。

虚拟内存机制是Windows2000/XP操作系统的重要组成部分,但它的速度比物理内存慢得多,因此,应该尽量避免耗尽物理内存资源,以免导致性能下降。

解决内存不足问题的一个有效的方法就是添加更多的内存。

但是,一旦提供了更多的内存,Windows2000/XP很可以会立即“吞食”。

而事实上,添加更多的内存并非总是可行的,也可能只是推迟了实际问题的发生。

因此,应该相信,优化所拥有的内存是非常关键的。

1.分页过程

当Windows2000/XP求助于硬盘以获得虚拟内存时,这个过程被称为分页(paging)。

分页就是将信息从主内存移动到磁盘进行临时存储的过程。

应用程序将物理内存和虚拟内存视为一个独立的实体,甚至不知道Windows2000/XP使用了两种内存方案,而认为系统拥有比实际内存更多的内存。

例如,系统的内存数量可能只有16MB,但每一个应用程序仍然认为有4GB内存可供使用。

使用分页方案带来了很多好处,不过这是有代价的。

当进程需要已经交换到硬盘上的代码或数据时,系统要将数据送回物理内存,并在必要时将其他信息传输到硬盘上,而硬盘与物理内存在性能上的差异极大。

例如,硬盘的访问时间通常大约为4-10毫秒,而物理内存的访问时间为60us,甚至更快。

2.内存共享

应用程序经常需要彼此通信和共享信息。

为了提供这种能力,Windows2000/XP必须允许访问某些内存空间而不危及它和其他应用程序的安全性和完整性。

从性能的角度来看,共享内存的能力大大减少了应用程序使用的内存数量。

运行一个应用程序的多个副本时,每一个实例都可以使用相同的代码和数据,这意味着不必维护所加载应用程序代码的单独副本并使用相同的内存资源。

无论正在运行多少个应用程序实例,充分支持应用程序代码所需求的内存数量都相对保持不变。

3.未分页合并内存与分页合并内存

Windows2000/XP决定了系统内存组件哪些可以以及哪些不可以交换到磁盘上。

显然,不应该将某些代码(例如内核)交换出主内存。

因此,Windows2000/XP将系统使用的内存进一步划分为未分页合并内存和分页合并内存。

分页合并内存是存储迟早需要的可分页代码或数据的内存部分。

虽然可以将分页合并内存中的任何系统进程交换到磁盘上,但是它临时存储在主内存的这一部分,以防系统立刻需要它。

在将系统进程交换到磁盘上之前,Windows2000/XP会交换其他进程。

未分页合并内存包含必须驻留在内存中的占用代码或数据。

这种结构类似于早期的MS-DOS程序使用的结构,在MS-DOS中,相对较小的终止并驻留程序(TerminateandStayResident,TSR)在启动时加载到内存中。

这些程序在系统重新启动或关闭之前一直驻留在内存的特定部分中。

例如,防病毒程序将加载为TSR程序,以预防可能的病毒袭击。

未分页合并内存中包含的进程保留在主内存中,并且不能交换到磁盘上。

物理内存的这个部分用于内核模式操作(例如,驱动程序)和必须保留在主内存中才能有效工作的其他进程。

没有主内存的这个部分,内核组件就将是可分页的,系统本身就有变得不稳定的危险。

分配到未分页内存池的主内存数量取决于服务器拥有的物理内存数量以及进程对系统上的内存地空间的需求。

不过,Windows2000/XP将未分页合并内存限制为256MB(在WindowsNT4中的限制为128MB)。

根据系统中的物理内存数量,复杂的算法在启动时动态确定Windows2000/XP系统上的未分页合并内存的最大数量。

Windows2000/XP内部的这一自我调节机制可以根据当前的内存配置自动调整大小。

例如,如果增加或减少系统中的内存数量,那么Windows2000将自动调整未分页合并内存的大小,以反映这一更改。

4.提高分页性能

只有一个物理硬盘驱动器的系统限制了优化分页性能的能力。

驱动器必须处理系统和应用程序的请求以及对分页文件的访问。

虽然物理驱动器可能有多个分区,但是将分页文件分布到多个分区的分页文件并不能提高硬盘驱动器的能力。

只有当一个分区没有足够的空间来包含整个分页文件时,才将分页文件放在同一个硬盘的多个分区上。

拥有多个物理驱动器的服务器可以使用多个分页文件来提高分页性能。

关键是将分页请求的负载分布到多个物理硬盘上。

实际上,使用独立物理驱动器上的分页文件,系统可以同时处理多个分页请求。

各个物理驱动器可以同时访问它自己的分页文件并写入信息,这将增加可以传输的信息量。

多个分页文件的最佳配置是将各个分页文件放在拥有自己的控制器的独立驱动器上。

不过,由于额外的费用并且系统上的可用中断很有限,因此对于大多数基于服务器的配置来说,这可能是不切实际的解决方案。

分页文件最重要的配置参数是大小。

无论系统中有多少个分页文件,如果它们的大小不合适,那么系统就可能遇到性能问题。

如果初始值太小,那么系统可能必须扩大分页文件,以补偿额外的分页活动。

当系统临时增加分页文件时,它必须在处理分页请求的同时创建新的空间。

这时,系统将出现大量的页面错误,甚至可能出现系统失效。

当系统必须在进程的工作区外部(在物理内存或分页文件中的其他位置)查找信息时,就会出现页面错误。

当系统缺乏存储资源(物理内存及虚拟内存)来满足使用需求,从而遇到过多的分页时,就会出现系统失效。

系统将花更多的时间来分页而不是执行应用程序。

当系统失效时,Memory:

Pages/see计数器将持续高于每秒100页。

系统失效严重降低了系统的性能。

此外,动态扩展分页文件将导致碎片化。

分页文件将散布在整个磁盘上而不是在启动时的连续空间中创建,从而增加了系统的开销,并导致系统性能降低。

因此,应该尽量避免系统增加分页文件的大小。

提示:

1)WINDOWS中采用的虚拟存储管理方案是请求页式存储管理,分页文件就是我们原理课中所说的交换/对换文件,存放的内容是暂时被交换到外存中的进程页面。

UNIX使用的是交换分区,WINDOWS使用的是交换文件。

2)在NTFS驱动器上,总是至少保留25%的空闲驱动器空间,以确保可以在连续的空间中创建分页文件。

3)Windows2000使用内存数量的1.5倍作为分页文件的最小容量,这个最小容量的两倍作为最大容量。

它减少了系统因为错误配置的分页文件而崩溃的可能性。

系统在崩溃之后能够将内存转储写入磁盘,所以系统分区必须有一个至少等于物理内存数量加上1的分页文件。

5.Windows虚拟内存

 Windows2000是32位的操作系统,它使计算机CPU可以用32位地址对32位内存块进行操作。

内存中的每一个字节都可以用一个32位的指针来寻址。

这样,最大的存储空间就是232字节或4000兆字节(4GB)。

这样,在Windows下运行的每一个应用程序都认为能独占可能的4GB大小的空间。

而另一方面,实际上没有几台机器的RAM能达到4GB,更不必说让每个进程都独享4GB内存了。

Windows在幕后将虚拟内存(virtualmemory,VM)地址映射到了各进程的物理内存地址上。

而所谓物理内存是指计算机的RAM和由Windows分配到用户驱动器根目录上的换页文件。

物理内存完全由系统管理。

在Windows2000环境下,4GB的虚拟地址空间被划分成两个部分:

低端2GB提供给进程使用,高端2GB提供给系统使用。

这意味着用户的应用程序代码,包括DLL以及进程使用的各种数据等,都装在用户进程地址空间内(低端2GB)。

用户进程的虚拟地址空间也被分成三部分:

1)虚拟内存的已调配区(committed):

具有备用的物理内存,根据该区域设定的访问权限,用户可以进行写、读或在其中执行程序等操作。

2)虚拟内存的保留区(reserved):

没有备用的物理内存,但有一定的访问权限。

3)虚拟内存的自由区(free):

不限定其用途,有相应的PAGE_NOACCESS权限。

与虚拟内存区相关的访问权限告知系统进程可在内存中进行何种类型的操作。

例如,用户不能在只有PAGE_READONLY权限的区域上进行写操作或执行程序;也不能在只有PAGE_EXECUTE权限的区域里进行读、写操作。

而具有PAGE_NOACCESS权限的特殊区域,则意味着不允许进程对其地址进行任何操作。

在进程装入之前,整个虚拟内存的地址空间都被设置为只有PAGE_NOACCESS权限的自由区域。

当系统装入进程代码和数据后,才将内存地址的空间标记为已调配区或保留区,并将诸如EXECUTE、READWRITE和READONLY的权限与这些区域相关联。

程序清单4-1还显示了如何理解VirtualQueryEX()API填充的MEMORY_BASIC_INFORMATION结构,如表4-l所示。

此数据描述了进程虚拟内存空间中一组虚拟内存页面的当前状态。

其中State项表明这些区域是否为自由区、已调配区或保留区;Protect项则包含了Windows系统为这些区域添加了何种访问保护;Type项则表明这些区域是可执行图像、内存映射文件还是简单的私有内存。

VirtualQueryEX()API能让用户在指定的进程中,对虚拟内存地址的大小和属性进行检测。

 

表4-1MEMORY_BASIC_INFORMATION结构的成员

成员名称

目的

PVOIDBaseAddress

虚拟内存区域开始处的指针

PVOIDAllocationBase

如果这个特定的区域为子分配区的话,则为虚拟内存外面区域的指针;否则此值与BaseAddress相同

DWORDAllocationProtect

虚拟内存最初分配区域的保护属性。

其可能值包括:

PAGE_NOACCESS,PAGE_READONLY,PAGE_READWRITE和PAGE_EXECUTE_READ

DWORDRegionSize

虚拟内存区域的字节数

DWORDState

区域的当前分配状态。

其可能值为MEM_COMMIT,MEM_FREE和MEM_RESERVE

DWORDProtect

虚拟内存当前区域的保护属性。

可能值与AllocationProtect成员的相同

DWORDType

虚拟内存区域中出现的页面类型。

可能值为MEM_IMAGE,MEM_MAPPED和MEM_PRIVATE

 

 Windows还提供了一整套能使用户精确控制应用程序的虚拟地址空间的虚拟内存API。

一些用于虚拟内存操作及检测的API见表4-2所示。

提供虚拟内存分配功能的是VirtualAlloc()API。

该API支持用户向系统要求新的虚拟内存或改变已分配内存的当前状态。

用户若想通过VirtualAlloc()函数使用虚拟内存,可以采用两种方式通知系统:

1)简单地将内存内容保存在地址空间内;

2)请求系统返回带有物理存储区(RAM的空间或换页文件)的部分地址空间。

用户可以用flAllocationType参数(commit和reserve)来定义这些方式,用户可以通知Windows按只读、读写、不可读写、执行或特殊方式来处理新的虚拟内存。

与VirtualAlloc()函数对应的是VirtualFree()函数,其作用是释放虚拟内存中的已调配页或保留页。

用户可利用dwFreeType参数将已调配页修改成保留页属性。

VirtualProtect()是VirtualAlloc()的一个辅助函数,利用它可以改变虚拟内存区的保护规范。

表4-2虚拟内存的API

API名称

描述

VirtualQueryEx()

通过填充MEMORY_BASIC_INFORMATION结构检测进程内虚拟内存的区域

VirtualAlloc()

保留或调配进程的部分虚拟内存,设置分配和保护标志

VirtualFree()

释放或收回应用程序使用的部分虚拟地址

VirtualProtect()

改变虚拟内存区域保护规范

VirtualLock()

防止系统将虚拟内存区域通过系统交换到页面文件中

VirtualUnlock()

释放虚拟内存的锁定区域,必要时,允许系统将其交换到页面文件中

 

1、实验目的

(1)通过对Windows2000“任务管理器”、“计算机管理”、“我的电脑”属性、“系统信息”、“系统监视器”等程序的应用,学习如何察看和调整Windows的内存性能,加深对操作系统存储管理、虚拟存储管理等理论知识的理解。

(2)了解Windows2000的内存结构和虚拟内存的管理,理解进程的虚拟内存空间和物理内存的映射关系。

2、实验内容和步骤

(1)观察和调整Windows2000/XP的内存性能。

步骤1:

阅读“背景知识”,请回答:

1)什么是“分页过程”?

___________________________________________________________________________

___________________________________________________________________________

___________________________________________________________________________

2)什么是“内存共享”?

____________________________________________________________________

________________________________________________________________________

________________________________________________________________________

3)什么是“未分页合并内存”和“分页合并内存”?

Windows2000中,未分页合并内存的最大限制是多少?

____________________________________________________________________

________________________________________________________________________

________________________________________________________________________

________________________________________________________________________

________________________________________________________________________

4)Windows2000分页文件默认设置的最小容量和最大容量是多少?

____________________________________________________________________

________________________________________________________________________

步骤2:

登录进入Windows。

步骤3:

查看包含多个实例的应用程序的内存需求。

1)启动想要监视的应用程序,例如Word。

2)右键单击任务栏以启动“任务管理器”。

3)在“Windows任务管理器”对话框中选定“进程”选项卡。

4)向下滚动在系统上运行的进程列表,查找想要监视的应用程序。

请在表4-3中记录:

 

表4-3实验记录

映像名称

PID

CPU

CPU时间

内存使用

 

 

 

 

 

 

“内存使用”列显示了该应用程序的一个实例正在使用的内存数量。

5)启动应用程序的另一个实例并观察它的内存需求。

请描述使用第二个实例占用的内存与使用第一个实例时的内存对比情况:

____________________________________________________________________

________________________________________________________________________

步骤4:

未分页合并内存。

估算未分页合并内存大小的最简单方法是使用“任务管理器”。

未分页合并内存的估计值显示在“任务管理器”的“性能”选项卡的“核心内存”部分。

总数(K):

_____________________________

分页数:

________________________________

未分页(K):

___________________________

还可以使用“任务管理器”查看一个独立进程正在使用的未分页合并内存数量和分页合并内存数量。

操作步骤如下:

1)单击“Windows任务管理器”的“进程”选项卡,然后从“查看”菜单中选择“选择列”命令,显示“进程”选项卡的可查看选项。

2)在“选择列”对话框中,选定“页面缓冲池”选项和“非页面缓冲池”选项旁边的复选框,然后单击“确定”按钮。

返回Windows“任务管理器”的“进程”选项卡时,将看到其中增加显示了各个进程占用的分页合并内存数量和未分页合并内存数量。

仍以刚才打开观察的应用程序(例如Word)为例,请在表4-4中记录:

 

表4-4实验记录

映像名称

PID

内存使用

页面缓冲池

非页面缓冲池

 

 

 

 

 

 

从性能的角度来看,未分页合并内存越多,可以加载到这个空间的数据就越多。

拥有的物理内存越多,未分页合并内存就越多。

但未分页合并内存被限制为256MB,因此添加超出这个限制的内存对未分页合并内存没有影响。

步骤5:

提高分页性能。

在Windows的安装过程中,将使用连续的磁盘空间自动创建分页文件(pagefile.sys)。

用户可以事先监视变化的内存需求并正确配置分页文件,使得当系统必须借助于分页时的性能达到最高。

虽然分页文件一般都放在系统分区的根目录下面,但这并不总是该文件的最佳位置。

要想从分页获得最佳性能,应该首先检查系统的磁盘子系统的配置,以了解它是否有多个物理硬盘驱动器。

1)在“开始”菜单中单击“设置”–“控制面板”命令,双击“管理工具”图标,再双击“计算机管理”图标。

2)在“计算机管理”窗口的左格选择“磁盘管理”管理单元来查看系统的磁盘配置。

如果系统只有一个硬盘,那么建议应该尽可能为系统配置额外的驱动器。

这是因为:

Windows2000最多可以支持在多个驱动器上分布的16个独立的分页文件。

为系统配置多个分页文件可以实现对不同磁盘I/O请求的并行处理,这将大大提高I/O请求的分页文件性能。

 

请在表4-5中记录:

 

表4-5实验记录

布局

类型

文件系统

容量

状态

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

步骤6:

计算分页文件的大小。

要想更改分页文件的位置或大小配置参数,可按以下步骤进行:

1)右键单击桌面上的“我的电脑”图标并选定“属性”。

2)在“高级”选项卡上单击“性能选项”按钮。

3)单击对话框中的“虚拟内存”区域中的“更改”按钮。

请记录:

所选驱动器(C:

)的页面文件大小:

驱动器:

___________________________________

可用空间:

________________________________MB

初始大小(MB):

___________________________

最大值(MB):

_____________________________

所选驱动器(D:

)的页面文件大小:

(如果有的话)

驱动器:

___________________________________

可用空间:

________________________________MB

初始大小(MB):

___________________________

最大值(MB):

_____________________________

所有驱动器页面文件大小的总数:

允许的最小值:

____________________________MB

推荐:

____________________________________MB

当前已分配:

______________________________MB

4)要想将另一个分页文件添加到现有配置,在“虚拟内存”对话框中选定一个还没有分页文件的驱动器,然后指定分页文件的初始值和最大值(以兆字节表示),单击“设置”,然后单击“确定”。

5)要想更改现有分页文件的最大值和最小值,可选定分页文件所在的驱动器。

然后指定分页文件的初始值和最大值,单击“设置”按钮,然后单击“确定”按钮。

6)在“性能选项”对话框中单击“确定”按钮。

7)单击“确定”按钮以关闭“系统特性”对话框。

步骤7:

使用任务管理器。

可以使用“任务管理器”来简单地检查分页文件是否配置了正确容量。

这样可以实时提供系统正在使用分页文件的方式以及其他重要系统信息的准确描述。

通过右键单击任务栏运行“任务管理器”,选定“性能”选项卡查看实时的系统统计数据。

与分页文件大小最有关的信息位于“认可用量”区域。

这一区域显示了认可“峰值”是否达到或超过了认可“限制”,以及它是否超过了系统上的物理内存数量。

认可“峰值”是指系统迄今为止向进程分配的最大物理内存和虚拟内存数量。

请记录:

物理内存(K)

总数:

________________________________

可用数:

______________________________

系统缓存:

____________________________

认可用量(K)

总数:

________________________________

限制:

________________________________

峰值:

________________________________

当系统遇到分页活动增加的情况时,提交的内存数量(“认可总数”)就会增加。

一旦它达到了“认可限制”值,系统就需要扩展分页文件。

“认可限制”值指出在不必扩展分页文件的情况下可以向内存提交的虚拟内存数量。

因为目标是避免扩展分页文件,所以必须保持“认可总数”和“认可限制”值相差较大。

如果这两个值接近了,那么系统必须动态增加分页文件的大小。

“任务管理器”的“认可用量”区域显示的信息还说明了系统的主内存是否足以满足系统执行的任务。

如果认可“总数”值经常超过系统中的内存数量,那么系统的物理内存可能不足。

(2)了解和检测进程的虚拟内存空间。

步骤1:

创建一个“Win32ConsolApplication”工程,然后拷贝清单4-1中的程序,编译成可执行文件。

步骤2:

在VC

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2