Linux外部中断程序的前半部分和后半部分
扫描二维码
随时随地手机看文章
Linux把外部中断从概念上分为前半(top half,th)部分和后半(bottom half,bh)部分两部分。前者是响应中断之后被立即执行的部分;后者是可在稍后某个时候执行的部分。因此,在中断服务程序的设计时,要设计两个函数:一个用来实现前半部分;另一个用来实现后半部分。前半部分除了要完成分配给它的任务之外,还要决定其相关的后半部分是否需要在稍后的某个时候执行。
之所以将中断程序分为两部分,是因为在一个中断请求处理程序中,并非所有工作都是急需处理的,通常会有一部分工作可在稍晚一些时候来处理。
一般来说,外部设各与处理器之间的数据传输工作常常是比较紧急的,而对于这些数据的分析和处理工作,一般就不那么紧急了。为了防止处理器因处理不太急切的工作而耽搁了其他紧急工作的处理,Linux构建了这种将中断程序分为两部分的特殊中断机制,并允许用户根据工作的紧急程度把一个中断处理分为紧急的前半部分和不太紧急的后半部分。
由于放在后半部分的工作的紧急程度不那么“硬”,也由于后半部分的执行是由软件来启动的,所以后半部分的中断机制也叫做“软中断”。