免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 613 | 回复: 0
打印 上一主题 下一主题

Linux中断处理机制 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-24 12:47 |只看该作者 |倒序浏览

Linux 使用大量不同的硬件来完成许多不同的任务。显示设备驱动显示器,IDE 设备驱动磁盘等等。你可以同步地驱动这些设备,就是你可以发出一个请求执行一些操作(比如把一块内存写到磁盘)然后等待操作结束。这种方式,虽然可以工作,但是非常没有效率,操作系统当它等待每一个操作完成的时候会花费大量时间“忙于什么也不做”( busy doing nothing )。一个好的,更有效的方法是做出了请求然后去作其他更有用的事情,然后当设备完成请求的时候被设备中断。在这种方案下,系统中同一时刻可能有许多设备的请求在同时发生。
让设备中断 CPU 当前的工作必须有一些硬件的支持。大多数,如果不是所有的话,通用目的的处理器比如 Alpha AXP 都使用相似的方法。 CPU 的一些物理管脚的电路只要改变电压(例如从 +5V 到 -5V )就会让 CPU 停止正在做的工作,开始执行处理中断的特殊代码:中断处理代码。这些管脚之一可能连接一个内部适中,每一个 1000 分之一秒就接收一个中断,其他的也许连接到系统的其他设备,比如 SCSI 控制器。
系统通常使用一个中断控制器把设备的中断集合在一起,然后把信号传送到CPU 的一个单一的中断管脚。这可以节省 CPU 的中断管教,也给设计系统带来了灵活性。中断控制器有掩码和状态寄存器,用于控制这些中断。设置掩码寄存器的位可以允许和禁止中断,状态寄存器返回系统中当前的中断。
一些系统中的中断可能是硬连接的,例如实时时钟的内部时钟可能永久地连接到中断控制器的第 3 管脚。但是,另一些管脚连接什么可能由在特定的 ISA 或者PCI 槽位插入什么控制卡决定。例如,中断控制器的第 4 管脚可能和 PCI 槽位0 相连,可能某一天有一个以太网卡,当时后来可能是一块 SCSI 控制卡。每一个系统都有它自己的中断中转机制,操作系统必须足够灵活才能处理。
大多数现代的通用目的微处理器用相同的方式处理中断。发生硬件中断的时候, CPU 停止它正在运行的指令,跳到内存中一个位置运行,这里或者包含中断处理代码或者是跳到中断处理代码的指令。这种代码通常在 CPU 的特殊模式下工作:中断模式,通常,这种模式下其他中断不能产生。这里也有例外:一些<SPAN lang=EN-US style="FONT-SIZE:

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/28832/showart_220393.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP