linux内核线程定时,Linux内核线程的解释

a4c26d1e5885305701be709a3d33442f.png

Linux内核线程的解释

(2006-05-11 18:31:50)

取自 CentOS4

代码:PID TTY STAT TIME COMMAND

1 ? S 0:01 init [3]

2 ? S 0:01 [migration/0]

3 ? SN 0:00 [ksoftirqd/0]

4 ? S 0:00 [migration/1]

5 ? SN 0:00 [ksoftirqd/1]

6 ? S< 0:00 [events/0]

7 ? S< 0:00 [events/1]

8 ? S< 0:00 [khelper]

9 ? S< 0:00 [kblockd/0]

10 ? S< 0:00 [kblockd/1]

11 ? S 0:00 [khubd]

35 ? S 0:42 [pdflush]

36 ? S 0:02 [pdflush]

38 ? S< 0:00 [aio/0]

39 ? S< 0:00 [aio/1]

37 ? S 0:19 [kswapd0]

112 ? S 0:00 [kseriod]

177 ? S 0:00 [scsi_eh_0]

178 ? S 0:00 [ahc_dv_0]

188 ? S 0:00 [scsi_eh_1]

189 ? S 0:00 [ahc_dv_1]

196 ? S 2:31 [kjournald]

903 ? S1277 ? S 0:00 [kjournald]

1745 ? Ss 0:02 syslogd -m 0

1749 ? Ss 0:00 klogd -x

1958 ? Ss 0:13 /usr/sbin/sshd

2060 ? Ss 0:00 crond

2135 tty2 Ss+ 0:00 /sbin/mingetty tty2

2136 tty3 Ss+ 0:00 /sbin/mingetty tty3

2137 tty4 Ss+ 0:00 /sbin/mingetty tty4

2138 tty5 Ss+ 0:00 /sbin/mingetty tty5

2139 tty6 Ss+ 0:00 /sbin/mingetty tty6

23564 ? S 0:00 bash

25605 ? Ss 0:00 sshd: peter [priv]

25607 ? S 0:00 sshd: peter@pts/2

内核线程(按姓氏笔划排列):

events 处理内核事件

很多软硬件事件(比如断电,文件变更)被转换为events,

并分发给对相应事件感兴趣的线程进行响应

ksoftirqd 处理软中断

硬件中断处理往往需要关中断,而这个时间不能太长,否则会丢失新的中断

所以中断处理的很大一部分工作移出,转给任劳任怨的ksoftirqd在中断之

外进行处理

比如一个网络包,从网卡里面取出这个过程可能需要关中断,但是TCP/IP协

议处理就不必关中断了

kblockd 管理磁盘块读写

kseriod

khubd

khelper

scsi_eh_0

ahc_dv_0

kjournald Ext3文件系统的日志管理

通常每个 _已mount_ 的 Ext3分区会有一个 kjournald看管,各分区的日志

是独立的

pdflush dirty内存页面的回写

太多dirty的页面意味着风险,比如故障时候的内容丢失,

以及对突发的大量物理内存请求的响应(大量回写会导致糟糕的响应时间)

kswapd 内存回收

确保系统空闲物理内存的数量在一个合适的范围

aio 代替用户进程管理io

用以支持用户态的AIO

migration 管理多核心(包括HypterThreading衍生的那个不大管用的、大家都不愿迁过

去的核心)系统之中,

线程在各核心的迁移

用户进程:

crond 执行定时任务

init 引导用户空间服务,管理孤儿线程,以及运行级别的转换(# init N, 或者 #

kill -SIG pidof(init))

如果kernel thread是仙界的神灵的话,那么init应该是神灵用泥土捏出的

尘世的第一个子民 ($ pstree),init肩负使命,开创了尘世的繁荣

(init按照配置文件,安排自己的后代执行相关服务)

mingetty 等待用户从tty登录

对于习惯远程登录的Linux server,不难想象,自出生起,

等待 那些等候在tty窗口的mingetty的,往往是没有尽头的等待

或许故障处理的时候,才有人依据系统报警的提示,在tty敲几个故障处理的命令

bash shell进程,一个命令行形式的系统接口;接受用户的命令,并进行解释、执行

sshd ssh登录、文件传输、命令执行 等操作的服务进程

klogd 从内核信息缓冲区获取打印信息

内核在发现异常的时候,往往会输出一些消息给用户,这个对于故障处理很有用

syslogd 系统日志进程

udevd 支持用户态设备操作 (userspace device)

越来越多的东西在往用户态转移,又如用户态文件系统,

GmailFS就把Gmail当作了一个文件系统来用;很容易用它写一个 helloworld fs

背景知识:

线程标志 ps的名称现实里面加 "[]"的是内核线程

线程pid 系统的启动是从硬件->内核->用户态进程的,

pid的分配是一个往前的循环的过程,

所以内核线程的pid往往很小

内核线程 Linux内核可以看作一个服务进程(管理软硬件资源,响应用户进程的种种合

理以及不合理的请求)

内核需要多个执行流并行,为了防止可能的阻塞,多线程化是必要的;

因为各个执行流共享地址空间,所以是多线程

微内核 Linux/FreeBSD/Solaris/Windows 200$ 都不能归为微内核的

微内核的系统,是将文件系统等核心服务归为独立的_进程_,

而非_线程_

一些类别(如 ksoftirqd)的线程的数目和处理器数目关联

分享:

a4c26d1e5885305701be709a3d33442f.png喜欢

0

a4c26d1e5885305701be709a3d33442f.png赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

a4c26d1e5885305701be709a3d33442f.png

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值