一、操作系统的启动:
OS存放于磁盘(Disk);
BIOS(基本IO处理系统): 开机后从特定内存地址开始执行,检查外设,然后加载Bootloader;
Bootloader:放在硬盘第一个主引导扇区、将OS从硬盘加载到内存、跳转到OS起始地址;
OS于设备、应用的交互:
系统调用:应用主动向OS发出服务请求;
异常:应用的非法指令/坏的处理状态;
中断:来自外设,通知OS需要中断处理。
中断、异常、系统调用 区别:
1、来源不同:中断来自外设;异常来自应用程序的异常行为;系统调用来自应用程序请求系统提供服务;
2、处理时间不同:中断是异步事件、异常同步、系统调用返回可以是异步,请求是同步的。
3、响应:中断:持续,对应用透明;异常:杀死/重新执行指令;系统调用:等待系统调用完成后继续执行。
中断/异常、系统调用机制:
中断:
硬件上:1、将事件设置中断标记;2、key记录中断事件ID,(value有中断事件地址,给OS查询中断表);
软件上:1、保存当前处理状态;2、执行中断程序;3、清除中断标记;4、恢复之前的保存状态;
异常:
1、保存现场;2、异常处理(杀死进程/重新执行);3、恢复异常。
系统调用:
应用通过高层API(System Call Interface)使用,完成从用户态到内核态的切换。
跨越操作系统边界的开销:
1、建立中断/异常/系统调用号与对应服务号的开销;
2、内核堆栈的建立;
3、验证系统调用参数;
4、内核态数据拷贝到用户态;
5、内存状态改变(Cache/TLB 刷新的开销)。