[关闭]
@WillireamAngel 2018-05-16T15:26:32.000000Z 字数 1707 阅读 1477

启动、中断、异常和系统调用

操作系统


BIOS

BIOS v.s. CMOS

现在,BIOS程序和配置都存储在无需加电的Flash芯片中。
https://www.jd.com/phb/zhishi/e0a71c76f0190775.html

计算

CPU初始化状态为16位实模式
CS:IP=0xf000:fff0
CS:代码段寄存器;IP:指令指针寄存器
PC=16*CS+IP(左移4位)
20位地址空间:1MB

功能

过程

系统启动过程

启动过程

启动规范

BIOS v.s. UEFI:
https://www.happyassassin.net/2014/01/25/uefi-boot-how-does-that-actually-work-then/
https://blog.woodelf.org/2014/05/28/uefi-boot-how-it-works.html

中断、异常和系统调用

OS_interrput

OS_iner

系统调用

主动服务请求
- API
Win32 API、POSIX API、Java API
- 实现
每个系统调用对应一个系统调用号。
系统调用接口调用内核态中的系统调用功能实现,并返回系统调用的状态和结果。
用户不需要知道系统调用的实现。
- 系统调用 vs 函数调用
系统调用:INT IRET指令,系统调用时,堆栈切换和特权级的转换
函数调用:CALL和RET常规调用,没有堆栈切换。

异常

非法指令或其他原因导致执行指令失败。
处理:编译器软件现场保存,服务例程中断服务处理,清除中断标记,现场恢复。

中断

硬件设备处理请求:依据内部或外部事件设置中断标志,依据中断向量调用相应中断服务例程。
中断嵌套
硬件中断/异常服务例程可被打断,异常服务例程可嵌套(缺页)。

开销

超过函数调用
开销:
引导机制、建立内核堆栈、验证参数、内核态映射到用户态的地址空间、内核态独立地址空间

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注