假设内核始终在Ring 0权限级别执行。对于堆栈故障异常(由于堆栈溢出或限制违规),哪个门应该用于从陷阱门,中断门和任务门设置x86 IDT(中断描述符表)?
X86处理器在调用堆栈错误异常处理程序之前需要堆栈来推送eflags,CS,eip on stack。这意味着需要Stack开关来调用异常处理程序。
使用任务门是执行堆叠交换的唯一方法吗?
使用Task Gate是为内核堆栈错误编写堆栈错误处理程序的唯一方法吗?
英特尔手册写道 - “新的tss允许处理程序在处理异常或中断时使用新的特权级别0堆栈。如果在当前特权级别0堆栈损坏时发生异常或中断,则通过任务门访问处理程序可以防止系统崩溃通过为处理程序提供新的特权级别0堆栈“。
提前感谢您的回复。
答案 0 :(得分:1)
据我所知,是的。想象一下它是如何工作的:
如果您有TSS,则完成以下操作: