据我所知,陷阱是特殊事件发生时发生的事情。 在系统调用的情况下,程序执行陷阱指令并跳转到内核模式。然后,陷阱处理程序跳转到所需的处理程序(例如fork,exec,open)。
当fork,exec,open等的执行完成后,操作系统调用return-from-trap指令并使程序返回用户模式。
但究竟什么是陷阱处理程序? (另外,如果你可以,什么是陷阱表?)
答案 0 :(得分:3)
陷阱处理程序是触发陷阱时将运行的代码。在您的示例中,操作系统将安装一个处理程序(即告诉CPU发生陷阱时要运行的代码的内存地址),处理程序将执行系统调用。它是 NOT 跳转到内核模式的程序。程序在触发陷阱后立即中断。执行恢复与陷阱处理程序。
这样,三层(以受保护模式运行的程序,以特权模式运行的操作系统以及强制执行当前正在执行的代码的CPU /硬件不能脱离保护模式)可以在彼此之间切换控制。
另请注意:a)现代CPU具有系统调用的专用指令 - 这种机制比捕获更有效但在概念上同样有效,并且b)还有其他陷阱/中断也用于不同的目的 - 它们提供停止顺序程序执行的基本机制,并对某种事件做出“别的”。
答案 1 :(得分:0)
阅读本文, http://www.cse.iitd.ernet.in/~sbansal/os/lec/l8.html
x86处理器使用称为中断描述符表(IDT)的表来确定陷阱发生时如何传输控制。 x86允许最多256个不同的中断或异常入口点进入内核,每个入口点都有不同的中断向量。向量是介于0和256之间的数字。中断的向量由中断源决定:不同的设备,错误条件和对内核的应用程序请求会产生具有不同向量的中断。 CPU使用向量作为处理器IDT的索引,内核在内核选择的内核专用内存中设置,就像GDT一样。从该表中的相应条目处加载: