【操作系统笔记】OS_启动_中断_异常_系统调用(02)
Page content
这一篇整理了操作系统的启动,终端,异常和系统调用
相关的内容。
1.启动
- DISK: 存放OS
- BIOS(Basic Input Output System): 存放基本I/O处理系统
- Bootloader: 加载OS
- POST(加电自检): 寻找显卡和执行BIOS
- BIOS寻找Bootloader从磁盘的引导扇区加载到内存中,让Bootloader加载OS
- 加载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初始化)
- 将内部,外部时间设置中断标记
- 中断时间的ID
4.2 软件
- 保存当前处理状态
- 中断服务程序处理
- 清楚中断标记
- 回复之前保存的处理状态
5.异常:异常编号
- 保存现场
- 异常处理
杀死产生了异常的程序
中断执行异常指令 - 恢复现象
6.系统调用
程序访问主要通过高层的API接口而不是直接进行系统调用
- Win32 API 用于 Windows
- POSIX API 用于POSXI-based systems(包括UNIX, Linux, Mac OS X的所有版本)
7.跨越操作系统边界的开销
在执行时间上的开销超过程序调用
开销
- 建立终端/异常/系统调用号与对应服务例程映射关系的初始化开销
- 建立内核堆栈
- 验证参数
- 内核态映射到用户态的地址空间,更新页面映射权限
- 内核态独立地址空间,TLB
欢迎大家的意见和交流
email: li_mingxie@163.com