软中断和微线程的处理都依赖于一组每-处理器内核线程,这些内核线程在当系统中软中断或微线程处理过于频繁时协助软中断和微线程的处理。
一个软中断或微线程可以重新激活自己,从来导致其又重新运行,这样会导致用户程序无法获得处理器,同时,忽略二次激活也是不可接受的。为了满足这两个需求,解决办法是,内核不会立即处理二次激活的软中断或微线程,而是,如果软中断或微线程的数目增长过快,内核将唤醒一些内核线程来协助处理,这些内核线程执行的优先级为最低(nice值为19),以确保它们不会在更重要的任务之前执行。每个处理器都有一个这样的线程,命名为ksoftirqd/n,其中n是处理器的编号。比如,对于双核处理器,有两个这样的内核线程:ksoftirqd/0,ksoftirqd/1。线程初始化,执行逻辑如下

当系统中软中断或微线程处理频繁时,内核线程ksoftirqd/n发挥作用,避免阻碍用户程序执行。这些线程在处理器上以最低优先级运行,确保不干扰重要任务,协助处理快速增长的软中断和微线程。每个处理器都有一个对应的ksoftirqd线程,如在双核系统中的ksoftirqd/0和ksoftirqd/1。
最低0.47元/天 解锁文章
256

被折叠的 条评论
为什么被折叠?



