首页 文章

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

提问于
浏览
2

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

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

可能拦截中断需要更多的内核工作? (因此使用 syscall 可获得性能提升)

1 回答

  • 2

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

    文档中的一些摘录:

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

相关问题