转载_Linux内核线程的解释

取自 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 ? S<s udevd<="" p="" 0:00=""> 1277 ? 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

<s udevd<="" p="" 0:00="" style="color: rgb(70, 70, 70); font-family: simsun; font-size: 14px; line-height: 21px; background-color: rgb(248, 236, 216);">
内核线程(按姓氏笔划排列):

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)的线程的数目和处理器数目关联
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值