我目前正在阅读“理解Linux内核”。我正在研究中断和例外一章。
我发现在设置IDT时,我们可以使用Linux术语中的五种门描述符。
现在我意识到使用DPL 3的用户可以从用户模式访问。但是那些有DPL 0的呢?特别是中断门。
如果I/O APIC中断发生在用户模式下,则无法访问中断门。
所以我的问题是,在访问中断门之前,内核模式开关的用户模式是如何发生的?
发布于 2016-06-06 10:53:20
当硬件中断发生时,可以忽略当前正在执行的代码的特权级别;CPU只需切换到中断的特权级别,而无需检查它。
英特尔64和IA-32架构软件开发人员手册第3A卷:系统编程指南,第1部分在第6.12.1.1节中说:
异常和中断处理程序的保护 对异常和中断处理程序的特权级保护与通过调用门调用普通过程时使用的保护类似(参见5.8.4节,“通过调用门访问代码段”)。处理器不允许在特权较低的代码段(数字上大于CPL )中将执行传递到异常或中断处理程序。 试图违反此规则将导致通用保护异常(#GP)。异常处理程序和中断处理程序的保护机制在以下方面有所不同:
由于异常和中断通常不会在可预测的时间发生,这些特权规则有效地限制了异常和中断处理过程可以运行的特权级别。可以使用下列任何一种技术来避免特权级别的违反。
https://stackoverflow.com/questions/37645562
复制相似问题