中断的来源是外设
异常的来源是不良的程序软件的非法指令等等
系统调用的来源应用程序主动向操做系统发出的合法服务请求shell
中断是CPU的一个功能,就是CPU停下当前的工做,保留现场后自动地转去执行相应的处理程序,CPU控制权发生改变,处理完该中断紧急事件后再返回断点继续执行被刚才被打断的程序。安全
中断过程分为两部分
一、硬件:操作系统
依据内部或者外部事件设置中断标志,产生中断号,而后依据中断向量表调用相应的中断服务处理例程
二、软件:code
首先进行现场保存(由编译器完成),而后进行中断服务处理(中断服务例程完成),接着清除中断标记(中断服务例程),最后进行现场恢复(编译器)。
在cpu中,当程序执行到特定指令,这条指令触发了异常事件,好比说除0操做,cpu也会获得一个异常编号,操做系统会保留当前产生异常的现场
处理异常:
一、杀死产生异常的程序,例如:地址空间越界等非法行为
二、从新执行异常指令,例如:缺页指令接口
若是是第二种状况,操做系统会修补应用程序的代码问题,而后从新执行异常指令,使异常变正常。事件
处理过程:上层用户程序调用printf(),会触发系统调用write(),write中会带些参数,好比打印的内容、执行的外设。而后访问对应的外设,这里是屏幕,而后打印出这个内容。图片
注意:这其中会有一个系统调用接口。
经过系统调用,能够实现从用户态到内核态的转变。
用户态:不能执行访问IO指令,不能执行特权指令
内核态:至关于掌握了整个计算机。能够执行任何指令。编译器
用户程序和内核拥有各自的堆栈,执行系统调用,会切换堆栈,切换特权身份。这些都是有很大的系统开销的,但也是有回报的,安全性获得的保障
这些开销都是值得的,有了这些开销才能保障程序在一个安全可靠的环境下运行。it