中断、异常、系统调用

系统调用

应用程序主动向操作系统发出的服务请求
操作系统服务的编程接口
通常由高级语言编写(C或C++)
程序访问通常是通过高层次的API接口而不是直接进行系统调用。

系统调用的实现

每个系统调用都对应一个系统调用编号来维护表的索引
系统调用接口调用内核态中的系统调用功能实现,并返回系统调用的状态和结果
用户不需要知道系统调用的实现,需要设置调用的参数和获取返回结果
操作系统接口的细节大部分都隐藏在应用编程接口后

  • 通过运行程序支持的库来管理

系统调用的开销

系统调用的开销是大于函数调用的

  • 引导机制
  • 建立内核堆栈
  • 验证参数
  • 内核态映射到用户态的地址空间
    • 更新页面映射权限
  • 内核态独立地址空间
    • TLB

异常

非法指令或者其他原因导致当前指令执行失败(如:内存出错)后的处理请求

中断

来自硬件设备的处理请求

中断、异常和系统调用比较

源头

  • 中断:外设
  • 异常:应用程序意想不到的行为
  • 系统调用:应用程序请求操作提供服务

响应方式

  • 异步
  • 同步
  • 异步或同步

处理机制

  • 中断:持续,对用户应用程序是透明的
  • 异常:杀死或者重新执行意想不到的一个用程序指令
  • 系统调用:等待和持续

猜你喜欢

转载自blog.csdn.net/qq_38590948/article/details/81211318