Linux中有关后半部分处理机制的思维导图,包括把中断分为两部分来处理等
树图思维导图提供 后半部分处理机制思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 后半部分处理机制思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:70d93c7faae016afc90714a2309dd64d
后半部分处理机制思维导图思维导图模板大纲
都是在中断请求关闭的条件下执行的,以避免嵌套而使中断控制复杂化
中断是一个随机事件,它随时会到来,如果关中断的时间太长,CPU 就不能及时响应其他的中断请求,从而造成中断的丢失
内核的目标就是尽可能快地处理完中断请求,尽其所能把更多的处理向后推迟
个数据块已经达到了网线,当中断控制器接受到这个中断请求信号时
Linux 内核只是简单地标志数据到来了
让处理器恢复到它以前运行的状态
其余的处理稍后再进行
把数据移入一个缓冲区,接受数据的进程就可以在缓冲区找到数据
内核把中断处理分为两部分
前半部分(top half)
内核立即执行
后半部分(bottom half)
留着稍后处理
有限个函数
允许一个普通的内核函数
不仅仅是服务于中断的一个函数,能以后半部分的身份来运行
允许几个内核函数合在一起作为一个后半部分来运行
bh 机制
把所有的后半部分都组织起来,其大小为 32,数组中的每一项就是一个后半部分,即一个 bh 函数
设置了两个 32 位无符号整数 bh_active 和 bh_mask,每个无符号整数中的一位对应着 bh_base[]中的一个元素
软中断机制
与 bh 函数严格地串行执行相比,软中断却在任何时候都不需要串行化
同一个软中断的两个实例完全有可能在两个 CPU 上同时运行
Tasklet 机制
建立在软中断之上
同一个 tasklet 只能运行在一个 CPU 上
不同的 tasklet 可以同时运行在不同的 CPU上
tasklet 就不需要是可重入的
编写 tasklet 比编写一个软中断要容易