@yanglt7
2018-06-25T14:38:46.000000Z
字数 710
阅读 717
第2章:中断、异常和系统调用
操作系统
2.1 操作系统的启动
2.1.1 启动
- DISK:存放OS
- BIOS:基本I/O处理系统
- 将BootLoader从磁盘的引导扇区(512字节)加载到0x7cDD,跳转到CS:IP = 0000:7cDD
- BootLoader:加载OS
- 将操作系统的代码和数据从硬盘加载到内存中,跳转到OS的起始地址
- CS:IP = 0xf000:fff0 (CS:段寄存器, IP:指令寄存器)
- POST(加电自检):寻找显卡和执行BIOS
2.1.2 OS与设备和程序交互
- Interface 系统调用、异常、中断
defs
- 系统调用(来源于应用程序)
- 异常(来源于应用程序)
- 中断(来源于外设)
区别和特点
类型 |
源头 |
处理时间 |
响应 |
中断 |
外设 |
异步 |
持续,对用户应用程序是透明的 |
异常 |
应用程序意想不到的行为 |
同步 |
杀死或重新执行意想不到的应用程序指令 |
系统调用 |
应用程序请求提供服务 |
同步或异步 |
等待和持续 |
2.2 OS的中断、异常和系统调用
(一)中断
硬件
软件(OS)
- 保存当前处理状态
- 中断服务程序处理
- 清除中断标记
- 恢复之前保存的状态
(二)异常:异常编号
(三)系统调用
- 程序访问主要是通过高层次的API接口而不是直接进行系统调用
跨越操作系统边界的开销
- 在执行时间上的开销超过程序调用
- 开销:
- 建立中断/异常/系统调用号与对应服务例程映射关系的初始化开销
- 建立内核堆栈
- 验证参数
- 内核态映射到用户态的地址空间,更新页面映射权限
- 内核态独立地址空间,TLB