gpt4 book ai didi

linux - 异常处理程序的实际代码驻留在 Linux 中的什么位置?

转载 作者:太空宇宙 更新时间:2023-11-04 10:04:47 28 4
gpt4 key购买 nike

这是我的教科书,描述了处理器如何触发异常处理程序:

enter image description here

它说:

处理器然后通过间接过程触发异常通过异常表的条目 k 调用相应的处理程序。图 8.3 显示了处理器如何使用异常表来形成适当的异常处理程序的地址。异常编号是异常表的索引,其起始地址包含在称为异常表基寄存器的特殊 CPU 寄存器中。

所以我的问题是,异常处理程序的实际代码在哪里?在内核?异常表基址寄存器呢,它的内容是内核中的地址吗?

最佳答案

这有点超出我的理解范围,但我找到了这篇维基百科文章:Interrupt descriptor table .从那里引用:

[In real mode], in the 8086 processor, the interrupt table ... always resides at the same location in memory, ranging from 0x0000 to 0x03ff. On the 80286 and later, the size and locations of the IVT can be changed. ... The protected mode IDT may reside anywhere in physical memory.

不管异常表在什么地方,我都确定它是内核保留的内存,同样异常处理函数在内核源代码中定义;例如traps.c及相关。

与此确切问题相关但也超出此确切问题的更多信息的其他引用资料:

https://0xax.gitbooks.io/linux-insides/content/Interrupts/linux-interrupts-5.html
https://www.oreilly.com/library/view/understanding-the-linux/0596005652/ch04s05.html
http://en.tldp.org/LDP/khg/HyperNews/get/devices/exceptions.html

注意:我假设我们在这里讨论的是 x86 架构。正如维基百科文章提到的,其他芯片架构可能相似,尤其是在概念上,但也可能在细节上有所不同。

关于linux - 异常处理程序的实际代码驻留在 Linux 中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53292553/

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