中断、异常和系统调用

第2章:中断、异常和系统调用

标签(空格分隔): 操作系统


2.1 操作系统的启动

启动

  • DISK:存放OS
  • BIOS:基本I/O处理系统
    • 将BootLoader从磁盘的引导扇区(512字节)加载到0x7cDD,跳转到CS:IP = 0000:7cDD
  • BootLoader:加载OS
    • 将操作系统的代码和数据从硬盘加载到内存中,跳转到OS的起始地址
  • CS:IP = 0xf000:fff0 (CS:段寄存器, IP:指令寄存器)
  • POST(加电自检):寻找显卡和执行BIOS

OS与设备和程序交互

  • Interface 系统调用、异常、中断
  • defs

    • 系统调用(来源于应用程序)
      • 应用程序主动向操作系统发出服务请求
    • 异常(来源于应用程序)
      • 非法指令或其他坏的处理状态(如内存出错)
    • 中断(来源于外设)
      • 来自不同的硬件设备的计时器和网络的中断
  • 区别和特点

类型 源头 处理时间 响应
中断 外设 异步 持续,对用户应用程序是透明的
异常 应用程序意想不到的行为 同步 杀死或重新执行意想不到的应用程序指令
系统调用 应用程序请求提供服务 同步或异步 等待和持续

2.2 OS的中断、异常和系统调用

(一)中断

硬件

  • 设置中断标记(CPU初始化)
    • 将内部、外部事件设置中断标记
    • 中断事件的ID

软件(OS)

  • 保存当前处理状态
  • 中断服务程序处理
  • 清除中断标记
  • 恢复之前保存的状态

(二)异常:异常编号

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

(三)系统调用

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

跨越操作系统边界的开销

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

猜你喜欢

转载自blog.csdn.net/weixin_42061048/article/details/80201419