Operating system 陷阱处理程序到底是什么?

Operating system 陷阱处理程序到底是什么?,operating-system,system-calls,Operating System,System Calls,据我所知,陷阱是当特殊事件发生时发生的事情。 在系统调用的情况下,程序执行陷阱指令并跳转到内核模式。然后,陷阱处理程序跳转到所需的处理程序(例如fork、exec、open) 当fork、exec、open等的执行完成时,操作系统调用从trap指令返回,并使程序返回到用户模式 但陷阱处理程序究竟是什么?(另外,如果可以,什么是陷阱表?陷阱处理程序是触发陷阱时将运行的代码。在您的示例中,操作系统将安装一个处理程序(即,在陷阱发生时告诉CPU要运行的代码的内存地址),并且处理程序将执行系统调用。跳转

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

当fork、exec、open等的执行完成时,操作系统调用从trap指令返回,并使程序返回到用户模式


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

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

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

还要注意的是,a)现代CPU有专门的系统调用指令——这是一种比捕获更有效的机制,但在概念上工作原理相同;b)还有其他用于不同目的的陷阱/中断——它们提供了停止顺序程序执行并做“其他事情”的基本机制作为对某种事件的反应。

阅读此文,

x86处理器使用一个称为中断描述符表(IDT)的表来确定发生陷阱时如何传输控制。x86允许多达256个不同的中断或异常入口点进入内核,每个入口点具有不同的中断向量。向量是介于0和256之间的数字。中断向量由中断源决定:不同的设备、错误条件和对内核的应用程序请求生成具有不同向量的中断。CPU使用向量作为处理器IDT的索引,内核将IDT设置在内核选择的内核私有内存中,与GDT非常相似。处理器从该表中的相应条目加载:


读这篇文章:可能是重复的谢谢!这回答了我的问题!另一个问题:你知道什么是陷阱表吗?陷阱表中的索引是什么?这是一个调度表,操作系统用来告诉CPU当陷阱被触发时应该跳转到哪里。它包含每种陷阱类型的处理程序代码的内存地址。那里的代码将是操作系统的一部分,以特权模式运行,它将(在您的情况下)执行系统调用。