“调用门”和“软件中断”的区别?

Posted

技术标签:

【中文标题】“调用门”和“软件中断”的区别?【英文标题】:The difference between "call gate" and "Software interrupt? 【发布时间】:2021-12-29 21:41:53 【问题描述】:

这些是调用内核函数的安全、低权限的方法。

我不知道两者的区别。

【问题讨论】:

【参考方案1】:

您可以查看英特尔手册中的所有内容;但简而言之:

    Call Gate 不会禁用中断。 Call Gate 可以在特权开关的堆栈之间复制 N 个参数。 Call Gate 可以是 LDT 私有的 如果您的编译器恰好支持 intel medium,large 编译模型,Call Gate 可以伪装成一个普通函数指针。 给定 4,正常的“ret”指令撤消调用门入口。 几乎没有人使用过呼叫门。

而:

    中断门禁用中断。 中断门不关心参数。 IDT 是一种全球资源。 中断的调用序列在函数中非常独特。

【讨论】:

中断门可以保持中断启用 - 这取决于它们是在 IDT 中被声明为“中断”还是“陷阱”。 (我花了几天的时间寻找一个错误,直到我发现这个......) Solaris(SunOS)正在使用“Call Gates” - 至少在旧版本中是这样。根据***,它们也常用于 OS/2 和 Windows 95。

以上是关于“调用门”和“软件中断”的区别?的主要内容,如果未能解决你的问题,请参考以下文章

Linux的信号解释

软中断与软件中断

linux用户态与内核态

dsp响应时间是啥意思

软件中断VS系统调用

dsp5509的中断系统