
熟悉计算机的小伙伴都知道,我们常说的主机三大件分别是主板,CPU,内存,可见内存在计算机主机中的角色也非同一般,喜欢 DIY 主机的小伙伴对这三大件的了解更是精益求精。 编写过程序的小伙伴对于程序的执行过程,也是耳熟能详了,先从硬盘加载到内存,然后 CPU 与内存进行数据交换与处理,完成相应的操作(真实执行细节相当复杂),从而实现相应的功能。 但是内存的容量非常有限,由于内存的造价较高(目前常用的内存为双倍速 SDRAM ),计算机用户升级内存容量也是一笔不小的开支。 那么就和大家来讨论下计算机的内存如果不够用了, 虚拟内存技术的应用,虚拟内存的出现,让机器内存不够的情况得到部分解决,大家需要注意的是有些资料也将虚拟内存称之为交换内存。 1. 讨论虚拟内存前的热身我们需要知道的是计算机对内存分为物理内存与虚拟内存(注意虚拟内存和虚拟地址空间的区别)。物理内存就是计算机的实际内存大小,由 RAM 芯片组成的。虚拟内存则是虚拟出来的、使用磁盘代替内存。 2. 虚拟内存的工作原理正如前面所描述的,当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。 那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到交换空间中,等到那些程序要运行时,再从交换空间中恢复保存的数据到内存中。 3. Linux 虚拟内存的实现方式Linux 系统实现虚拟内存有两种方法,分别是交换分区( swap 分区)和交换文件。 交换分区交换分区其实就是新建一个分区,然后将该分区挂载作为交换空间,方法步骤与传统的新建分区一样。只不过格式化分区和挂载分区分别采用 mkswap 和 swapon 命令。 交换文件硬盘驱动器中没有足够的空间来创建交换分区,我们就会手动创建一个交换文件以将 RAM 的非活动内容交换到其中。 4. 理想的交换权重Linux 允许我们自行设置交换的权重,也就是说我们可以设置交换过程发生的频率。小伙伴们可以根据需要在0到100之间设置交换的权重。值越小则代表会让内核尽量少用交换,值越大会使内核更多的去使用交换空间。 交换权重的默认值和建议值为60,有兴趣的小伙伴可以具体去学习 swappiness ,这个 Linux 内核参数,这里不做过多的描述了。 5.使用虚拟内存的好处
在本文中,我们学习了交换内存以及它的许多好处,RAM 空间不足时,它将作为 RAM 的扩充进行使用,避免我们的应用程序因内存不足而崩溃。 其实,Swap的调整对 Linux 服务器,特别是 Web 服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。 |
MCSDK FOC应用详解
STM32F10xxx 正交编码器接口应用笔记 及源代码
基于STM32定时器ETR信号的应用示例
《无刷直流电机控制应用 基于STM8S系列单片机》
STM32定时器触发SPI逐字收发之应用示例
【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC
【银杏科技ARM+FPGA双核心应用】STM32H7系列57——MDK_FLM
无刷直流电机控制应用+基于STM8S系列单片机---电子书
STM32 USB的程序,包含固件、驱动和测试用的应用程序
工业以太网总线ETHERCAT驱动程序设计及应用(扫描版)