美文网首页
聊聊虚拟内存

聊聊虚拟内存

作者: 良许Linux | 来源:发表于2020-08-10 20:51 被阅读0次

    大家好,我是良许。

    熟悉计算机的小伙伴都知道,我们常说的主机三大件分别是主板,CPU,内存,可见内存在计算机主机中的角色也非同一般,喜欢 DIY 主机的小伙伴对这三大件的了解更是精益求精。

    编写过程序的小伙伴对于程序的执行过程,也是耳熟能详了,先从硬盘加载到内存,然后 CPU 与内存进行数据交换与处理,完成相应的操作(真实执行细节相当复杂),从而实现相应的功能。

    但是内存的容量非常有限,由于内存的造价较高(目前常用的内存为双倍速 SDRAM ),计算机用户升级内存容量也是一笔不小的开支。

    那么良许就和大家来讨论下计算机的内存如果不够用了, 虚拟内存技术的应用,虚拟内存的出现,让机器内存不够的情况得到部分解决,大家需要注意的是有些资料也将虚拟内存称之为交换内存。

    1. 讨论虚拟内存前的热身

    我们需要知道的是计算机对内存分为物理内存与虚拟内存(注意虚拟内存和虚拟地址空间的区别)。物理内存就是计算机的实际内存大小,由 RAM 芯片组成的。虚拟内存则是虚拟出来的、使用磁盘代替内存。

    2. 虚拟内存的工作原理

    正如前面所描述的,当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。

    那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到交换空间中,等到那些程序要运行时,再从交换空间中恢复保存的数据到内存中。

    3. Linux 虚拟内存的实现方式

    Linux 系统实现虚拟内存有两种方法,分别是交换分区( swap 分区)和交换文件。

    交换分区

    交换分区其实就是新建一个分区,然后将该分区挂载作为交换空间,方法步骤与传统的新建分区一样。只不过格式化分区和挂载分区分别采用 mkswapswapon 命令。

    交换文件

    硬盘驱动器中没有足够的空间来创建交换分区,我们就会手动创建一个交换文件以将 RAM 的非活动内容交换到其中。

    4. 理想的交换权重

    Linux 允许我们自行设置交换的权重,也就是说我们可以设置交换过程发生的频率。小伙伴们可以根据需要在0到100之间设置交换的权重。值越小则代表会让内核尽量少用交换,值越大会使内核更多的去使用交换空间。

    交换权重的默认值和建议值为60,有兴趣的小伙伴可以具体去学习 swappiness ,这个 Linux 内核参数,这里不做过多的描述了。

    5.使用虚拟内存的好处

    • 它可以轻松地保存那些几乎不使用而又被占用的 RAM 块。然后可以将释放的 RAM 用于容纳更多具有更高优先级的程序。
    • 防止 RAM 空间用完,无法执行其他程序的局面。
    • 虚拟内存充当了 RAM 的备份,从而增大了 RAM 的实际空间。
    • 在休眠过程中,RAM 的所有内容均写入交换空间。因此,成功进行休眠,虚拟内存是必需的。
    • 它提高了系统的整体性能。(在内核参数 swappiness 设置合理的情况下)

    6. 结论

    在本文中,我们学习了交换内存以及它的许多好处,RAM 空间不足时,它将作为 RAM 的扩充进行使用,避免我们的应用程序因内存不足而崩溃。

    其实,**Swap **的调整对 Linux 服务器,特别是 Web 服务器的性能至关重要。通过调整 Swap,有时可以越过系统性能瓶颈,节省系统升级费用。


    最后,最近很多小伙伴找我要Linux学习路线图,于是我根据自己的经验,利用业余时间熬夜肝了一个月,整理了一份电子书。无论你是面试还是自我提升,相信都会对你有帮助!目录如下:

    免费送给大家,只求大家金指给我点个赞!

    电子书 | Linux开发学习路线图

    也希望有小伙伴能加入我,把这份电子书做得更完美!

    有收获?希望老铁们来个三连击,给更多的人看到这篇文章

    推荐阅读:

    相关文章

      网友评论

          本文标题:聊聊虚拟内存

          本文链接:https://www.haomeiwen.com/subject/uohsdktx.html