2018年3月6日操作系统课程关于系统调用和函数调用的讨论
匿名2023/07/31 19:50:41提问
    lecture3student
235

汇编指令的区别:

系统调用:使用INT和IRET指令

函数调用:使用CALL和RET指令

安全性的区别:
系统调用有堆栈和特权级的转换过程,函数调用没有这样的过程,系统调用相对更为安全

性能的区别:

时间角度:

系统调用比函数调用要做更多和特权级切换的工作,所以需要更多的时间开销。系统调用需要的额外开销有:引导机制,建立内核栈,验证参数,更新页面映射权限,设置内核态独立地址空间(如TLB等)等

空间角度:

在一些情况下,如果函数调用采用静态编译,往往需要大量的空间开销,此时系统调用更具有优势

系统调用和函数调用之间的界限并不是泾渭分明的:

在Dos系统中可以直接使用Call指令来调用外部中断

在X86中也可以直接通过系统调用来控制一个门,但是手册上并不建议这样做

回答(1
    推荐问答
      Simple Empty
      暂无数据