更多课程 选择中心

嵌入式培训
达内IT学院

400-111-8989

嵌入式内存管理之交换空间swap的使用

  • 发布:嵌入式培训
  • 来源:嵌入式教程
  • 时间:2019-10-23 16:15

虽然现在的内存已经变得非常廉价,但是swap仍然有很大的使用价值,合理的规划和使用swap分区,对系统稳定运行至关重要。Linux下可以使用文件系统中的一个常规文件或者一个独立分区作为交换空间使用。同时linux允许使用多个交换分区或者交换文件。

1.创建swap交换空间

创建交换空间所需的交换文件是一个普通的文件,但是,创建交换文件与创建普通文件不同,必须通过dd命令来完成,同时这个文件必须位于本地硬盘上,不能在网络文件系统(NFS)上创建swap交换文件。例如:

[root@localhost ~]#dd if=/dev/zero of=/data/swapfile bs=1024 count=65536

65536+0 records in

65536+0 records out

这样就创建一个有连续空间的交换文件,大小为60M左右,关于dd命令做简单的讲述:

if=输入文件,或者设备名称。

of=输出文件或者设备名称。

ibs=bytes 表示一次读入bytes 个字节(即一个块大小为 bytes 个字节)。

obs=bytes 表示一次写bytes 个字节(即一个块大小为 bytes 个字节)。

bs=bytes,同时设置读写块的大小,以bytes为单位,此参数可代替 ibs 和 obs。

count=blocks 仅拷贝blocks个块。

skip=blocks 表示从输入文件开头跳过 blocks 个块后再开始复制。

seek=blocks表示从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)

这里的输入设备/dev/zero代表一个输出永远为0的设备文件,使用它作输入可以得到全为空的文件。

2.激活和使用swap

首先通过mkswap命令指定作为交换空间的设备或者文件:

[root@localhost ~]#mkswap /data/swapfile

Setting up swapspace version 1, size = 67104 kB

[root@localhost backup]#free

total used free shared buffers cached

Mem: 2066632 1998188 68444 0 26160 1588044

-/+ buffers/cache: 383984 1682648

Swap: 4088500 101036 3987464

从上面输出可知,我们指定了一个67104 kB的交换空间,而此时新建的交换空间还未被激活。

下面简单介绍下mkswap命令,mkswap的一般使用格式为:

mkswap [参数] [设备名称或文件][交换区大小]

参数:

-c:建立交换区前,先检查是否有损坏的区块。

-v0:建立旧式交换区,此为预设值。

-v1:建立新式交换区。

交换区大小:指定交换区的大小,单位为1024字节。

设置交换分区后,接着通过swapon命令激活swap:

[root@localhost ~]#/usr/sbin/swapon /data/swapfile

[root@localhost backup]#free

total used free shared buffers cached

Mem: 2066632 1997668 68964 0 27404 1588880

-/+ buffers/cache: 381384 1685248

Swap: 4154028 100976 4053052

通过free命令可以看出,swap大小已经由4088500k变为4154028k,相差的值是60M左右,刚好等于我们增加的一个交换文件大小,这说明新增的交换分区已经可以使用了。

但是如果linux重启,那么新增的swap空间将变得不可用,因此需要在/etc/fstab中添加自动加载设置:

/data/swapfile none swap sw 0 0

如此以来,linux在重启后就可以实现自动加载swap分区了。其实linux在启动过程中会执行“swapon -a”命令,此命令会加载列在/etc /fstab中的所有交换空间。

3.移除swap

通过swapoff即可移除一个交换空间

[root@localhost ~]#/usr/sbin/swapoff /data/swapfile

其实也可以通过“swapoff -a”移除在/etc/fstab中定义的所有交换空间,这里的“swapoff -a”与上面提到的“swapon -a”对应。执行“swapoff -a”后,free命令输出如下:

[root@localhost backup]# free

total used free shared buffers cached

Mem: 2066632 2048724 17908 0 30352 1642748

-/+ buffers/cache: 375624 1691008

Swap: 0 0 0

完成指令!

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:嵌入式Linux系统启动过程详解
下一篇:关于Linux嵌入式系统设计的层次设计

裸编程怎么做?裸编程具体做法

嵌入式编程中你必须知道的小知识

嵌入式C语言编程小知识总结

有哪些工具可以让嵌入式开发事半功倍?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

  • 搜索抖音号

    搜索抖音号:1821685962

    免费领取达内课程视频学习资料

Copyright © 2021 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省