一个封锁操作被对 wsacancelblockingcall 的调用中断_对中断的理解

为什么要引入中断?

为了实现并发活动,为了实现计算机系统的自动化工作,系统必须具备处理中断的能力。

为了解决计算机CPU处理速度快,外设速度慢的矛盾。可使计算机与多台外设同时工作,以提高计算机系统的整体工作效率。

所谓中断,是指CPU在正常运行程序时,由于内部/外部事件或由程序预先安排的事件,引起CPU中断正在运行的程序,而转到为内部/外部事件或为预先安排的事件服务的程序中去,服务完毕,再返回去执行波暂时中断的程序。

中断的处理过程

硬件完成

拷贝CPSR到SPSR_<mode>

设置正确的CPSR位(切换到ARM状态、切换到异常模式、禁止中断)

保存返回地址在LR_<mode>

设置PC到异常向量地址

中断服务程序完成

中断服务程序可能保存需要使用的寄存器(堆栈中)

用户服务程序可以打开中断,以接受中断嵌套

恢复保存的寄存器(中断现场数据不能被自动保留在堆栈中,用户必须选择通用寄存器来保护)

通过调用Reti(或其它相应指令)指令将PSR和PC出栈,从而恢复原来的执行流程。

可屏蔽中断处理的一般过程为:

1. 外设径8259A提出中断请求,如果IF=1且无DMA请求,LOCK无效,则8259A的中断请求信号INTR才能送到CPU。

2. CPU发INTA信号响应,在第二个INTA周期中,外部中断控制器送中断类型号。

3. OLDFLAG→STACK

4. OLDCS→STACK

5. 获取CS并赋值

6. LDTP→STACK

7. 给IP赋值

8. 执行CS、IP处的外设中断服务程序

9. 中断返回,执行IRET中断返回指令

·OLDTP退线

·OLDCS退线

·OLDFLAG退线

10. 继续执行当前程序中的下条指令

其中2~7步为中断响应及处理过程。

中断嵌套

指当CPU正在处理某个中断源即正在执行中断服务程序时,会出现优先级更高的中断源申请中断,为了使更急的中断源及时得到服务,需要暂时中断(挂起)当前正在执行的级别较低的中断服务程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值