2.1 启动、中断、异常和系统调用

一. 启动

DISK:存放 OS

BIOS:基本I/O处理系统

Bootloader:加载 OS

image-20200416092711782

二. 中断、异常和系统调用

  • 定义:

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

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

    • 中断:异步
    • 异常:同步
    • 系统调用:异步或同步
  • 响应:

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

2.2 中断、异常和系统调用

一. 中断处理机制

  • 硬件:设置中断标记(CPU初始化)

    1. 将内部、外部事件设置中断标记
    2. 中断事件的ID
  • 软件:

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

二 . 异常处理机制

  • 异常:异常编号

    • 保存现场

    • 异常处理

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

三. 系统调用

  • 应用程序调用printf()时,会触发系统调用write()

  • 操作系统提供很多 API 来进行系统调用

  • 跨越操作系统边界需要支付额外的开销:

    • 建立中断/异常/系统调用号与对应服务例程映射关系的初始化开销
    • 建立内核堆栈
    • 验证参数
    • 内核态映射到用户态的地址空间
    • 内核态独立地址空间