启动流程
上电、BIOS初始化硬件
BIOS读取主引导记录(读哪个)
读取分区的引导扇区代码(去哪读)(可修改)
读取文件系统的加载程序(读)
读取启动菜单(可选的内核和加载参数)
加载内核并跳转到内核
中断、异常、系统调用
系统调用:应用程序主动向操作系统发出的服务请求。(异步或同步)
异常:非法指令或其他原因导致当前指令执行失败后的处理请求。(同步)
中断:来自硬件设备的处理请求。(异步)
- 同步,同一条流水线,按顺序来
- 异步,不同流水线,
中断处理机制
预设中断标记
中断或异常产生
查中断向量表(硬件)
处理
异常:异常服务例程;
中断:中断服务例程;
- 系统调用:->查系统调用表->系统调用实现
系统调用
硬件将代码分为用户段和内核段;用户态只用通过软中断使用内核态的代码
应用程序->函数库->系统调用接口->汇编产生软中断->中断处理->查中断向量表->查系统调用表->执行内核函数(用户态、内核态)
系统调用时,堆栈切换(内核与用户使用不同的堆栈),特权级需要进行转换
主流系统的API
- Win32 API:Windows
- POSIX API:UNIX、LINUX、Mac OS X
- Java API:用于JAVA虚拟机(JVM),是对实际系统调用的进一步抽象