系统调用指令的目的是什么?

时间:2013-06-25 10:34:06

标签: assembly system-calls

或者换句话说:syscallint <kernel-interrupt-number>之间有什么区别?

我能想到的唯一明显的原因是中断号在操作系统中不同,并且拥有一个新的,唯一的指令可以提供更高的一致性。但是,系统调用数字和参数在操作系统中仍然存在差异,因此一致性的提高非常低。

可能拦截中断需要更多的内核工作? (因此使用syscall

可以获得性能提升

1 个答案:

答案 0 :(得分:2)

你走在正确的轨道上; syscall指令的动机主要是表现。您可以阅读有关此in AMD's "SYSCALL and SYSRET Instruction Specification"的更多信息。

文档中的一些摘录:

  

启动对操作系统,应用程序的调用   通过门描述符将控制权转移到操作系统(任务,   中断,陷阱或调用门)。控制传输通过使用完成   CALL指令或软件中断。设置这些控制门   (以及后来通过RET或IRET指令返回)是   与分段相关的开销减慢了速度。
  ....
  SYSCALL和SYSRET是用于低延迟的指令   具有平面的操作系统中的系统调用和返回   记忆模型,没有分割。这些说明有   通过减少检查和内存的数量进行了优化   通常发出的引用,以便进行调用或返回   小于内部时钟周期数的四分之一   与当前的CALL / RET指令方法相比。