深入解析Linux分页存储管理技术 (linux分页存储管理)

Linux操作系统是当今使用最广泛的服务器操作系统之一,其高效的存储管理技术是其中的重要组成部分之一。Linux的分页存储管理技术具有高效、安全和灵活等优势,在多种应用场景下都得到广泛的应用。本文将的原理、实现和应用。

一、分页存储管理技术的原理

在分页存储管理技术中,将物理内存分成大小一致的若干个固定大小的块,称为页。操作系统根据进程的需要,将进程所需的内存分成若干个大小相等的块,称为页框。这样,每个进程所需的内存空间就被划分成了一些为大小相等的页面,每个页面都是连续的物理内存地址。进程可以访问的内存空间只能是这些页面的组合,而不能访问一个页面中间的一些片断。

分页存储管理技术的原理是将一个进程的工作空间划分成若干个大小一致的块,称为页面,并且将这些页面映射到物理内存中,形成一一对应的映射关系。当进程需要访问一个页面时,操作系统通过页表查找到对应的物理地址,从而实现对该页面的访问。同时,由于页面是按照固定大小划分的,因此操作系统可以更加高效地管理物理内存,避免了内存碎片的产生,提高了内存的利用率。

二、分页存储管理技术的实现

Linux中的分页存储管理技术是通过内核提供的页面映射机制实现的。内核维护了一个基于虚拟地址的页面映射表,称为页表。每个进程都有自己的页表,记录了该进程的虚拟地址空间和物理地址空间的对应关系。当进程需要访问一个页面时,其虚拟地址被翻译成对应的物理地址,然后访问该物理地址。如果该页面还没有被映射到物理内存中,则内核会分配一个物理页面,并将其映射到该进程的虚拟地址空间中。

Linux中的分页存储管理技术还引入了一些辅助机制,如页面置换、页面共享和页面缓存等。其中,页面置换机制是用于处理物理内存不足的情况,当系统中的物理内存不足时,内核会触发页面置换机制将不常用的页面从物理内存中移除,以腾出物理内存供其他进程使用。页面共享机制是用于实现进程间内存共享的,当多个进程需要访问同一个页面时,内核可以将该页面映射到多个进程的虚拟地址空间中,实现内存共享;页面缓存机制则是用于提高文件读写性能的,内核会将文件读写时访问的页面缓存到物理内存中,以提高下次读写该文件时的访问速度。

三、分页存储管理技术的应用

Linux的分页存储管理技术在多种应用场景下都得到广泛的应用。一般来说,Linux中的分页存储管理技术可以提高系统的性能和安全性,如以下几点:

1. 内存管理:分页存储管理技术提供了高效、安全和灵活的内存管理机制,可以更好地管理系统中的物理内存,以避免出现内存泄漏、内存碎片等问题。

2. 虚拟内存:分页存储管理技术还支持虚拟内存机制,可以将磁盘等外部存储设备作为内存使用,以提高系统的内存利用率和性能。

3. 进程管理:分页存储管理技术也是进程管理的重要组成部分。通过页面映射机制,可以实现进程的内存隔离、内存共享等多种管理方式,提高系统的稳定性和安全性。

4. 网络通信:分页存储管理技术在网络通信中也有广泛应用。通过操作系统内核的页面映射机制,可以将网络数据包映射到内存中,实现高效、安全的数据传输。

综上所述,分页存储管理技术是Linux操作系统中的重要组成部分,其高效、安全、灵活的存储管理机制为Linux在多个应用场景下提供了强大的支持。随着互联网应用的不断增多,Linux的分页存储管理技术也将不断发展和完善,为现代应用场景下的高性能、高安全的系统提供更好的支持。

相关问题拓展阅读:

linux中cat、more、less命令区别详解

linux中命令cat、more、less均可用来查看文件内容,主要区别有:

1、cat是一次性显示整个文件的内容,还可以将多个文森察游件连接起来显示,它常与重定向符号配合使用,适用于文件内容少的情况。

cat主要有三大功能:

2、more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向此销后读取文件,因此在启动时就加载整个文件。

常用操作命令:

3、less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜,而且 less 在查看之前没唯不会加载整个文件。

如何避免内存碎片

频繁地请求和释放不同大小的内存,必然导致内存碎片问题的产生,结果就是当再次要求分配连续的内存时,即使整体内存是足够的,也无法满足连续内存的需求。该问题也称之为外碎片(external fragmentation)。

