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

写过代码的人对程序运行的大致流程应该都不陌生:数据先由硬盘读取进内存,之后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日

相关推荐

  • 如何更新服务器CentOS版本?

    老版本系统一旦被官方”抛弃”,就再也收不到安全补丁了,如果继续使用这类过期系统,不法分子很容易利用系统漏洞发起攻击,轻则破坏服务器正常运行,重则窃取内部核心…

    2026年5月12日
    0
  • 如何在云服务器上设置 OpenClaw

    在云服务器上搭建 OpenClaw(小龙虾),步骤很简单,只需准备好云服务器(VPS)环境,克隆 OpenClaw 官方仓库,运行 Docker 设置脚本,配置好 AI 提供者的凭…

    2026年4月21日
    0
  • DNS攻击手法有哪些?

    什么是DNS? 域名系统(DNS)是一套把域名(比如 website.com)翻译成 IP 地址(比如 208.38.05.149)的协议。当用户在浏览器里输入域名 website…

    2026年6月5日
    0
  • IPv4与IPv6:互联网网络层协议的演进与迁移路径

    众所周知,Internet是当前全球规模最大、影响力最广的计算机网络,其网络层作为核心支撑部分,主要涵盖了网际协议(IP)、路由协议以及互联网控制报文协议(ICMP)等关键内容。 …

    2026年4月23日
    0
  • 常见的虚拟主机是什么?

    虚拟主机(Virtual Host)属于一类在单台物理主机或者主机集群之上,达成多域名并行服务的技术方案,能够同时承载多个站点或业务。各虚拟主机实例彼此完全隔离,并且支持用户自主运…

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

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

    2026年7月31日
    0
  • Linux系统查看磁盘情况命令:df、du

    Linux并不像Windows系统那样配备便捷的图形操作界面,尤其是在充当服务器角色使用的场景下,往往只能依赖命令行来完成各项操作。 我手头有一台云服务器,平日里主要用来做一些数据…

    2026年7月13日
    0
  • 云主机备份策略指南:从基础规则到落地实操

    在企业数字化业务全面上云的今天,云主机早已成为承载核心业务数据、系统服务的核心载体。但不少运维团队都曾遇到过数据丢失的突发状况:误删核心业务文件、勒索病毒加密全量数据、硬件故障导致…

    2026年9月8日
    0
  • 什么是 PostgreSQL?一款开源数据库系统

    PostgreSQL 是一款开源的对象关系型数据库系统,能安全、稳定地应对各种复杂的数据处理需求。下面就为大家介绍PostgreSQL的基本概念、常见应用场景。 什么是 Postg…

    2026年4月23日
    0
  • 网络图片侵权被告?赔偿标准是多少

    为网络的开放特性与便利性,使得网络上非常容易出现图片侵权状况,大量图片版权拥有者在毫不知情的状态下被他人直接使用自己创作或拍摄的图片,当察觉自身权益遭到侵害时,无论对方是有意还是无…

    2026年6月4日
    0