究竟什么是陷阱处理程序?

Van*_*Van 1 operating-system system-calls

据我所知,陷阱是发生特殊事件时发生的事情。在系统调用的情况下,程序执行陷阱指令并跳转到内核模式。然后,陷阱处理程序跳转到所需的处理程序(例如 fork、exec、open)。

当fork、exec、open等执行完成后,OS调用return-from-trap指令,使程序回到用户态。

但究竟什么是陷阱处理程序?(另外,如果可以的话,什么是陷阱表?)

Thi*_*ilo 10

陷阱处理程序是触发陷阱时将运行的代码。在您的示例中,操作系统将安装一个处理程序(即告诉 CPU 发生陷阱时要运行的代码的内存地址),并且处理程序将执行系统调用。它不是跳转到内核模式的程序。程序在触发陷阱后立即中断。使用陷阱处理程序恢复执行。

这样,三层(在保护模式下运行的程序、在特权模式下运行的操作系统和强制当前执行的代码不能脱离保护模式的 CPU/硬件)可以在彼此之间切换控制。

另请注意,a) 现代 CPU 具有用于系统调用的专用指令——一种比陷阱更有效但在概念上工作相同的机制,并且 b) 还有其他用于不同目的的陷阱/中断——它们提供了基本的用于停止顺序程序执行并执行“其他操作”以响应某种事件的机制。