gpt4 book ai didi

通过 vsyscall 页面的 Linux 系统调用策略

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:00 26 4
gpt4 key购买 nike

我正在阅读 Linux 上的 VM 处理。显然要执行系统调用,在 x86 上有一个位于 0xFFFFF000 的页面。称为 vsyscall 页面。过去,调用系统调用的策略是使用 int 0x80。这个 vsyscall 页面策略是否仍在后台使用 int 0x80,或者它是否使用了不同的调用策略(例如系统调用操作码?)。附带问题:int 0x80 方法是否过时?

最佳答案

如果您在现代 Linux 二进制文件上运行 ldd,您会看到它链接到名为 linux-vdso.1(在 amd64 上)或 linux-gate.so.1(在 x86 上),位于该 vsyscall 页面中。这是内核提供的共享库,映射到每个进程的地址空间,其中包含封装了如何执行系统调用的细节的 C 函数。

这种封装的原因是执行系统调用的“首选”方式可能因机器而异。中断 0x80 方法应该始终适用于 x86,但最近的处理器支持效率更高的 sysenter (Intel) 或 syscall (AMD) 指令。您希望您的程序在可用时使用它们,但您还希望相同的编译二进制文件在 Intel 和 AMD(以及其他)处理器上运行,因此它不应包含特定于供应商的操作码。 linux-vdso/linux-gate 库将这些特定于处理器的决策隐藏在一致的接口(interface)之后。

有关详细信息,请参阅 this article .

关于通过 vsyscall 页面的 Linux 系统调用策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23785833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com