实验2可变分区管理及存储管理.docx

上传人:b****8 文档编号:28471557 上传时间:2023-07-14 格式:DOCX 页数:43 大小:89.21KB
下载 相关 举报
实验2可变分区管理及存储管理.docx_第1页
第1页 / 共43页
实验2可变分区管理及存储管理.docx_第2页
第2页 / 共43页
实验2可变分区管理及存储管理.docx_第3页
第3页 / 共43页
实验2可变分区管理及存储管理.docx_第4页
第4页 / 共43页
实验2可变分区管理及存储管理.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

实验2可变分区管理及存储管理.docx

《实验2可变分区管理及存储管理.docx》由会员分享,可在线阅读,更多相关《实验2可变分区管理及存储管理.docx(43页珍藏版)》请在冰豆网上搜索。

实验2可变分区管理及存储管理.docx

实验2可变分区管理及存储管理

 

实验2可变分区管理

 

一、存储管理

背景知识

1.分页过程

2.内存共享

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

4.提高分页性能

 

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

当系统耗尽内存时,所有进程

对内存的总需求超出了系统的物理内存总量。

随后,Windows必须借助它的虚拟内

存来维持系统和进程的运行。

虚拟内存机制是Windows操作系统的重要组成部分,

但它的速度比物理内存慢得多,因此,应该尽量避免耗尽物理内存资源,以免导致性能下降。

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

但是,一旦提供了

更多的内存,Windows很可以会立即“吞食”。

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

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

 

1.分页过程

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

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

应用程序将物理内存和虚

拟内存视为一个独立的实体,甚至不知道Windows使用了两种内存方案,而认为系

统拥有比实际内存更多的内存。

例如,系统的内存数量可能只有16MB,但每一个应

用程序仍然认为有4GB内存可供使用。

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

当进程需要已经交换到硬

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

例如,硬盘的访问时间通常大约

为4-10毫秒,而物理内存的访问时间为60us,甚至更快。

 

2.内存共享

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

为了提供这种能力,Windows必须允

 

许访问某些内存空间而不危及它和其他应用程序的安全性和完整性。

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

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

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

 

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

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

显然,

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

因此,Windows将系统使用的内存进

一步划分为未分页合并内存和分页合并内存。

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

虽然可以将分

页合并内存中的任何系统进程交换到磁盘上,但是它临时存储在主内存的这一部分,

以防系统立刻需要它。

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

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

这种结构类似于早

期的MS-DOS程序使用的结构,在MS-DOS中,相对较小的终止并驻留程序

(TerminateandStayResident,TSR)在启动时加载到内存中。

这些程序在系统重新启

动或关闭之前一直驻留在内存的特定部分中。

例如,防病毒程序将加载为TSR程序,

以预防可能的病毒袭击。

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

物理

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

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

分配到未分页内存池的主内存数量取决于服务器拥有的物理内存数量以及进程

对系统上的内存地空间的需求。

不过,例如Windows2000将未分页合并内存限制为

256MB。

根据系统中的物理内存数量,复杂的算法在启动时动态确定Windows系统

上的未分页合并内存的最大数量。

Windows内部的这一自我调节机制可以根据当前

的内存配置自动调整大小。

例如,如果增加或减少系统中的内存数量,那么Windows

将自动调整未分页合并内存的大小,以反映这一更改。

 

4.提高分页性能

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

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

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

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

 

多个分区上。

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

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

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

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

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

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

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

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

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

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

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

当系统必须在进程的工作区

外部(在物理内存或分页文件中的其他位置)查找信息时,就会出现页面错误。

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

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

当系统失效

时,Memory:

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

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

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

分页文件将散布在整个磁盘上而不

是在启动时的连续空间中创建,从而增加了系统的开销,并导致系统性能降低。

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

 

提示:

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

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

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

系统在崩溃之后能够

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

 

实验目的

 

通过对Windows“任务管理器”、“计算机管理”、“我的电脑”属性、“系统信

息”、“系统监视器”等程序的应用,学习提高Windows内存的性能,,加深理解Windows操作系统的内存管理功能,理解操作系统存储管理、虚拟存储管理的知识。

 

工具/准备工作

 

在开始本实验之前,请回顾教科书的相关内容。

