什么是陷阱处理程序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是陷阱处理程序?相关的知识,希望对你有一定的参考价值。

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

当fork,exec,open等的执行完成时,OS调用return-from-trap指令并使程序返回用户模式。

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

答案

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

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

另请注意:a)现代CPU具有系统调用的专用指令 - 这种机制比捕获更有效但在概念上同样有效,并且b)还有其他陷阱/中断用于不同目的 - 它们提供了基本的停止顺序程序执行的机制,并对某种事件做出“别的”反应。

另一答案

读这个,http://www.cse.iitd.ernet.in/~sbansal/os/lec/l8.html

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

以上是关于什么是陷阱处理程序?的主要内容,如果未能解决你的问题,请参考以下文章

snmp 陷阱特定陷阱代码

线程池的陷阱

什么是“跟踪/BPT 陷阱:5”? [关闭]

控制台上的陷阱退出

Powershell:陷阱继续打破整个循环

BLE + Core Data 导致冻结(信号量等待陷阱)