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