解决方案:

避免外碎片毕卜的方法有两种:

1、利用分页单元把一组非连续的空闲页框映射到连续的线性地址

2、开发一种适当的技术神颂来记录现存的空闲的连续页框块的情况,以尽量避免为满足对小块的请求而分割大的空闲快

之一种方案的意思是,我们使用地址转换技术,把非连续的物理地址转换成连续的线性地址。

第二种方案的意思是,开发一种特有的分配技术来记录下来空闲内存的情况,从而解决内存碎片问题。

Linux采用了第二种方案,因为在某些情况下,系统的确需要连续的物理地址(DMA处理器可以直接访问总线)。

Linux采用著名的伙伴系统(buddy system)算法来解决外碎片问题。把所有的空闲页框分组为11个块链表,每个链表分别包含大小为1,2,4,8,16,32,64,128,256,512,1024个连续手瞎穗的页框,对1024个页框的更大请求对应着4MB大小的连续RAM(每页大小为4KB),每个块的之一个页框的物理地址是该块大小的整数倍,例如,大小为16个页框的块,其起始地址是16*2^12的倍数。

我们通过一个例子来说明伙伴算法的工作原理,假设现在要请求一个256个页框的块(1MB),算法步骤如下:

• 在256个页框的链表中检查是否有一个空闲快,如果没有,查找下一个更大的块,如果有,请求满足。

• 在512个页框的链表中检查是否有一个空闲块,如果有,把512个页框的空闲块分为两份,之一份用于满足请求,第二份链接到256个页框的链表中。如果没有空闲块,继续寻找下一个更大的块。

以上过程的逆过程,就是页框块的释放过程,也是该算法名字的由来,内核试图把大小为B的一对空闲伙伴块合并为一个2B的单独块,满足以下条件的两个块称之为伙伴:

• 两个块具有相同的大小

• 他们的物理地址是连续的

之一块的之一个页框的物理地址是2 * B * 2^12

该算法是递归的,如果它成功合并了B,就会试图去合并2B,以再次试图形成更大的块。

虚拟内存怎么设置?

之一,我建议你把初始大小与更大值都设为3070MB,设置为相同数值可以减少产生磁片。

第二,虚拟内存只用设置一次,设置在一个盘,并不用每个盘都设置的,更好不要设置在C盘,会影响系统运行的。

详细怎么设置请你看下面:

================================================

怎样设置虚拟内存:

(一)合理设置虚拟内存

虚拟内存的设定主要根据你的物理内存大小和电脑的用途来设定,在桌面上用鼠标右击“我的电脑”,选择“属性”,就可以看到内存了。根据微软公司的建议,虚拟内存设为物理内存容量的1.5–3倍,例如512MB的内存,虚拟内存设定为MB;1G的内存,虚拟内存设定为MB。也可让Windows来自动分配管理虚拟内存,它能根据实际内存的使用情况,动态调整虚拟内存的大小。在虚拟内存设置页面下方有一个推荐数值,如果确实不知道设置多少为更佳,建议虚拟内存就设为推荐的数值。虚拟内存有初始大小与更大值两个数值,更好把初始大小和更大值设为相同,以避免系统频繁改变页面文件的大小,影响电脑运行。内存容量2GB或以上的,如果不运行大型文件或游戏,也可以关闭虚拟内存。

虚拟内存就是在你的物理内存不够用时把一部分硬盘空间作为内存来使用,不过由于硬盘传输的速度要比内存传输速度慢的多,所以使用虚拟内存比物理内存效率要慢。个人实际需要的值应该自己多次调整为好。

设的太大会产生大量的碎片,严重影响系统速度,设的太小就不够用,于是系统就会提示你虚拟内存太小。

(二)虚拟内存设置方法

右击“我的电脑”选择“属性–高级–性能–设置–高级–虚旦段侍拟内存–更改”,选择虚拟内存所在的磁盘,然后在下边单击“自定义大小”

并输入“初始大小”和“更大值”,最后按“设置”按钮,再确定即可。虚拟内存从C盘设置到其它磁盘的方法:右击我的电脑–属性–高级–性能设置–高级–虚拟内存更改–点选C盘–单选“无分页文件”–“设置”,此时C盘旁的虚拟内存就消失了;然后选中D或F盘,单选“自定义大小”–在下面的“初始大小”和“更大值”两个文本框中输入数值–“设置”—确定–重启电脑,便完成了设置。

虚拟内存更好不要与系统设在同一个磁盘内,内存是随着使用而动模吵态地变化,设在C盘就容易产生磁盘碎片,影响系统运行速度。所以,更好将虚拟内存设置在磁盘剩余空间较大而又不常用的磁盘,如D、F,这样可以避免系统在C盘进行频繁的读写操作而影响系统速度。虚拟内存在一台电脑,只用设置一次,可设置在任何一个磁盘。

(三)减轻内存负担:

1、打开的程序不可太多。如果同时打开的文档过多或者运行的程序过多,就没有足够的内存运行其他程序,要关闭不用的程序和窗口。

2、自动运行的程序不可太多

。单击“开始”–“运行”,燃乎键入“Msconfig”-“确定”,打开“系统配置实用程序”窗口,删除不想自动加载的启动项目。

1,首先打开我的电脑,在系统桌面上找到“此电脑”的图标,鼠标右键点击这个图标在弹出的菜单中点击“属性”选项。

2,在打开的系统页面,点击左侧导航栏中的“高级系统设置”标签。

3,在弹出的系统属性界面中,点击“高级”标签选项卡,在性能那一栏下面有个“设置”按钮,点击这个袭迟按钮进入性能选项页面。

4,在“性能选项”窗口中,点击顶端的“高级”标签选项卡,在“虚拟内存”一栏下面有个“更改”按钮,请点击这个按钮。

5,在弹出的虚拟迅陆内存窗口中,点击“自动管理所有驱动器的分页文件大小”复选框,去掉复选框里的小勾。

6,点击你电脑系统所在的驱动器,再点击“自定义大小”选项,在“初始大小”和“更大值”的输入框里输入设定的大小数值,最后再点击“设置”按钮和底部的“确定”按钮即大功告成。须知:虚拟内存亩禅顷容量一般设置为物理内存的1.5-3倍左右才是最合适的,按照1G等于1024MB计算,设置合适的虚拟内存数值。

1.虚拟内存的设置

将虚拟内存设置成固定值已经是个普遍“真理”了,而且这样做是十分正确的,但绝大多数人都是将其设置到C盘以外的非系统所在分区上,而且其值多为物理内存的2~3倍。多数人都认为这个值越大系统的性能越好、运行速度越快!但事实并非如此,因为系统比较依赖于虚拟内存——如果虚拟内存较大,系统会在物理内存还有很多空闲空间时就开始使用虚拟内存了,那些已经用不到的东东却还滞留在物理内存中,这就必然导致内存性能的下降!

于是笔者从32MB内存开始试起至512MB内存为止,发现上面的说到的事实是非常正确的,虚拟内存应设置为物理内存差雀0至1.5倍(0倍是多少啊?就是禁用!^_^)为好,而且物理内存越大这个倍数就应越小而不是越大。当物理内存等于或大于512MB时,绝大多数PC就可以禁用虚拟内存不用了,这时内存性能是更高的!^_^

至于您的虚拟内存具体要设置成多大,您就要自己试一试了,因为这和常驻内存软件的多少和大小以及您平时运行的软件是有直接关系的,所以笔者无法给出建议值。您可先将其设为物理内存等同后,再运行几个大型软件,如果没有异常情况出现的话,您就再将其设置成物理内存的一半后再运行那几个大型软件,如果出现了异常,您就要适当加大虚拟内存的值了!以此类推,当您找到更佳值后只要把这个值设置到C盘上就OK了!:)

注:如果您使用的是Windows ME及以下的操作系统的话,可下载“MagnaRAM 97”来优化物理内存和虚拟内存,这样的效果更好!另外,笔者建议您不要再使用那些所谓的优化和整理内存的软件了!

2.内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。举一个例子来说,如果电脑只有128MB物理内存的话,当读取一个容量为200MB的文件时,就必须要用到比较大的虚拟内存,文件被内存读取之后就会先储存到虚拟内存,等待内存把文件全部储存到虚拟内存之后,跟着就会把虚拟内里储存的文件释放到原来的安装目录里了。下面,就让我们一起来看看如何对虚拟内存进行设置吧。

虚拟内存的设置

