0%

1.0:启动、中断、异常、系统调用

启动流程

  • 上电、BIOS初始化硬件

  • BIOS读取主引导记录(读哪个)

  • 读取分区的引导扇区代码(去哪读)(可修改)

  • 读取文件系统的加载程序(读)

  • 读取启动菜单(可选的内核和加载参数)

  • 加载内核并跳转到内核

中断、异常、系统调用

IMG_256

  • 系统调用:应用程序主动向操作系统发出的服务请求。(异步或同步)

  • 异常:非法指令或其他原因导致当前指令执行失败后的处理请求。(同步)

  • 中断:来自硬件设备的处理请求。(异步)

    • 同步,同一条流水线,按顺序来
    • 异步,不同流水线,
  • 中断处理机制

    • 预设中断标记

    • 中断或异常产生

    • 查中断向量表(硬件)

    • 处理

      • 异常:异常服务例程;

      • 中断:中断服务例程;

      • 系统调用:->查系统调用表->系统调用实现
  • 系统调用

    • 硬件将代码分为用户段和内核段;用户态只用通过软中断使用内核态的代码

    • 应用程序->函数库->系统调用接口->汇编产生软中断->中断处理->查中断向量表->查系统调用表->执行内核函数(用户态、内核态)

    • 系统调用时,堆栈切换(内核与用户使用不同的堆栈),特权级需要进行转换

  • 主流系统的API

    • Win32 API:Windows
    • POSIX API:UNIX、LINUX、Mac OS X
    • Java API:用于JAVA虚拟机(JVM),是对实际系统调用的进一步抽象