当用户提交程序,然后产生进程在机器上运行。机器会判断当前物理内存是否还有空闲允许进程调入内存运行,如果有则直接调入内存进行;如果没有,则会根据优先级选择一个进程挂起,把该进程交换到swap中等待,然后把新的进程调入到内存中运行。根据这种换入和换出,实现了内存的循环利用,让用户感觉不到内存的限制。从这也可以看出swap扮演了一个非常重要的角色,就是暂存被换出的进程。
这次遇到的情况如下,通过free命令查询显示为负数,free -h直接就core了。
经查是由于/swapfile1文件被删除导致的,重启解决。。
具体操作中用到一些命令:
swapon -s #查看当前swap的使用情况
dd if=/dev/zero of=/swapfile1 bs=1024 count=2048000 # 创建swap文件
cat /proc/swaps #查看当前swap的使用情况,proc是内存内的信息不可修改
swapoff /swapfile1 #关闭swap
# mkswap /data1/swapfile1 #
# swapon /data1/swapfile1 # 启用挂载swap
[wangzi@host ~]$ free
total used free shared buff/cache available
Mem: 31457280 10432364 13269976 0 7754940 13754978
Swap: 0 -18014398508861628 18014398508861628
[wangzi@host ~]$ free -h
total used free shared buff/cache available
Mem: 30G 9.9G 12G 0B 7.4G 13G
Segmentation fault (core dumped)