你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

虚拟内存技术的应用

[复制链接]
gaosmile 发布时间:2020-8-10 22:32

熟悉计算机的小伙伴都知道,我们常说的主机三大件分别是主板,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,有时可以越过系统性能瓶颈,节省系统升级费用。


收藏 评论0 发布时间:2020-8-10 22:32

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版