- 启动
- 体系机构
- 内存和硬盘布局
- 开机顺序
- DISK
- BIOS(基本I/O处理系统)
- CS:IP = 0xf000:fff0(CS:段寄存器;IP:指令寄存器)
- POST加电自检
- 寻找显卡和执行BIOS
- 加载Bootloader-》OS 加载到内存
- CS:IP = 0xf000:fff0(CS:段寄存器;IP:指令寄存器)
- Bootloader
中断、异常和系统调用
背景
System Call Interface 负责用户态到内核态的转换
中断、异常和系统调用相比较
- 系统调用-
- 应用程序向操作系统发出的服务请求
- 异步或同步
- 等待和持续执行指令
- 异常-来源于不良程序
- 非法指令或其他坏的处理状态
- 同步事件
- 杀死或者重新执行指令
- 中断-来源于外设
- 来自不同的硬件设备的计时器和网络的中断
- 异步事件
- 持续,对用户应用程序透明,后台执行
程序不可访问外设,内核是被信任的第三方且有特权指令,方便应用程序通用可移植
- 系统调用-
- 中断和异常处理机制
- 中断
- 硬件
- 设置中断标记【CPU初始化】
- 中断标记
- 中断事件ID
- 设置中断标记【CPU初始化】
- 软件
- 保存程序处理状态
- 根据中断ID中断程序处理
- 清除中断标记
- 恢复之前保存的处理状态
- 硬件
- 异常:异常编号
- 保存现场
- 异常处理
- 杀死异常程序
- 重新执行异常指令
- 恢复现场
- 中断
- 系统调用的概念
- 例子:程序print,触发系统write(app print->Libry Code->System Interface->Kernel->Devices)
- 接口
- Win32 API
- POSIX API
- java API 用于JAVA虚拟机(JVM)[Win32,POSIX]
- 系统调用的实现
- 应用程序调用系统调用接口
- 触发用户态到内核态的转变
- 控制权由应用程序交到操作系统
- 操作系统对程序发出系统调用参数(ID标识)
- 操作系统对系统调用进行识别完成具体操作
- 程序调用与系统调用的不同之处
- 开销