假设内核始终以 Ring 0 特权级别执行。对于堆栈错误异常(由于堆栈溢出或违反限制),应该使用哪个门来设置陷阱门、中断门和任务门之外的 x86 IDT(中断描述符表)?
X86 处理器在调用堆栈错误异常处理程序之前需要堆栈来将 eflags、CS、eip 压入堆栈。这意味着需要堆栈开关来调用异常处理程序。
使用任务门是执行堆栈切换的唯一方法吗?
使用任务门是为内核堆栈故障编写堆栈故障处理程序的唯一方法吗?
英特尔手册写道 :“新的 tss 允许处理程序在处理异常或中断时使用新的特权级 0 堆栈。如果在当前特权级 0 堆栈损坏时发生异常或中断,则通过任务门访问处理程序可以通过为处理程序提供新的特权级别 0 堆栈来防止系统崩溃”。
提前感谢您的回复。