从按下电源开关到bash提示符 8.守护进程

8. 守护进程

如果你尝试ps aux命令,你会看到类似下面的内容:

USER       PID %CPU %MEM  SIZE   RSS TTY STAT START   TIME COMMAND
root 1 0.1 8.0 1284 536 ? S 07:37 0:04 init [2]
root 2 0.0 0.0 0 0 ? SW 07:37 0:00 (kflushd)
root 3 0.0 0.0 0 0 ? SW 07:37 0:00 (kupdate)
root 4 0.0 0.0 0 0 ? SW 07:37 0:00 (kpiod)
root 5 0.0 0.0 0 0 ? SW 07:37 0:00 (kswapd)
root 52 0.0 10.7 1552 716 ? S 07:38 0:01 syslogd -m 0
root 54 0.0 7.1 1276 480 ? S 07:38 0:00 klogd
root 56 0.3 17.3 2232 1156 1 S 07:38 0:13 -bash
root 57 0.0 7.1 1272 480 2 S 07:38 0:01 /sbin/agetty 38400 tt
root 64 0.1 7.2 1272 484 S1 S 08:16 0:01 /sbin/agetty -L ttyS1
root 70 0.0 10.6 1472 708 1 R Sep 11 0:01 ps aux

这是在你系统中运行的程序清单。这些信息来自/proc文件系统。请注意init是1号进程,进程2,3,4和5分别是kflushd, kupdate, kpiod and kswapd。这里有一件很奇怪的事:你会注意到虚拟占用(SIZE)和实际占用(RSS)列都是0,进程怎么会不使用内存呢?

这些进程就是内核守护进程。大部分内核并不显示在进程列表里,你只能通过做减法的方式来了解内核用了多少内存。守护进程在init之后启动,所以他们和其他进程一样有进程ID,但是他们的代码和数据都存放在内核占有的内存中。

守护进程带有括号,因为/proc文件系统不包含这些进程的命令行信息。There are brackets around the entries in the command column because the /proc filesystem does not contain command line information for these processes.

那么守护进程是用来干吗的呢?这个文章以前的版本曾经请求大家帮助,由于我对守护进程了解不多,下面部分是由从网友回复的内容中综合而来的。欢迎发来更多的线索,参考,订正!

输入和输出是通过内存中的缓冲来完成的,这让事情变得更快,程序的写入会存放在内存缓冲中,然后再一起写入硬盘。守护进程kflushd和 kupdate管理这些工作。kupdate间断的工作(每5秒?)来检查是否有写过的缓冲,如过有,就让kflushd把它们写入磁盘。

进程有时候无事可做,当他运行时也不一定需要把所有的代码和数据都放在内存中。这意味着我们可以通过把运行中程序不用的内容切换到交换分 区来更好的是用内存。把这些数据移入/移出内存通过kpiod和kswapd,大约每隔1秒,kswapd醒来并检查内存情况。如果在硬盘的东西要读入内 存,或者内存可用空间不足。kpiod就会被调用。

kapmd也可能在你的系统中运行,如果你在内核中配置过自动电源管理。

8.1 配置

update程序可以让你配置Kflushd和kswapd,尝试update -h获得更多信息。

交换空间由swapon打开,由swapoff关闭。init脚本(/etc/rc.sysinit 或/etc/rc.d/rc.sysinit)通常会在启动时调用swapon。我听说swapoff可以为笔记本电脑省不少电。

8.2 练习

运行update -d,留心关于“threshold for buffer fratricide”的讨论,这是个有趣的概念,深入调查一下。

到/proc/sys/vm 并用cat来看看里面的文件,你能发现什么?

8.3 更多信息

Linux文件工程(LDP)的“The Linux Kernel”(看The Linux Kernel 的相关部分)

Linux内核源代码,如果你胆子够大!kswapd的代码在linux/mm/vmscan.c,kflushd和kupdate在 linux/fs/buffer.c里。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值