【发布时间】:2011-02-17 22:46:30
【问题描述】:
我们使用“int”或新的“syscall/sysenter”指令从 ring3 过渡到 ring0。这是否意味着需要为内核修改的页表和其他内容由“int”指令自动完成,或者“int 0x80”的中断处理程序将执行所需的内容并跳转到相应的系统调用。
同样,当从系统调用返回时,我们需要再次进入用户空间。为此,我们需要知道用户空间中的指令地址才能继续用户应用程序。该地址存储在哪里。 'ret' 指令是否会自动将环从 ring3 更改为 ring0 或此环更改机制发生在哪里/如何发生?
然后,我了解到从 ring3 更改为 ring0 并不像从 ring0 更改为 ring3 那样昂贵。为什么会这样??
谢谢, 巴拉
【问题讨论】:
-
这篇文章:Sysenter Based System Call Mechanism in Linux 2.6 应该可以回答您的大部分问题。
标签: linux x86 system-calls