您的位置:首页 > 其它

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

2018-02-22 15:06 239 查看
1、

系统调用(system call):应用程序主动向操作系统发出的服务请求

异常(exception):非法指令或者其他原因导致当前指令执行失败后的处理请求

中断(hardware interrupt):来自硬件设备的处理请求

2、

Win32 API

POSIX API

Java API

3、系统调用:

INT和IRET指令用于系统调用

内核态和用户态是使用不同的堆栈的,系统调用时需要进行堆栈切换和特权级的转换

函数调用:

CALL和RET用于常规调用

常规调用时没有堆栈切换

系统调用比函数调用的开销大

4、x86启动

CS=F000H, EIP=0000FFF0H

实际地址是:

Base+EIP=FFFF0000H+0000FFF0H=FFFFFFF0H

这是BIOS的EPROM所在地

实模式下寻址空间只有1M

BIOS做一些硬件初始化的工作,加载存储设备上的第一个扇区的512字节到内存的0x7c00

这个扇区的代码称为bootloader

5、

bootloader做的事情:

使能保护模式和段机制

从硬盘上读取kernel放到内存中的固定位置

跳转到OS的入口点执行,控制权转移到OS

6、中断:

外部中断:串口、硬盘、网卡、时钟……

软件产生的中断:

The INT n 指令,通常用于系统调用

异常:

程序错误

软件产生的异常

机器检查出的异常

7、中断服务例程(ISR)

8、系统调用可以理解为一种特殊的中断,它称之为trap 陷入 或者叫软中断
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: