虚拟内存是什么?它是如何运作的?

写过代码的人对程序运行的大致流程应该都不陌生:数据先由硬盘读取进内存,之后CPU再与内存展开一系列的数据交互和运算,最终完成既定操作(当中的具体实现远比这复杂得多),程序功能由此得以呈现。

不过,内存空间终归有限,加上内存本身价格不菲(当下主流使用的是双倍速率SDRAM),普通用户想要扩容内存,通常都得花上一笔不小的钱。

接下来,余初云打算带大家聊聊一个话题——当电脑内存捉襟见肘时,虚拟内存技术能起到怎样的作用。正是虚拟内存的出现,才让内存紧张的问题得到了一定程度的纾解,顺带提一句,部分文献里也把虚拟内存叫做交换内存,大家留意一下即可。

1. 正式聊虚拟内存之前,先铺垫几个概念

计算机的内存其实分为两类:物理内存和虚拟内存(这里要特别区分虚拟内存与虚拟地址空间这两个不同的概念)。所谓物理内存,指的就是由RAM芯片构成的、计算机真实拥有的内存容量;而虚拟内存则并非真实存在的硬件资源,它是借用磁盘空间”伪装”成内存来使用的一种技术手段。

2. 虚拟内存究竟是怎么运作的

前面已经提到过,一旦系统的物理内存吃紧,系统就会想办法腾出物理内存里的一部分空间,好让当前正在跑的程序能够继续使用。

而这些被腾出来的空间,多半来自那些长期处于闲置、没什么活动的程序——它们占用的内存会被暂时挪到交换空间里存放,等到这些程序日后需要重新启动运行时,系统再把之前保存的数据从交换空间中读取回内存。

3. Linux下虚拟内存的两种落地方式

在Linux系统里,实现虚拟内存主要有两条路径:交换分区(也就是swap分区)和交换文件。

交换分区

所谓交换分区,说白了就是划出一个新的磁盘分区,然后把它挂载起来充当交换空间使用,整个操作流程和平时新建分区没什么两样,唯一的区别在于,格式化和挂载这两步分别要用到mkswap和swapon这两条命令。

交换文件

如果硬盘上实在腾不出空间来专门划一个交换分区,那也可以退而求其次,手动建一个交换文件,把RAM里那些不活跃的内容临时交换存放进去。

4. 交换权重该怎么设置比较合适

Linux系统支持用户自行调节交换权重,通俗点说,就是可以自己决定系统触发交换动作的积极程度。这个数值的可设置区间是0到100,数值越低,内核就越倾向于少用交换机制;数值越高,内核就会越频繁地调用交换空间。

交换权重这项参数的默认值以及官方建议值都是60,如果有朋友对此感兴趣,不妨专门去研究一下swappiness这个Linux内核参数,具体细节这里就不多展开了。

5. 用虚拟内存到底能带来哪些好处

  • 能把那些长期占着位置却几乎用不上的RAM区块轻松腾挪出来,然后把这部分空出来的RAM让给优先级更高的程序去使用。
  • 有效避免RAM彻底耗尽、导致其他程序根本无法启动运行的尴尬局面。
  • 相当于给RAM配了一个后备资源池,变相扩大了RAM可用的实际容量。
  • 系统进入休眠状态时,RAM里的所有数据都要写入交换空间保存,因此想让休眠顺利完成,虚拟内存是绕不开的必要条件。
  • 只要内核参数swappiness设置得当,虚拟内存还能对系统整体性能起到提升作用。

原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/jsjc/3257.html

Like (0)
Previous 2026年7月25日
Next 2026年7月27日

相关推荐

  • 什么是 Node.js?一文读懂其优势与不足

    在 Web 开发领域,JavaScript 长期占据客户端编程语言的主流地位。它的价值早已不局限于前端交互,在跨平台应用开发方面同样用途广泛。React Native、PhoneG…

    2026年4月20日
    0
  • DV与OV SSL证书有什么不一样?

    DV证书与OV证书之间究竟存在哪些差异呢?众所周知,SSL证书依照验证方式的不同,可以划分为DV SSL证书、OV SSL证书以及EV SSL证书这三大类型,而对于DV SSL证书…

    2026年7月16日
    0
  • 服务器集群究竟是什么?

    如今“集群”这个概念正被越来越多人熟知,这项技术也早已渗透到各类实际业务场景中落地应用。不少人会好奇,服务器集群究竟是什么?它又具备哪些优势与短板? 一、什么服务器集群 服务器作为…

    2026年6月29日
    0
  • 什么是WebShell?

    在Linux系统当中,Shell指的是操作系统所提供的命令行运行环境,而与之对应的WebShell,则是指通过Web方式呈现出来的一种Shell环境。部分管理后台系统支持在不直接登…

    2026年7月31日
    0
  • 什么是数字证书?其含义、类型和重要性

    什么是数字证书? 数字证书是一种数字文档,用于证明用于加密在线资产(例如电子邮件通信、文档、网站或软件应用程序)的公钥的真实性。 数字证书,也称为身份证书或公钥证书,是一种利用公钥…

    2026年4月27日
    0
  • 什么是服务器备份?有哪些好处?

    服务器备份,简单来说,就是主动为服务器或联网计算机系统里的关键数据创建副本的过程。这些副本我们称之为“备份”,通常会和原始数据分开存储。这样一来,即便原始数据因为硬件故障、人为操作…

    2026年4月22日
    0
  • 网站打开速度越来越慢和主机有关系吗?

    网站上线运营一段时间后,页面加载越来越慢几乎是个绕不开的问题。 出现这种情况,很多站长的第一反应是去查代码、压图片、卸插件,或者觉得是最近网络不稳定。这些方向不能说没有道理,但常常…

    2026年4月13日
    0
  • 深入掌握Nginx服务器

    本文介绍nginx服务器及其主要特性,首先给出了包管理器安装及编译安装两种方式,然后重点对 nginx 配置文件中的指令及参数进行详细说明,在了解 nginx 的工作方式后,从 n…

    2026年5月8日
    0
  • Linux的查找和定位命令有什么不一样?

    熟悉 Linux 终端与否,其实取决于你能否很好地应对混乱的目录结构。Linux 查找命令和 Linux 定位命令是你在审计安全权限、清理日志文件,或寻找你确定保存在某处的配置脚本…

    2026年3月25日
    0
  • 如何在Ubuntu 18.04操作系统上安装Apache Tomcat?

    Apache Tomcat是一个基于Java技术的web服务器,用于管理web应用程序。在本教程中,您将学习在Linux Ubuntu 18.04上安装Tomcat的所有必要说明。…

    2026年5月12日
    0