建设网站是什么职位,wordpress 模板调用函数,旅游网站排行榜前20,用nas做网站服务器目录
一、为什么需要中断
二、什么是中断
1、中断的概念
2、中断的分类
3、中断的处理流程
三、中断处理程序要少用延时的原因 一、为什么需要中断
以网卡为例#xff0c;CPU 如果要从网卡获取数据#xff0c;不可能时时盯着网卡啥时候会有数据。当网卡收到数据时CPU 如果要从网卡获取数据不可能时时盯着网卡啥时候会有数据。当网卡收到数据时给CPU 发送一个中断请求信号请求占用CPU进行数据读取的操作。
如此CPU 就没必要傻傻的一直等着数据准备就绪在数据到来之前CPU可以着手处理其他事情。 二、什么是中断
1、中断的概念
中断是指CPU对系统发生某个时间做出的一种反应。是外部设备向处理器发起的请求事件中断发生后CPU 不会立即执行响应而是在当前指令执行完以后转入“ 中断处理流程 ”。此时 CPU 会跳转到中断处理程序去处理这个中断处理完毕后再回到原来位置的下一个位置 2、中断的分类
① 硬中断
硬中断由硬件产生每个设备或设备集都对应着一个中断向量号。比如下面的 GPIO1的 0~15 引脚产生的中断对应的中断号都是 66。在中断服务函数中我们需要自己辨别具体是哪个引脚产生了中断。 最典型的硬中断就是网卡收到消息就会向CPU发送中断请求通知CPU处理数据这里的中断请求就是 “ 硬中断 ”。硬中断可以直接打断 CPU类似于你打电话的时候电话线断了。
发生硬件中断时外设给CPU发送中断请求根据中断向量号查询中断向量表协调设备驱动处理外部设备的中断请求 ② 软中断
软件中断由CPU执行中断产生指令时产生是由程序预先实现好的并非随机的如系统调用。当程序执行到系统调用这一行时就会触发软中断。软中断不会直接打断 CPU类似于你在打电话有人敲门你打电话这一操作不会被立马中断。
发生系统调用时中断向量表查询系统调用表随后执行对应的系统调用程序发生异常时查询中断向量表跳转到异常处理程序 3、中断的处理流程
第一步保存当前进程的 CPU 运行环境。为了中断处理结束以后能够回来继续执行最初的工作CPU 会将当前进程的上下文压入内核栈或者中断栈中。
第二步
如果是软中断直接查询中断向量表转入中断处理程序如果是硬中断设备收到CPU返回的确认信号后取消发送的中断请求转入中断处理程序
第三步执行中断处理程序
第四步恢复CPU现场退出当前中断。后续可能是直接返回原进程也有可能是处理更高优先级的中断。 三、中断处理程序要少用延时的原因
中断处理的要求是即时处理尽快退出。如果在中断中使用延时函数或者使用IO阻塞函数会影响到系统的实时性。如果下次中断来临延时或者阻塞还没结束那么就永远在中断里死循环了。
因此对于中断处理程序的要求是
短小精悍不要处理过多任务不使用延时函数或者IO阻塞的函数 参考文章
操作系统中断机制_蜂蜜小熊的博客-CSDN博客