中断隐指令就是修改PC的值到中断服务程序
在每条指令执行完后,在指令周期末尾检查是否有中断信号需要处理。有就执行中断服务程序(即中断响应)
CPU执行程序中JMP和Call指令依然属于该程序的进程,而中断与原程序不属于同一个进程。
原子操作即可以一次性执行完某些连续的指令,关中断意外着有外部中断也会继续执行刚刚的指令,所以可以辅助CPU执行某些需要连续执行的指令
注意非屏蔽中断
每个触发器可以记录一个二进制的0和1
通过中断请求标记器收到各个设备的中断请求的信号
软件实现通过按照优先级次序一个一个检查
软件比硬件慢
掉电属于硬件故障
系统调用属于软件中断
高速设备优于低速设备可以理解为快点响应其中断请求其由于是高速,做的事情更多(类似老板先把效率高的员工的事情处理,以便其做更多的事情)
输入优于输出是因为输入的设备会将接口的数据缓冲寄存器的内容更新,如果不快点响应其中断(不能及时取走数据,那么当输入设备再次输入时会导致数据缓冲寄存器再次被更新),这将导致输入信息流失。而输出设备的响应可以慢点是由于他是等你CPU将数据放到数据缓冲器再工作,所以如果晚点放他就晚点工作,不会造成数据流失或者其他故障
实时设备:响应要及时迅速
此时保存断点到堆栈一般是到内核堆栈中
排队器的输出是对各个中断信号择优后的一个信号,此时对应一个中断源信号,此时通过中断向量地址形成部件生成中断向量地址,中断向量地址存储的指令可以跳转到中断处理程序的入口地址(中断向量就是中断处理程序的地址)
为何要使用中断向量地址的形式,如果中断向量地址形成部件直接生成中断处理程序的地址,那么当中断处理程序的地址改变,那么此时需要修改中断形成部件的电路结构以生成对应的修改后的中断处理程序地址,这样很麻烦。
而如果采用使用中断向量地址的形式,那么如果中断处理程序的地址改变,此时只需改变中断向量地址的JMP指令的操作数即可
关中断和程序断点进栈哪个先在前面都行
关中断使得中断服务程序一气呵成,不会被其他中断打断,直到中断服务程序结束时再开中断