EDA365电子论坛网
标题:
通用内核线程在Linux内核软中断线程中的启示
[打印本页]
作者:
thinkfunny
时间:
2019-8-28 09:00
标题:
通用内核线程在Linux内核软中断线程中的启示
Linux 2.6.11版本的内核软中断线程ksoftirqd代码如下,下面框架可以看出对于,吞吐量与处理延迟两者之间的权衡。
% L" ^% f. U) z( O0 m5 a4 |/ v
9 _# P( }: w# r, _7 a \+ g& Y' T
软中断线程处理概括:
3 D# G! o! a' P( ]0 ?$ R
3 _/ ^/ }! E# |$ {
1、如果没有活干(没有软中断等待处理)就 schedule()切出,并从运行队列里面删除(由于任务状态已经变成TASK_INTERRUPTIBLE)
8 |1 g2 t) N- ^ i
$ d/ n5 ~0 P& h; I8 a
2、如果有活儿干,就把当前pending的软中断处理完,处理过程中检查如果本线程运行时间过长,则 schedule()切出(cond_resched()完成这一切),避免其他线程饿死。但切出时任务状态是TASK_RUNNING,不会移出运行队列(线程还有活儿没干完,得赶紧回来),由于移出前,关闭了内核抢占,很快就会重新调度到本线程的。
1 g9 ]: @, K7 D8 B
5 K( Q- H* T* e/ M$ @ u
- J, e# q8 ~4 T' Y0 E
8 r7 K/ j- X' e
作者:
wu68aq
时间:
2019-8-28 18:20
通用内核线程在Linux内核软中断线程中的启示。
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2