详解SWAP分区

这里来介绍一下Linux下的一个内存管理机制:SWAP分区

首先来介绍一下什么是SWAP分区:

SWAP分区是指,当内存中没有可用内存时,操作系统会把一些不常用的内存拿出来,放到可用内存池当中,除此之外,操作系统还会把一些在内存中,进程不常用内存拿出来放到内存池当中,且把这些数据存放到磁盘的SWAP分区中,当下次要用时则将内存拿回来,并从SWAP从读取数据存放进去,然后返回进程!


但是缺点是在SWAP分区爆满的情况下会造成不稳定,列如:

当内存爆满时候,A进程需要一个1024字节的内存,此时B进程里刚好有1024个字节的内存不常用,那么此时操作系统会把这一部分内存里的数据存放到SWAP中,然后将其分配给A进程时候,但是倘若此时SWAP分区是爆满的情况下,就会出现无法分配的情况,这种情况下就会从磁盘中划分内存!

其次,倘若已经交换完成了,并且刚好交换完成之后,SWAP内存爆满了,此时,B进程需要那块内存,A进程需要保存这块内存的数据,那么此时SWAP分区爆满之后就没有办法将进程中的数据存放进去,所以此时A进程的数据则丢失,B进程数据恢复,所以会导致不稳定的情况!

SWAP存储在磁盘中,是Linux 下特有的机制,在安装操作系统时就已经设定好了,想要修改可以通过SWAP配置文件进行修改!

 #mkswap /home/swap Setting up swapspace version 1, size = 1023996 KiB

设置新的swap文件

# swapon /home/swap

如果你的电脑上没有swap文件或size=0,则swap服务linux会视为无效!

swap分区越大,磁盘的可用内存就越小!因为linux要划分一块区域用来存储swap分区!

注意windows上没有此服务,windows是直接使用虚拟内存,虚拟内存不够用从磁盘里划分!

猜你喜欢

转载自blog.csdn.net/bjbz_cxy/article/details/80257176