A. 虚拟存储管理的基本原理是什么
虚拟存储器的概念 为解决内存小而作业大、作业多的矛盾, 以及执行过程中只是把当前运行需要的那部分程序和数据装入内存。 所以,操作系统把各级存储器统一管理起来。
就是说, 应该把一个程序当前正在使用的部分放在内存, 而其余部分放在磁盘上,就启动执行它。
操作系统根据程序执行时的要求和内存的实际使用情况, 随机地对每个程序进行换入/换出。 这样, 就给用户提供一个比正式的内存空间大的多的地址空间, 这就是虚拟存储器。
所谓虚拟存储器是用户能作为可编址内存对待的存储空间, 在这种计算机系统中虚地址被映射成实地址。
简单地说,虚拟存储器:是由操作系统提供的一个假想的特大存储器。
就是说, 虚拟存储器并不是实际的内存,它的大小比内存空间大的多;
用户感觉所能使用的“内存”非常大, 但这是操作系统对物理内存的扩充。 它的物质基础是:
二级存储器结构、和动态地址转换(DAT)。
机构虚拟存储器的基本特征:
虚拟扩充。 虚拟存储器不是物理上扩充内存空间, 而是逻辑上扩充了内存容量。 部分装入。
每个作业不是全部一次的装入内存, 而是分成若干部分。 离散分配。 一个作业分成多个部分,没有全部装入内存。
即使装入内存的那些部分也不必占用连续的内存空间, 而是“见缝插针”。 多次对换。
在一个进程运行期间, 它所需的全部程序和数就要分成多次调入内存。
注意:
虚拟存储器的容量虽然提供了特大的地址空间, 用户在编程时一般不应考虑可用空间有多大。 但是, 虚拟存储器的容量不是无限大的。
它主要受两方面的限制:
(1)机器指令中表示地址的二进制数是有限的;
(2)外存的容量也是有限的。
B. 虚拟存储器技术主要用于解决什么问题简述虚拟存储器的基本工作原理。
虚拟存储器技术主要解决电脑内存不够的问题,电脑中所运行的程序均需经由内存执行,若执行的程序占用内存很大或很多,则会导致内存消耗殆尽。
为解决该问题,Windows中运用了虚拟内存技术,即匀出一部分硬盘空间来充当内存使用。当内存耗尽时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。若计算机运行程序或操作所需的随机存储器(RAM)不足时,则 Windows 会用虚拟存储器进行补偿。
工作原理
1、中央处理器访问主存的逻辑地址分解成组号a和组内地址b,并对组号a进行地址变换,即将逻辑组号a作为索引,查地址变换表,以确定该组信息是否存放在主存内。
2、如该组号已在主存内,则转而执行④;如果该组号不在主存内,则检查主存中是否有空闲区,如果没有,便将某个暂时不用的组调出送往辅存,以便将这组信息调入主存。
3、从辅存读出所要的组,并送到主存空闲区,然后将那个空闲的物理组号a和逻辑组号a登录在地址变换表中。
4、从地址变换表读出与逻辑组号a对应的物理组号a。
5、从物理组号a和组内字节地址b得到物理地址。
6、根据物理地址从主存中存取必要的信息。
(2)虚拟存储管理系统原理扩展阅读:
相关概念
1、实地址与虚地址
用户编制程序时使用的地址称为虚地址或逻辑地址,其对应的存储空间称为虚存空间或逻辑地址空间;而计算机物理内存的访问地址则称为实地址或物理地址,其对应的存储空间称为物理存储空间或主存空间。程序进行虚地址到实地址转换的过程称为程序的再定位。
2、虚拟内存的访问过程
虚存空间的用户程序按照虚地址编程并存放在辅存中。程序运行时,由地址变换机构依据当时分配给该程序的实地址空间把程序的一部分调入实存。
每次访存时,首先判断该虚地址所对应的部分是否在实存中:如果是,则进行地址转换并用实地址访问主存;否则,按照某种算法将辅存中的部分程序调度进内存,再按同样的方法访问主存。
3、异构体系
从虚存的概念可以看出,主存-辅存的访问机制与cache-主存的访问机制是类似的。这是由cache存储器、主存和辅存构成的三级存储体系中的两个层次。cache和主存之间以及主存和辅存之间分别有辅助硬件和辅助软硬件负责地址变换与管理,以便各级存储器能够组成有机的三级存储体系。
C. 虚拟存储器基于什么原理
虚拟存储器的概念
为解决内存小而作业大、作业多的矛盾, 以及执行过程中只是把当前运行需要的那部分程序和数据装入内存。 所以,操作系统把各级存储器统一管理起来。就是说, 应该把一个程序当前正在使用的部分放在内存, 而其余部分放在磁盘上,就启动执行它。操作系统根据程序执行时的要求和内存的实际使用情况, 随机地对每个程序进行换入/换出。
这样, 就给用户提供一个比正式的内存空间大的多的地址空间, 这就是虚拟存储器。所谓虚拟存储器是用户能作为可编址内存对待的存储空间, 在这种计算机系统中虚地址被映射成实地址。简单地说,虚拟存储器:是由操作系统提供的一个假想的特大存储器。就是说, 虚拟存储器并不是实际的内存,它的大小比内存空间大的多; 用户感觉所能使用的“内存”非常大, 但这是操作系统对物理内存的扩充。
它的物质基础是:二级存储器结构、和动态地址转换(DAT)。
机构虚拟存储器的基本特征:
虚拟扩充。 虚拟存储器不是物理上扩充内存空间, 而是逻辑上扩充了内存容量。
部分装入。 每个作业不是全部一次的装入内存, 而是分成若干部分。
离散分配。 一个作业分成多个部分,没有全部装入内存。 即使装入内存的那些部分也不必占用连续的内存空间, 而是“见缝插针”。
多次对换。 在一个进程运行期间, 它所需的全部程序和数就要分成多次调入内存。
注意: 虚拟存储器的容量虽然提供了特大的地址空间, 用户在编程时一般不应考虑可用空间有多大。 但是, 虚拟存储器的容量不是无限大的。 它主要受两方面的限制:(1)机器指令中表示地址的二进制数是有限的;(2)外存的容量也是有限的。
更多:
http://www.fjtu.com.cn/fjnu/courseware/0333/course/_source/web/lesson/char2/j4.htm
D. 简述虚拟化存储技术的三种实现方法及工作原理
从系统的观点看,有三种主要的存储虚拟化方法:
基于主机的虚拟存储;
基于存储设备的虚拟存储;
基于网络的虚拟存储。
方法1:基于主机的虚拟存储
基于主机的虚拟存储依赖于代理或管理软件,它们安装在一个或多个主机上,实现存储虚拟化的控制和管理。由于控制软件是运行在主机上,这就会占用主机的处理时间。因此,这种方法的可扩充性较差,实际运行的性能不是很好。基于主机的方法也有可能影响到系统的稳定性和安全性,因为有可能导致不经意间越权访问到受保护的数据。这种方法要求在主机上安装适当的控制软件,因此一个主机的故障可能影响整个SAN系统中数据的完整性。软件控制的存储虚拟化还可能由于不同存储厂商软硬件的差异而带来不必要的互操作性开销,所以这种方法的灵活性也比较差。
但是,因为不需要任何附加硬件,基于主机的虚拟化方法最容易实现,其设备成本最低。使用这种方法的供应商趋向于成为存储管理领域的软件厂商,而且目前已经有成熟的软件产品。这些软件可以提供便于使用的图形接口,方便地用于SAN的管理和虚拟化,在主机和小型SAN结构中有着良好的负载平衡机制。从这个意义上看,基于主机的存储虚拟化是一种性价比不错的方法。
方法2:基于存储设备的虚拟化
基于存储设备的存储虚拟化方法依赖于提供相关功能的存储模块。如果没有第三方的虚拟软件,基于存储的虚拟化经常只能提供一种不完全的存储虚拟化解决方案。对于包含多厂商存储设备的SAN存储系统,这种方法的运行效果并不是很好。依赖于存储供应商的功能模块将会在系统中排斥JBODS(Just a Bunch of Disks,简单的硬盘组)和简单存储设备的使用,因为这些设备并没有提供存储虚拟化的功能。当然,利用这种方法意味着最终将锁定某一家单独的存储供应商。
基于存储的虚拟化方法也有一些优势:在存储系统中这种方法较容易实现,容易和某个特定存储供应商的设备相协调,所以更容易管理,同时它对用户或管理人员都是透明的。但是,我们必须注意到,因为缺乏足够的软件进行支持,这就使得解决方案更难以客户化(customzing)和监控。
方法3:基于网络的虚拟存储
基于网络的虚拟化方法是在网络设备之间实现存储虚拟化功能,具体有下面几种方式:
1. 基于互联设备的虚拟化
基于互联设备的方法如果是对称的,那么控制信息和数据走在同一条通道上;如果是不对称的,控制信息和数据走在不同的路径上。在对称的方式下,互联设备可能成为瓶颈,但是多重设备管理和负载平衡机制可以减缓瓶颈的矛盾。同时,多重设备管理环境中,当一个设备发生故障时,也比较容易支持服务器实现故障接替。但是,这将产生多个SAN孤岛,因为一个设备仅控制与它所连接的存储系统。非对称式虚拟存储比对称式更具有可扩展性,因为数据和控制信息的路径是分离的。
基于互联设备的虚拟化方法能够在专用服务器上运行,使用标准操作系统,例如Windows、Sun Solaris、Linux或供应商提供的操作系统。这种方法运行在标准操作系统中,具有基于主机方法的诸多优势--易使用、设备便宜。许多基于设备的虚拟化提供商也提供附加的功能模块来改善系统的整体性能,能够获得比标准操作系统更好的性能和更完善的功能,但需要更高的硬件成本。
但是,基于设备的方法也继承了基于主机虚拟化方法的一些缺陷,因为它仍然需要一个运行在主机上的代理软件或基于主机的适配器,任何主机的故障或不适当的主机配置都可能导致访问到不被保护的数据。同时,在异构操作系统间的互操作性仍然是一个问题。
3. 基于路由器的虚拟化
基于路由器的方法是在路由器固件上实现存储虚拟化功能。供应商通常也提供运行在主机上的附加软件来进一步增强存储管理能力。在此方法中,路由器被放置于每个主机到存储网络的数据通道中,用来截取网络中任何一个从主机到存储系统的命令。由于路由器潜在地为每一台主机服务,大多数控制模块存在于路由器的固件中,相对于基于主机和大多数基于互联设备的方法,这种方法的性能更好、效果更佳。由于不依赖于在每个主机上运行的代理服务器,这种方法比基于主机或基于设备的方法具有更好的安全性。当连接主机到存储网络的路由器出现故障时,仍然可能导致主机上的数据不能被访问。但是只有联结于故障路由器的主机才会受到影响,其他主机仍然可以通过其他路由器访问存储系统。路由器的冗余可以支持动态多路径,这也为上述故障问题提供了一个解决方法。由于路由器经常作为协议转换的桥梁,基于路由器的方法也可以在异构操作系统和多供应商存储环境之间提供互操作性。
E. 虚拟存储器工作原理
你所谓的虚拟存储器是不是虚拟内存
虚拟内存是用硬盘空间做内存来弥补计算机RAM空间的缺乏。当实际RAM满时(实际上,在RAM满之前),虚拟内存就在硬盘上创建了。当物理内存用完后,虚拟内存管理器选择最近没有用过的,低优先级的内存部分写到交换文件上。这个过程对应用是隐藏的,应用把虚拟内存和实际内存看作是一样的。
在Windows2000(XP)目录下有一个名为pagefile.sys的系统文件(Windows98下为Win386.swp),它的大小经常自己发生变动,小的时候可能只有几十兆,大的时候则有数百兆,这种毫无规律的变化实在让很多人摸不着头脑。其实,pagefile.sys是Windows下的一个虚拟内存,它的作用与物理内存基本相似,但它是作为物理内存的“后备力量”而存在的,也就是说,只有在物理内存已经不够使用的时候,它才会发挥作用。
F. 虚拟内存的工作原理
虚拟存储器是由硬件和操作系统自动实现存储信息调度和管理的。它的工作过程包括6个步骤:
①中央处理器访问主存的逻辑地址分解成组号a和组内地址b,并对组号a进行地址变换,即将逻辑组号a作为索引,查地址变换表,以确定该组信息是否存放在主存内。
②如该组号已在主存内,则转而执行④;如果该组号不在主存内,则检查主存中是否有空闲区,如果没有,便将某个暂时不用的组调出送往辅存,以便将这组信息调入主存。
③从辅存读出所要的组,并送到主存空闲区,然后将那个空闲的物理组号a和逻辑组号a登录在地址变换表中。
④从地址变换表读出与逻辑组号a对应的物理组号a。
⑤从物理组号a和组内字节地址b得到物理地址。
⑥根据物理地址从主存中存取必要的信息。
调度方式有分页式、段式、段页式3种。页式调度是将逻辑和物理地址空间都分成固定大小的页。主存按页顺序编号,而每个独立编址的程序空间有自己的页号顺序,通过调度辅存中程序的各页可以离散装入主存中不同的页面位置,并可据表一一对应检索。页式调度的优点是页内零头小,页表对程序员来说是透明的,地址变换快,调入操作简单;缺点是各页不是程序的独立模块,不便于实现程序和数据的保护。段式调度是按程序的逻辑结构划分地址空间,段的长度是随意的,并且允许伸长,它的优点是消除了内存零头,易于实现存储保护,便于程序动态装配;缺点是调入操作复杂。将这两种方法结合起来便构成段页式调度。在段页式调度中把物理空间分成页,程序按模块分段,每个段再分成与物理空间页同样小的页面。段页式调度综合了段式和页式的优点。其缺点是增加了硬件成本,软件也较复杂。大型通用计算机系统多数采用段页式调度。
G. 什么是虚拟存储器和局部性原理
虚拟存储器:是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。在虚拟存储器系统中,作业无需全部装入,只要装入一部分就可运行。
引入虚拟存储技术之后,可以:
1、提高内存利用率;(如:定义100*100大小的数组,可能只用到10*10个元素)
2、程序不再受现有物理内存空间的限制;编程变得更容易;
3、可以提高多道程序度,使更多的程序能够进入内存运行。程序局部性原理:虚拟存储管理的效率与程序局部性程序有很大关系。根据统计,进程运行时,在一段时间内,其程序的执行往往呈现出高度的局限性,包括时间局部性和空间局部性。
1、时间局部性:是指若一条指令被执行,则在不久的将来,它可能再被执行。
2、空间局部性:是指一旦一个存储单元被访问,那它附近的单元也将很快被访问。
H. 系统虚拟内存的工作原理
内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。举一个例子来说,如果电脑只有128MB物理内存的话,当读取一个容量为200MB的文件时,就必须要用到比较大的虚拟内存,文件被内存读取之后就会先储存到虚拟内存,等待内存把文件全部储存到虚拟内存之后,跟着就会把虚拟内里储存的文件释放到原来的安装目录里了。下面,就让我们一起来看看如何对虚拟内存进行设置吧。
虚拟内存的设置
对于虚拟内存主要设置两点,即内存大小和分页位置,内存大小就是设置虚拟内存最小为多少和最大为多少;而分页位置则是设置虚拟内存应使用那个分区中的硬盘空间。对于内存大小的设置,如何得到最小值和最大值呢?你可以通过下面的方法获得:选择“开始→程序→附件→系统工具→系统监视器”(如果系统工具中没有,可以通过“添加/删除程序”中的Windows安装程序进行安装)打开系统监视器,然后选择“编辑→添加项目”,在“类型”项中选择“内存管理程序”,在右侧的列表选择“交换文件大小”。这样随着你的操作,会显示出交换文件值的波动情况,你可以把经常要使用到的程序打开,然后对它们进行使用,这时查看一下系统监视器中的表现值,由于用户每次使用电脑时的情况都不尽相同,因此,最好能够通过较长时间对交换文件进行监视来找出最符合您的交换文件的数值,这样才能保证系统性能稳定以及保持在最佳的状态。
找出最合适的范围值后,在设置虚拟内存时,用鼠标右键点击“我的电脑”,选择“属性”,弹出系统属性窗口,选择“性能”标签,点击下面“虚拟内存”按钮,弹出虚拟内存设置窗口,点击“用户自己指定虚拟内存设置”单选按钮,“硬盘”选较大剩余空间的分区,然后在“最小值”和“最大值”文本框中输入合适的范围值。如果您感觉使用系统监视器来获得最大和最小值有些麻烦的话,这里完全可以选择“让Windows管理虚拟内存设置”。
调整分页位置
Windows 9x的虚拟内存分页位置,其实就是保存在C盘根目录下的一个虚拟内存文件(也称为交换文件)Win386.swp,它的存放位置可以是任何一个分区,如果系统盘C容量有限,我们可以把Win386.swp调到别的分区中,方法是在记事本中打开System.ini(C:\Windows下)文件,在[386Enh]小节中,将“PagingDrive=C:WindowsWin386.swp”,改为其他分区的路径,如将交换文件放在D:中,则改为“PagingDrive=D:Win386.swp”,如没有上述语句可以直接键入即可。
而对于使用Windows 2000和Windows XP的,可以选择“控制面板→系统→高级→性能”中的“设置→高级→更改”,打开虚拟内存设置窗口,在驱动器[卷标]中默认选择的是系统所在的分区,如果想更改到其他分区中,首先要把原先的分区设置为无分页文件,然后再选择其他分区。
或者,WinXP一般要求物理内存在256M以上。如果你喜欢玩大型3D游戏,而内存(包括显存)又不够大,系统会经常提示说虚拟内存不够,系统会自动调整(虚拟内存设置为系统管理)。
如果你的硬盘空间够大,你也可以自己设置虚拟内存,具体步骤如下:右键单击“我的电脑”→属性→高级→性能 设置→高级→虚拟内存 更改→选择虚拟内存(页面文件)存放的分区→自定义大小→确定最大值和最小值→设置。一般来说,虚拟内存为物理内存的1.5倍,稍大一点也可以,如果你不想虚拟内存频繁改动,可以将最大值和最小值设置为一样。
44》虚拟内存使用技巧
对于虚拟内存如何设置的问题,微软已经给我们提供了官方的解决办法,对于一般情况下,我们推荐采用如下的设置方法:
(1)在Windows系统所在分区设置页面文件,文件的大小由你对系统的设置决定。具体设置方法如下:打开"我的电脑"的"属性"设置窗口,切换到"高级"选项卡,在"启动和故障恢复"窗口的"写入调试信息"栏,如果你采用的是"无",则将页面文件大小设置为2MB左右,如果采用"核心内存存储"和"完全内存存储",则将页面文件值设置得大一些,跟物理内存差不多就可以了。
小提示:对于系统分区是否设置页面文件,这里有一个矛盾:如果设置,则系统有可能会频繁读取这部分页面文件,从而加大系统盘所在磁道的负荷,但如果不设置,当系统出现蓝屏死机(特别是STOP错误)的时候,无法创建转储文件 (Memory.dmp),从而无法进行程序调试和错误报告了。所以折中的办法是在系统盘设置较小的页面文件,只要够用就行了。
(2)单独建立一个空白分区,在该分区设置虚拟内存,其最小值设置为物理内存的1.5倍,最大值设置为物理内存的3倍,该分区专门用来存储页面文件,不要再存放其它任何文件。之所以单独划分一个分区用来设置虚拟内存,主要是基于两点考虑:其一,由于该分区上没有其它文件,这样分区不会产生磁盘碎片,这样能保证页面文件的数据读写不受磁盘碎片的干扰;其二,按照Windows对内存的管理技术,Windows会优先使用不经常访问的分区上的
页面文件,这样也减少了读取系统盘里的页面文件的机会,减轻了系统盘的压力。
(3)其它硬盘分区不设置任何页面文件。当然,如果你有多个硬盘,则可以为每个硬盘都创建一个页面文件。当信息分布在多个页面文件上时,硬盘控制器可以同时在多个硬盘上执行读取和写入操作。这样系统性能将得到提高。
小提示:
允许设置的虚拟内存最小值为2MB,最大值不能超过当前硬盘的剩余空间值,同时也不能超过32位操作系统的内存寻址范围——4GB
鼠标右击“我的电脑”,选“属性”,点“高级”标签,点“性能”框的“设置”,再点“高级”标签,点“虚拟内存”框的“更改”,点“自定义大小”,再将虚拟内存的数字范围提高一点,(就改为最小值600最大值1000)再点旁边的“设置”,再点“确定”便可。
虚拟内存不足,其实是不关你的内存的事的。虚拟内存是从硬盘里提取的存储空间。当你在运得游戏或是运行大量的程序的时候,由于你的内存空间太小,以至于要用到大量的虚拟内存来帮助。
虚拟内存的工作原理是,当接收到一部分信息时,会解决当前的信息,然在处理过程中,又收到另外一个信息,虚拟内存则会把数据作为一个分页存储在硬盘当中,以便处理完上一次信息后,从中取出这一次的信息进行处理。但是由于硬盘中的分页碎片不断的垒积,垃圾文件就过于的多拉。所以原先定放的虚拟内存空间就显得不足了。
通常虚拟内存的设置分为两的极。即最大值和最小值。
通常人们设定虚拟内存是根据自己实际内存的大小来设定的。最小值应设为实际内存的1。5倍而最大值应设为实际内存的倍。比如说。你现在的虚拟内存是128M,则虚拟内存的范围则可以设置为:最小值:128*1.5=192M。最大值:128*2=256M。当然还有更容易的。你可以用优化大师这款软件。它可以根据你的实际内存来精算出你的虚拟内存的最佳设置范围。
最后我要补充一点的是,你应该隔一段时间就清理虚拟内存里的分页碎片。养成良好的清理习惯。(优化大师里有这样的全面功能)要不然即使你的虚拟内存设置的再大也会被垃圾数据填充。
I. 虚拟存储器管理中的基础是()原理
程序的主存储器原理
存储管理策略的基础是局部性原理,即进程往往会不均匀地高度局部化地访问主存。局部性表现在时间局部性和空间局部性两方面。其中,时间局部性是指最近被访问的存储位置,很可能不久将还会被访问;空问局部性是指存储访问有成组的倾向,当访问某位置后,很可能也要访问其附近的位置。虚拟存储器管理中的基础是程序的主存储器原理。
(9)虚拟存储管理系统原理扩展阅读:
存储访问局部性最有意义的结果是:只要进程所需要的页面子集驻留在主存中,进程就可以有效地运行。根据局部性访问特性,Denning阐述了程序性能的工作集理论。工作集是进程活跃地访问的页面集合。工作集理论指出,为使进程有效地运行,它的页面工作集应该驻留在内存中,否则由于进程频繁地从辅存请求页面,会出现抖动的页面调度活动。