需要准备一台运行Windowsl操作系统的计算机。

 

实验内容与步骤

 

判断和维护Windows的内存性能有许多方法。

 

步骤1:

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

 

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

____________________________________________________________________

________________________________________________________________________

________________________________________________________________________

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

____________________________________________________________________

________________________________________________________________________

________________________________________________________________________

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

例如:

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

____________________________________________________________________

________________________________________________________________________

________________________________________________________________________

________________________________________________________________________

________________________________________________________________________

4)例如:

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

____________________________________________________________________

________________________________________________________________________

 

步骤2:

登录进入Windows。

 

步骤3:

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

1)启动想要监视的应用程序,例如Word,找到word这一项,填写表1。

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

 

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

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

 

请在表1中记录:

 

表1

实验记录

映像名称

PID

CPU

CPU时间

内存使用

WINWORD

2300

00

0:

00

27508K

 

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

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

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

____________________________________________________________________

________________________________________________________________________

 

步骤4:

未分页合并内存。

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

未分页合并内存

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

总数(K)

_____________________________

60988

分页数:

44404

未分页(K)

___________________________

16584

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

操作步骤如下:

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

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

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

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

 

表2

实验记录

映像名称

PID

内存使用

页面缓冲池

非页面缓冲池

WINWORD

2300

38584

699K

17K

 

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

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

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

步骤5:

提高分页性能。

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

(pagefile.sys)。

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

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

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

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

标,再双击“计算机管理”图标。

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

配置。

请在表3中记录:

 

表3

实验记录

布局

类型

文件系统

容量

状态

C:

磁盘分区

基本

NTFS

48.83GB

状态良好

D:

磁盘分区

基本

NTFS

117.19GB

状态良好

E:

磁盘分区

基本

NTFS

107.42GB

状态良好

F:

磁盘分区

基本

NTFS

3.72GB

状态良好

 

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

这是

因为:

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

为系统

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

步骤6:

计算分页文件的大小。

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

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

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

 

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

请记录:

所选驱动器(C:

)的页面文件大小:

驱动器:

C:

可用空间:

40776

MB

初始大小

(MB)

2046

最大值(MB)

4902

_____________________________

所选驱动器

(D:

的页面文件大小:

(如果有的话)

驱动器:

___________________________________

可用空间:

________________________________MB

初始大小(MB):

___________________________

最大值(MB):

_____________________________

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

允许的最小值:

____________________________2MB

推荐:

3045MB

当前已分配:

______________________________MB

2406

4)要想将另一个分页文件添加到现有配置,在“虚拟内存”对话框中选定一个

