【操作系统笔记】OS_启动_中断_异常_系统调用(02)

Page content

这一篇整理了操作系统的启动,终端,异常和系统调用相关的内容。

1.启动

  • DISK: 存放OS
  • BIOS(Basic Input Output System): 存放基本I/O处理系统
  • Bootloader: 加载OS
  1. POST(加电自检): 寻找显卡和执行BIOS
  2. BIOS寻找Bootloader从磁盘的引导扇区加载到内存中,让Bootloader加载OS
  3. 加载OS后,控制权由Bootloader转到OS

2.操作系统与设备和程序交互

操作系统对外部设备是: I/O和中断
操作系统面向应用程序: 系统调用和异常

2.1 系统调用(来源于应用程序)

  • 应用程序主动想操作系统发出服务请求

2.2 异常(来源于不亮的应用程序)

  • 非法指令或者其他坏的处理状态(如: 内存出错)

2.3 终端(来源于外部设备)

  • 来自不同的硬件设备的计时器和网络的中断

2.4 为什么通过操作系统访问外部设备?

  • 在计算机运行中,内核是被新人的第三方
  • 只有内核可以执行特权指令
  • 为了方便应用程序

3.系统调用,中断,异常之间的区分

3.1 源头

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

3.2 处理时间

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

3.3 响应

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

4.中断

4.1 硬件

设置中断标记(CPU初始化)

  1. 将内部,外部时间设置中断标记
  2. 中断时间的ID

4.2 软件

  1. 保存当前处理状态
  2. 中断服务程序处理
  3. 清楚中断标记
  4. 回复之前保存的处理状态

5.异常:异常编号

  1. 保存现场
  2. 异常处理 杀死产生了异常的程序
    中断执行异常指令
  3. 恢复现象

6.系统调用

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

  • Win32 API 用于 Windows
  • POSIX API 用于POSXI-based systems(包括UNIX, Linux, Mac OS X的所有版本)

7.跨越操作系统边界的开销

在执行时间上的开销超过程序调用

开销

  • 建立终端/异常/系统调用号与对应服务例程映射关系的初始化开销
  • 建立内核堆栈
  • 验证参数
  • 内核态映射到用户态的地址空间,更新页面映射权限
  • 内核态独立地址空间,TLB

欢迎大家的意见和交流

email: li_mingxie@163.com