对于虚拟内存主要设置两点,即内存大小和分页茄庆消位置,内存大小就是设置虚拟内存最小为多少和更大为多少;而分页位置则是设置虚拟内存应使用那个分区中的硬盘空间。对于内存大小的设置,如何得到最小值和更大值呢?你可以通过下面的方法获得:选择“开始→程序→附件→系统工具→系统监视器”(如果系统工具中没有,可以通过“添加/删除程序”中的Windows安装程序进行安装)打开系统监视器,然后选择“编辑→添加项目”,在“类型”项中选择“内存管理程序”,在右侧的列表选择“交换文件大小”。这样随着你的操作,会显示出交换文件值的波动情况,你可以把经常要使用到的程序打开,然后对它们进行使用,这时查看一下系统监视器中的表现值,由于用户每次使用电脑时的情况都不尽相同,因此,更好能够通过较长时间对交换文件进行监视来找出更符合您的交换文件的数值,这样才能保证系统性能稳定以及保持在更佳的状态。

找出最合适的范围值后,在设置虚拟内存时,用鼠标右键点击“我的电脑”,选择“属性”,弹出系统属性窗口,选择“性能”标签,点击下面“虚拟内存”按钮,弹出虚拟内存设置窗口,点击“用户自己指定虚拟内存设置”单选按钮,“硬盘”选较大剩余空间的分区,然后在“最小值”和“更大值”文本框中输入合适的范围值。如果您感觉使用系统监视器来获得更大和最小值有些麻烦的话,这里完全可以选择“让Windows管理虚拟内存设置”。

调整分页位置

Windows 9x的虚拟内存分页位置,其实就是保存在C盘根目录下的一个虚拟内存文件(也称为交换文件)Win386.swp,它的存放位置可以是任何一个分区,如果系统盘C容量有限,我们可以把Win386.swp调到别的分区中,方法是在记事颤知本中打开System.ini(C:\Windows下)文件,在小节中,将“PagingDrive=C:WindowsWin386.swp”,改为其他分区的路径,如将交换文件放在D:中,则改为“PagingDrive=D:Win386.swp”,如没有上述语句可以直接键入即可。

而对于使用Windows 2023和Windows XP的,可以选择“控制面板→系统→高级→性能”中的“设置→高级→更改”,打开虚拟内存设置窗口,在驱动器中默认选择的是系统所在的分区,如果想更改到其他分区中,首先要把原先的分区设置为无分页文件,然后再选择其他分区。

或者,WinXP一般要求物理内存在256M以上。如果你喜欢玩大型3D游戏,而内存(包括显存)又不够大,系统会经常提示说虚拟内存不够,系统会自动调整(虚拟内存设置为系统管理)。

如果你的硬盘空间够大,你也可以自己设置虚拟内存,具体步骤如下:右键单击“我的电脑”→属性→高级→性能 设置→高级→虚拟内存 更改→选择虚拟内存(页面文件)存放的分区→自定义大小→确定更大值和最小值→设置。一般来说,虚拟内存为物理内存的1.5倍,稍大一点也可以,如果你不想虚拟内存频繁改动,可以将更大值和最小值设置为一样。

44》虚拟内存使用技巧

对于虚拟内存如何设置的问题,微软已经给我们提供了官方的解决办法,对于一般情况下,我们推荐采用如下的设置方法:

(1)在Windows系统所在分区设置页面文件,文件的大小由你对系统的设置决定。具体设置方法如下:打开”我的电脑”的”属性”设置窗口,切换到”高级”选项卡,在”启动和故障恢复”窗口的”写入调试信息”栏,如果你采用的是”无”,则将页面文件大小设置为2MB左右,如果采用”核心内存存储”和”完全内存存储”,则将页面文件值设置得大一些,跟物理内存差不多就可以了。

小提示:对于系统分区是否设置页面文件,这里有一个矛盾:如果设置,则系统有可能会频繁读取这部分页面文件,从而加大系统盘所在磁道的负荷,但如果不设置,当系统出现蓝屏死机(特别是STOP错误)的时候,无法创建转储文件 (Memory.dmp),从而无法进行程序调试和错误报告了。所以折中的办法是在系统盘设置较小的页面文件,只要够用就行了。

(2)单独建立一个空白分区,在该分区设置虚拟内存,其最小值设置为物理内存的1.5倍,更大值设置为物理内存的3倍,该分区专门用来存储页面文件,不要再存放其它任何文件。之所以单独划分一个分区用来设置虚拟内存,主要是基于两点考虑:其一,由于该分区上没有其它文件,这样分区不会产生磁盘碎片,这样能保证页面文件的数据读写不受磁盘碎片的干扰;其二,按照Windows对内存的管理技术,Windows会优先使用不经常访问的分区上的

