操作系统的中断异常和系统调用

Posted deusjin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统的中断异常和系统调用相关的知识,希望对你有一定的参考价值。

操作系统的中断、异常和系统调用


中断

  • 硬件
    • 设置中断标记【CPU初始化】
      • 将内部、外部事件设置中断标记
      • 中断事件的ID
  • 软件
    • 保存当前处理状态
    • 中断服务程序处理
    • 清除中断标记
    • 恢复之前保存的处理状态

异常

异常编号

  • 保存现场
  • 异常处理
    • 杀死产生异常程序
    • 重新执行异常指令
  • 恢复现场

系统调用

应用程序调用printf(),会触发write()。

程序访问主要是通过高层次的api接口而不是直接进行系统调用。

  • win32 api 用于 Windows
  • POSIX api 用于 Unix,Linux,MacOSX
  • Java api 用于java虚拟机(JVM)
    • 其实也实现调用java api随后调用对应操作系统的api

操作系统如何完成系统调用(用户态到<--->内核态)

  • 通常情况,与每个系统调用相关的序号
    • 系统调用接口根据序号维护表的索引
  • 系统调用接口调用内核态中预期的系统调用
    • 并返回系统调用的状态和其他任何返回值
  • 用户不需要知道系统调用是如何实现的
    • 只需要获取API和了解操作系统讲什么作为返回结果
    • 操作系统接口细节大部分都隐藏在API中
  • 系统调用中,操作系统和应用程序的堆栈是不同的。

跨越操作系统便边界的代价

  • 在执行时间上的开销超过程序调用
    • 对应中断号,堆栈切换保存与恢复
  • 开销:
    • 建立 中断/异常/系统调用 号与对应服务例程映射关系的初始化开销
    • 建立内核堆栈
    • 验证参数
    • 内核态映射到用户态的地址空间
      • 更新页面映射
    • 内核独立地址空间
      • TLB



以上是关于操作系统的中断异常和系统调用的主要内容,如果未能解决你的问题,请参考以下文章

操作系统一3中断和异常,系统调用

操作系统一3中断和异常,系统调用

操作系统一3中断和异常,系统调用

Linux中断 异常 系统调用 中断上半部 中断下半部 这些有啥区别和联系

中断异常和系统调用

中断异常和系统调用