还没有分页文件的驱动器,然后指定分页文件的初始值和最大值(以兆字节表示

单击“设置”,然后单击“确定”。

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

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

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

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

步骤7:

使用任务管理器。

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

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

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

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

这一区域显示了

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

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

请记录:

物理内存

(K)

总数:

2078828

1557252

 

可用数:

______________________________

系统缓存:

708836

认可用量(K)

总数:

503432

________________________________

限制:

4016908

________________________________

峰值:

614588

________________________________

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

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

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

因为目标是避免扩展分

页文件,所以必须保持“认可总数”和“认可限制”值相差较大。

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

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

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

 

二、可变分区管理

 

实验内容

内存是中央处理机能直接存取指令和数据的存储器。

能否合理而有效的使用内存,在很大程度上将影响到整个计算机系统的性能。

本实验实现内存空间的分配与回收。

 

实验目的

本实验主要让大家熟悉内存的各种分配和回收。

所谓分配,就是解决多道作业或多个进程如何共享内存空间的问题。

所谓回收,就是当作业运行完成时,将作业或进程所占用的内存空间归还给系统。

内存的分配与回收的实现是与内存的管理方式有关的。

通过本实验,帮助大家理解不同的存储管理方式下,如何实现内存空间的分配与回收。

 

实验题目采用可变式分区管理,使用首次适应算法实现内存的分配与回收

要求采用分区说明表进行实验。

提示:

(1)可变式分区管理是指在处理作业过程中建立分区,使分区大小正好适合作业的需要,并且分区个数可以调整。

当要装入一个作业时,根据作业需要的内存量,查看是否有足够的空闲空间,若有,则按需求量分割一部分给作业;若没有,则作业等待。

随着作业的装入、完成,内存空间被分割成许多大大小小的分区。

有的分

区被作业占用,有的分区空闲。

例如,某时刻内存空间占用情况如图1所示。

 

0

10K

 

20K

 

45K

 

65K

 

110K

 

256K

 

操作系统(10KB)

 

作业1(10KB)

 

作业4(25KB)

 

空闲区1(20KB)

 

作业2(45KB)

 

空闲区2(146KB)

图1内存空间占用情况

 

为了说明那些分区是空闲的,可以用来装入新作业,必须要有一张空闲区说明表,如表1所示。

 

表1

空闲区说明表

起始地址

长度

状态

45K

20K

未分配

110K

146K

未分配

空表目

空表目

空表目

 

其中,起始地址指出个空闲区的内存起始地址,长度指出空闲区的大小。

状态(未分配:

该栏目记录的是有效空闲区)

状态(空表目:

没有登记信息)

由于分区个数不定,所以空闲区说明表中应该有足够的空表目项。

否则造成溢出,无法登记。

同样,再设一个已分配表,记录作业或进程的内存占用情况。

(2)当有一个新作业要求装入内存时,必须查空闲区说明表,从中找出一个足够大的空闲区。

有时找到的空闲区可能大于作业需求量,这时应将空闲区一分为二。

一个分给作业,另外一个作为空闲区留在空闲区表中。

为了尽量减少由于分割造成的碎片,尽可能分配低地址部分的空闲区,将较大空闲区留在高地址端,以利于大作业的装入。

为此在空闲区表中,按空闲区首地址从低到高进行登记。

为了便于快速查找,要不断地对表格进行紧缩,即让“空表目”项留在表的后部。

其分配框图如图2所示。

 

开始

 

申请XK内存

 

J=0

 

J=J+1

 

查看第J个表目的登记项

 

状态为“未分

配”吗N

Y

 

长度〉=XK?

等于小于

大于

置状态为“空表

长度=长度-XK

目”

始址=始址+XK

 

将空表目向后移

 

登记已分配区表和空闲区

表,输出系统中各数据结构

的值。

返回分配给作业的内

存始址

 

N

 

J为空闲

区说明

表的最

后一个

表目?

 

Y

 

作业等待

 

返回

 

图2首次适应算法分配框图

 

(3)当一个作业执行完成时,作业所占用的分区应归还给系统。

在归还时要考

虑相邻空闲区合并的问题。

作业的释放区与空闲区的邻接分以下4种情况考虑:

释放区下邻(低地址邻接)空闲区;

释放区上邻(高地址邻接)空闲区;

释放区上下都与空闲区邻接;

释放区与空闲区不邻接。

首次适应算法回收框图如图3所示。

 

N

 

有与释放区下邻的

空闲区吗?

 

N

 

在空闲区说明表中找一

空表目登记:

地址=S

长度=L

状态=未分配

 

按地址顺序调整和紧缩

空闲区说明表

 

有等待装入的作

业吗?

 

N

 

返回

 

开始

 

S=释放区始址

L=释放区长度

 

查空闲区说明表

 

有与释放区的高地址邻接(上

邻)的空闲区吗?

 

Y

 

Y

 

把上邻空闲区登

记栏中的状态置

为“空表目”,且

将空表目向后调

 

把下邻空闲区登记栏中的长度改为:

长度=长度+L

 

Y唤醒等待的作业并返回

 

Y

 

L=L+上邻空闲区长度

 

有与释放区下邻的

空闲区吗?

 

N

 

把上邻空闲区登记栏中的始址改为S,长度改为L

图3首次适应算法回收框图

 

(4)请按首次适应算法设计内存分配和回收程序。

以表2当前使用的基础,初

始化空闲区和已分配区说明表值。

设计一个作业申请队列以及作业完成后的释放顺序,实现内存的分配与回收。

把空闲区说明表的变化情况以及各作业的申请、释放

情况显示或打印出来。

表2

空闲区说明表

起始地址

长度

状态

20K

20KB

1

80K

50KB

1

150K

100KB

1

300K

30KB

0(空表目)

600K

100KB

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

当前位置:首页 > 工程科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1