learningOS开源操作系统社区
  • 首页
  • 训练营
  • 明星学员
  • 共建单位
  • 项目实习
  • 问答论坛
登录
    Copyright © 2024 opencamp.ai All rights reserved.
    2018年3月6日操作系统课程关于系统调用和函数调用的讨论
    匿名2023/07/31 19:50:41提问
      lecture3student
    390

    汇编指令的区别:

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

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

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

    性能的区别:

    时间角度:

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

    空间角度:

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

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

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

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

    回答(1)
    即可发布评论
      推荐问答
        Simple Empty
        暂无数据