gpt4 book ai didi

linux - 中断处理程序使用哪个堆栈 - Linux

转载 作者:IT王子 更新时间:2023-10-29 01:09:53 25 4
gpt4 key购买 nike

在多任务系统中,当任何硬件对特定 CPU 产生中断时,CPU 可以执行以下任一情况,除非它已经在服务 ISR:

  1. 用户态进程在 CPU 上执行
  2. 内核模式进程正在 CPU 上执行

想知道在以上两种情况下中断处理程序使用了哪个堆栈,为什么?

最佳答案

所有中断都由内核处理。这是由为特定中断编写的中断处理程序完成的。对于中断处理程序,有 IRQ 堆栈。中断处理程序堆栈的设置是配置选项。内核堆栈的大小可能并不总是足以满足内核工作所需的空间IRQ 处理例程。因此 2 stack 出现了。

  1. 硬件 IRQ 堆栈。
  2. 软件 IRQ 堆栈。

与按进程分配的常规内核堆栈相比,两个额外的堆栈是按 CPU 分配的。每当发生硬件中断(或处理软IRQ)时,内核需要切换到 适当的堆栈。从历史上看,中断处理程序没有收到自己的堆栈。相反,中断处理程序将共享正在运行的进程的堆栈,它们被中断了。内核堆栈有两页大小;通常,在 32 位架构上为 8KB,在 64 位架构上为 16KB。因为在此设置中,中断处理程序共享堆栈,所以它们必须非常节俭地分配在那里的数据。当然,内核堆栈是有限的,所以所有内核代码都应该谨慎。

关于linux - 中断处理程序使用哪个堆栈 - Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28759227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com