页面文件,这样也减少了读取系统盘里的页面文件的机会,减轻了系统盘的压力。

(3)其它硬盘分区不设置任何页面文件。当然,如果你有多个硬盘,则可以为每个硬盘都创建一个页面文件。当信息分布在多个页面文件上时,硬盘控制器可以同时在多个硬盘上执行读取和写入操作。这样系统性能将得到提高。

小提示:

允许设置的虚拟内存最小值为2MB,更大值不能超过当前硬盘的剩余空间值,同时也不能超过32位操作系统的内存寻址范围——4GB。

虚拟内存的设置方法:

 

1、右键单击“计算机”图标(XP为我的电基裂历脑)选择属性。

 

2、单击系统属性窗口里的“高级系统设置”标签,再单击弹出的对话框中的“设置”按钮。

3、在弹出来的性能选项窗口中单击“高级”,在下面的虚拟内存点击“更改”按钮。

4、弹出的对话框就是设置虚拟内存,虚拟内存更好在非系统盘里,选中盘符,点击“源逗自定义大小”。输入“初始大小”和“更大值”,然后点击“设置”按钮。(虚拟内存最小值是物理内存的1到1.5倍;虚拟内存更大值是物理内存的2到2.5倍。)

5、出现“要使改动生效,需要重新启动计算机”的提示,单击“确定”即可。

6、在所有窗口中都点“确定”直到弹出“必须重新启动计算机才能使新的设置生效。”的提示,点击“是”,系统将自动重启。

 

重启完成后,虚拟内存就设置生效了。

 

虚拟内存是计算机系统搏搜内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“交换空间”等。

虚拟内存使用技巧

对于虚拟内存如何设置的问题,微软已经给我们提供了官方的解决办法,对于一般情况下,我们推荐采用如下的设置方法:

  (1)在Windows系统所在分区设置页面文件,文件的大小由你对系统的设置决定。具体设置方法如下:打开”我的电脑”的”属性”设置窗口,切换到”高级”选项卡,在”启动和故障恢复”窗口的”写入调试信息”栏,如果你采用的是”无”,则将页面文件大小设置为2MB左右,如果采用”核心内存存储”和”完全内存存储”,则将页面文件值设置得大一些,跟物理内存差不多就可以了。

  小提示:对于系统分区是否设置页面文件,这里有一个矛盾:如果设置,则系统有可能会频繁读取这部分页面文件,从而加大系统盘所在磁道的负荷,但如果不设置,当系统出现蓝屏死机(特别是STOP错误)的时候,无纯亏法创建转储文件

(Memory.dmp),从而无法进行程序调试和错误报告了。所以折中的办法做慧神是在系统盘设置较小的页面文件,只要够用就行了。

(2)单独建立一个空白分区,在该分区设置虚拟内存,其最小值设置为物理内存的1.5倍,更大值设置为物理内存的3倍,该分区专门用来存储页面文件,不要再存放其它任何文件。之所以单独划分一个分区用来设置虚拟内存,主要是基于两点考虑:其一,由于该分区上没有其它文件,这样分区不会产生磁盘碎片,这样能保证页面文件的数据读写不受磁盘碎片的干扰;其二,按照Windows对内存的管理技术,Windows会优先使用不经常访问的分区上的

页面文件,这样也减少了读取系统盘里的页面文件的机会,减轻了系统盘的压力。

  (3)其它硬盘分区不设置任何页面文件。当然,如果你有多个硬盘,则可以为每个硬盘都创建一个页面文件。当信息分布在多个碧者页面文件上时,硬盘控制器可以同时在多个硬盘上执行读取和写入操作。这样系统性能将得到提高。

  小提示:

  允许设置的虚拟内存最小值为2MB,更大值不能超过当前硬盘的剩余空间值,同时也不能超过32位操作系统的内存寻址范围——4GB。

linux分页存储管理的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux分页存储管理,深入解析Linux分页存储管理技术,linux中cat、more、less命令区别详解,如何避免内存碎片,虚拟内存怎么设置?的信息别忘了在本站进行查找喔。


数据运维技术 » 深入解析Linux分页存储管理技术 (linux分页存储管理)