Sun*_*lly 5 linux stack linux-kernel interrupt-handling top-halves
在多任务系统中,当任何硬件产生对特定CPU的中断时,CPU可以执行以下任一情况,除非它已经在服务ISR:
想了解上述两种情况下中断处理程序使用哪个堆栈,为什么?
所有中断都由内核处理.这是通过为该特定中断编写的中断处理程序完成的.对于中断处理程序,有IRQ堆栈.中断处理程序堆栈的设置是配置选项.对于内核工作和IRQ处理例程所需的空间,内核堆栈的大小可能并不总是足够的.因此,2堆栈进入图片.
与每个进程分配的常规内核堆栈相比,每个CPU分配两个额外的堆栈.每当发生硬件中断(或处理softIRQ)时,内核都需要切换到适当的堆栈.从历史上看,中断处理程序没有收到自己的堆栈.相反,中断处理程序将共享正在运行的进程的堆栈,它们被中断.内核堆栈大小为两页; 通常,在32位体系结构上为8KB,在64位体系结构上为16KB.因为在这个设置中,中断处理程序共享堆栈,所以它们必须非常节俭地分配它们分配的数据.当然,内核堆栈仅限于开始,因此所有内核代码都应该谨慎.
归档时间: |
|
查看次数: |
8816 次 |
最近记录: |