当前位置: 首页 > 面试题库 >

在Linux上的32位代码中,哪个更好的“ int 0x80”或“ syscall”更好?

须景胜
2023-03-14
问题内容

我研究了Linux内核,发现对于x86_64体系结构,中断int 0x80不适用于调用系统调用1。

对于i386体系结构(32位x86用户空间),更可取的是:syscall或者int 0x80为什么?

我使用Linux内核版本3.4。

脚注1:int 0x80在某些情况下确实可以在64位代码中工作,但是从不建议这样做。


问题答案:
  • syscall是在上进入内核模式的默认方法x86-64。该指令 在Intel处理器的 32位操作模式下不可用。
  • sysenter是最常用于以32位操作模式调用系统调用的指令。它类似于syscall,但是使用起来有点困难,但这是内核的关注点。
  • int 0x80 是调用系统调用的传统方式,应避免使用。

调用系统调用的首选方法是使用VDSO,VDSO是映射在每个进程地址空间中的一部分内存,可以更有效地使用系统调用(例如,在某些情况下完全不进入内核模式)。与传统int 0x80方式相比,VDSO还要处理更困难的事情syscallsysenter指令。

另外,请参阅此和本。



 类似资料:
  • 问题内容: 使用哪种更好或更方便: 要么 问题答案: 您是否完全需要类型属性?如果您使用的是HTML5,则不会。否则,是的。HTML 4.01和XHTML 1.0 根据需要指定属性,而HTML5具有可选属性,默认为。HTML5现在得到了广泛的实现,因此,如果您使用HTML5doctype,则是有效且不错的选择。 至于type属性中应该包含的内容,2006年注册的MIME类型旨在替代所有主要浏览器(

  • 我是一个初学者,我正在开发一个Android应用程序,它会在一定的延迟(以天为单位)后继续向用户发送短信。我希望用户一旦注册就应该收到短信,不管他是否登录。短信内容和手机号码是从database.So获取的,经过研究,我发现了两种方法。 > 预定执行人服务 报警管理器 问题是,当手机关闭或重新启动时,警报管理器将关闭。预定的礼宾服务也是如此吗?使用执行器服务时,我应该在线程池中使用多少个线程?

  • 当开发一个需要我唯一识别手机用户的应用程序时。我希望得到一些关于使用手机UDID还是IMEI的建议。使用这两种方法有什么优点/缺点吗。如有任何意见,将不胜感激

  • 本文向大家介绍C#中哪个更好的System.String或System.Text.StringBuilder类?,包括了C#中哪个更好的System.String或System.Text.StringBuilder类?的使用技巧和注意事项,需要的朋友参考一下 主要区别是StringBuilder是Mutable,而String是Immutable。 字符串是不可变的,不可变是指如果您创建字符串对象

  • 问题内容: 我正在研究/比较CXF和Spring-WS的Web服务吗?我需要同时充当WS的提供者和使用者。简而言之,有人告诉我Spring- WS更具可配置性,但是CXF易于启动和运行。这个问题是主观的,但将有助于指导我的研究。 您对这两个框架有什么经验? 您对这两个框架有任何陷阱吗? 您是否发现任何一个提供的有用功能可能是另一个没有提供的功能? 问题答案: 我认为最大的区别是Spring-WS

  • 问题内容: 我正在写一个简单的广播接收器。我已经在清单和代码中都注册了接收者。对我来说,这是一个简单的接收器,不需要做任何花哨的事情。 在这种情况下,是否有理由选择一种方法而不是另一种方法?在清单中注册接收者是否效率更高(执行速度更快)?还是两者基本相同? 我之所以这样问是因为我正在编写的应用程序必须非常高效,而且我无法找到有关这两种方法之间实际差异的良好信息。我正在尝试遵循最佳编码实践。 干杯