中断机制

为什么需要中断?

I/O设备(输入输出)是如何向用户发送信号呢?比如我按下了鼠标的左键,软件是如何感知呢?一种方法是cpu对所管理的硬件I/O设备进行轮询,不停的对硬件扫描。这样输入设备一旦按下左键,那么cpu就可以将鼠标左键按下事件传递给对应的应用程序。但是这会产生若干问题,首先如果cpu连接多个设备比如说n个鼠标,当第n个鼠标产生左键按下事件,而此时cpu正在扫描第一个鼠标,那么鼠标事件就不能及时传达,影响交互的友好性。另外最重要的是,cpu将耗费大量宝贵的时间,cpu的利用率及其低下。为了解决上述遇到的问题,windows操作系统采用了中断机制。

当没有中断到来时,cpu正常执行其他进程。当有中断到来时,cpu暂停其他操作转而响应中断,中断处理完毕后,cpu恢复执行其他进程。

中断的流程是什么?

流程是:产生中断——响应中断——关闭中断——保护中断——识别中断源——现场保护——中断服务——现场恢复。

产生中断是中断信号的到来。

响应中断是指cpu接收中断信号,并反馈一个信号给中断源。

关闭中断是指将中断关闭,不再响应其他中断。

保护中断是指将中断信息进行保护。

识别中断源是指根据中断参数识别是中断的来源。

现场保护-是指将其他进程中的现场进行入栈保护。

中断服务是指cpu将根据中断源调用相应的服务子程序。

现场恢复是指cpu执行完中断服务后,将现场恢复,进而继续执行该进程。

中断在硬件上是如何执行的?

用键盘当作输入设备,每当用户按下或释放某一个键时,会产生一个中断,该中断激活键盘驱动程序KEYBOARD.DRV来对键盘中断进行处理。 KEYBOARD.DRV程序会根据用户的不同操作进行编码,然后调用Windows用户模块USER.EXE生成键盘消息,并将该消息发送到系统的消息队列中等候处理。

键盘本身有控制器,能够产生扫描码
用户击键盘
键盘产生扫描码和(键盘中断,键盘有键按下弹起的消息)
传递给南桥芯片中的键盘控制器,
键盘控制器产生中断传递给南桥内部的中断控制器
中断控制器传递给CPU引脚,CPU也可以读写中断控制器的寄存器。
从而产生键盘中断。

各种信息数据通过 总线 ,或者专线连接。

键盘中断产生后,有Bios 服务程序,和操作系统的中断服务程序联合完成中断服务
操作系统中断服务程序把键盘中断以及其他消息,转换程Windows内核消息(事件)

Windows 内核,以及三大DLL等模块给应用程序发送系统消息,以及windows MSG消息。
应用程序通过消息循环,获取并处理MSG消息。
处理过程中,会调用程序窗口类注册的窗口过程。
窗口过程,具体处理应用程序感兴趣的消息。

参考:https://bbs.csdn.net/topics/391882896?page=1

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值