内存交换空间(swap)

内存交换空间(swap)

swap是磁盘上的一块区域,是一种增加系统虚拟内存(磁盘空间充当内存)的特殊分区或文件。当系统的物理内存(RAM)不足以满足应用程序的运行需求时,Linux内核会使用swap临时存储不活跃的内存页,从而释放出物理内存供活跃进程使用。

swap的原理

swap的原理是基于操作系统的分页机制,它允许系统将不常使用的内存页(pages)暂时移动到硬盘上,从而释放物理内存(RAM)供其他更活跃的进程使用。

1.分页机制:操作系统将物理内存和虚拟内存划分为固定大小的页,通常是4KB。每个进程都有自己的虚拟地址空间,这个空间也被划分为页。
2.页表:操作系统维护一个页表,记录了哪些虚拟页映射到物理页框。页表还包含了每个页的访问权限和其他信息。
3.内存不足:当系统物理内存不足以满足所有进程的需求时,操作系统需要决定哪些页可以暂时移出内存。
4.交换出去:选择一些不常使用的页,将他们写入到硬盘上的swap空间。这个过程称为"换出"(swapping out)或"页面置换"(paging out)。
5.更新页表:操作系统更新页表,标记已经交换出去的页,并将这些页从物理内存中移除。
6.请求页面:当进程访问一个已经被交换出去的页时,会发生"缺页中断"。
7.交换进来:操作系统查找空闲的物理页,或者选择另一个页换出,为所需的页腾出空间。然后从swap空间中读取所需的页到新的物理页框中,并更新页表。这个过程称为"换入"(swapping in)或"页面调入"(paging in)。
8.重复上述过程:随着进程的运行,内存页会在swap空间和物理内存之间不断交换,以满足系统的内存需求。

swap空间的使用会有一定的性能开销,因为硬盘的读写速度远低于内存的读写速度。因此swap视为物理内存的补充,而非替代品。理想情况下,系统的物理内存足够大,以至于swap空间很少被使用。但当物理内存紧张时,swap是一个重要的机制,可以防止系统因内存不足而崩溃。

swap的使用场景

  1. 内存不足时: 当系统的物理内存(RAM)不足以支持所有运行中的进程和应用程序时,swap空间被用来临时存储不活跃的内存页,从而释放物理内存供其他活跃的进程使用。swap可以作为最后一道防线,防止系统因内存溢出而崩溃。即使物理内存耗尽,系统仍然可以运行,尽管性能会受到影响。
  2. 系统休眠与恢复: 当系统进入休眠状态时,内存中的内容通常会被写入硬盘上的休眠文件中。在系统恢复时,这些内容会从硬盘读取会内存。虽然不是swap直接使用的场景,但swap空间可以用来临时存储数据,来优化这一过程。

swap相关命令

查看系统的内存和交换空间(swap)的使用情况
free -h

查看交换空间(swap)的详细信息
swapon --show

swap内存释放(需要保证内存剩余量要大于等于swap使用量,否则会宕机)
根据内存机制,swap分区释放后,所有存放在swap分区的文件会转存到物理内存中,通过先关闭swap,之后再开启swap
关闭swap: swapoff -a
开启swap: swapon -a
posted @ 2024-06-13 20:35  柯南。道尔  阅读(41)  评论(0编辑  收藏  举报