一.启动
- 计算机体系结构概述
- 计算机内存和硬盘布局
- 开机顺序
二.中断、异常和系统调用
- 背景
- 中断、异常和系统调用相比较
- 中断、异常处理机制
- 系统调用的概念
- 系统调用的实现
- 程序调用与系统调用的不同之处
- 开销
启动
CPU, I/O, 内存通过总线连接。
DISK(硬盘):存放OS
BIOS:基本I/O处理系统(按下电源,就检查各种外设,然后才能让他加载相应软件执行)
- 从一个内存地址开始执行: 例如CS:IP=0xf000:fff0(CS:段寄存器;IP:指令寄存器)
- POST(加电自检)寻找显卡和执行BIOS
- 然后将Bootloader从硬盘放到内存中去
Bootloader:加载OS,让OS从硬盘放到内存里去,然后让CPU可以执行操作系统
=> BIOS加载Bootloader,Bootloader加载OS
操作系统与设备(外设)和应用程序交互
中断、异常和系统调用
系统调用:(来源于应用程序)应用程序主动向操作系统发出服务请求。异步或同步
异常:被动 (来源于不良的应用程序)非法指令或其它花的处理状态(e.g.内存出错)。应用程序意想不到的行为:例如除0操作。或者恶意程序越过权限访问另外程序的地址空间。同步 一定知道什么时候产生异常
中断:(来源于外设:键盘/鼠标/网卡/声卡/显卡等)来自不同的硬件设备的计时器和网络的中断。异步不知道什么时候会产生中断
响应
-中断:持续,对用户应用程序是透明的(应用程序不会感知到中断的产生)
-异常:杀死或者重新执行意想不到的应用程序指令,对用户应用程序也是透明的(应用程序不会感知到中断的产生)
-系统调用:等待和持续
2.2操作系统的中断、异常和系统调用
中断/异常处理机制
中断是外设的事件,异常是CPU的事件;中断/异常迫使CPU访问一些被中断和异常服务访问的功能。
中断处理机制
硬件(外设):设置中断标记(CPU初始化)
-将内部/外部事件设置中断标记;
-中断事件的ID(程序访问的中断向量地址)
软件(操作系统):
-保存当前处理状态(被打断程序的执行现场)
-中断服务程序处理
-清除中断标记
-恢复之前保存的处理状态(被打断的程序继续执行)
异常处理机制
异常:异常编号
-保存产生异常现场
-异常处理:杀死产生异常的程序;重新执行异常指令
-恢复现场
系统调用
应用程序发出请求,操作系统完成后,应用程序返回成功/失败
**用户态:**应用程序在执行的过程中,CPU执行的特权级的状态(很低,不能访问特殊机器指令和IO)。
**内核态:**应用程序在执行的过程中,CPU执行的特权级的状态(高,操作系统可以执行CPU任何一条
跨越操作系统边界的开销
- 在执行时间上超过程序调用
- 开销:
- 建立中断/异常/系统调用号与对应服务例程映射关系的初始化开销;
- 建立内核堆栈(操作系统和应用程序的堆栈不一样);
- 验证参数(操作系统会检查数据);
- 内核态映射到用户态的地址空间,更新页面映射权限(内存拷贝开销);
- 内核态独立地址空间TLB。