(前序:我这里先做个小的总结,可能有些地方没有理解到位,愿与大家共同交流学习)
正文:
农夫为了提高效率降低成本,所以他们采用了机械化种植;富士康为了提高效率,所以大量采购机器人用来生产;同样,linux内核的设计者们为了提高系统的工作效率,以应对复杂的中断系统,他们也采用了上下半部策略。
简单的说,上下半部就是用来解决在提高程序运行的速度同时完成更多任务的矛盾。那么如何解这一矛盾呢?我们就想在这一矛盾中寻求平衡。那么怎样才能达到平衡呢?就像我们平时在处理一些棘手的问题需要考虑轻重缓急。那么这里的上半部就是用来解决那些急需解决的问题,也就是说它的优先级比下半部要高。中断处理程序就是上半部,当接收到一个中断请求的时候,它就会立即执行。
下半部的任务就是去执行一些与中断处理密切相关但中断处理程序本身不执行的工作。
这里有一点理解它很关键-----将工作推迟以及什么时候执行。为了提高速度,我们希望中断程序完成的工作越少越好。因为在它工作的时候当前的中断线在所有处理器上都会被屏蔽。更糟糕的是当一个处理程序是SA_INTERRUPT类型,它工作的时候会禁止所有本地中断。这里我们需要明白一点儿是,缩短中断被屏蔽的时间对系统的响应能力和性能都非常重要。最有效的解决办法就是把一些工作放到稍后去执行,而这就是下半部要做的了。