中断系统简介

来源:互联网 发布:淘宝质量检测 编辑:程序博客网 时间:2024/05/01 21:02
中断系统简介

    一、什么是中断:当CPU正在执行某程序时,由于外界事件的需要向CPU发出申请,CPU暂停现行的执行而转去处理临时发生的事件,处理完后再返回到被中断程序的断点处,继续往下执行,这个过程称为中断。

    打个比方,中断就是处理器的一种工作状态的描述,因为处理器与很多外部电路相连并负责处理外部电路送来的各种信息(处在协同工作状态),如果遇有(外部电路送来)“急件”需要优先处理,处理器则须先停下“自己手头的工作”先去处理“急件”,这种先停下“自己手头的工作”去处理“急件”的过程,即为——中断。

    中断时转去执行的程序叫中断服务程序,被中断的程序是主程序。有了中断,计算机就能够自动及时地处理随机发生的事件(比如按下鼠标左键);有了中断,可使高速的CPU与低速的I/O设备以中断方式传递数据。

    二、引起中断的原因,即发出中断请求信号的源称为中断源。

    通常中断源有以下几种:

    1、一般的输入输出设备。如键盘、打印机、通信接口等。

    2、数据通道。如磁盘等。

    3、实时时钟。在实时系统中,实时里程是生要的中断源。如定时的数据采集,或者定时的控制等。

    4、故障源。例如,电源故障就是来自CPU外部的一种故障源。它要求把正在执行的程序的状态保留下来,以备电源恢复时继续执行。

    5、为调试程序而设置的中断系统。

    三、中断系统的功能:

    1、实现中断与返回

    2、实现优先级排续

    3、实现中断嵌套:CPU在处理较低级的中断时,可能会有较高级的中断请求出现,这时应暂停对较低级的中断的处理,而转去处理较高级的中断。当较高级的中断处理完后,再继续处理被中断的较低级的中断。

    四、中断响应

    1、CPU响应中断的条件

    1)有中断请求信号:每个中断源都设有一个中断请求触发器。当中断源向CPU发中断请求信号时,它置位(1)保存着该(请求)状态,直到该中断得到响应为止。

    2)中断请求没有被屏蔽:每个中断源都设有一个中断屏蔽触发器。它由CPU来置位和复位。比如当第一次按下键盘时CPU响应中断同时将键盘的中断屏蔽触发器置位1,接下来去处理这个键盘的中断服务程序,如果在这时(还没有处理完)就第二次按下了键盘,这时管理中断的芯片会先检测键盘的中断屏蔽触发器发现它目前为1则不会向CPU发送这个中断请求直到CPU处理完第一个中断服务程序,将键盘的中断屏蔽触发器置位0后才会发送这个中断请求

    3)CPU的中断是开放的。

    4)CPU在现行指令执行完毕时,响应中断。

    2、中断响应时及中断响应期间CPU应做的工作。

    1)关中断:防止CPU完成本次中断的断点保存和现场保存之前再次响应别的中断而造成混乱。

    2)保存断点。

    3)保护现场。

    4)给出中断服务程序入口,并转入该服务程序。

    5)恢复现场。

    6)从中断返回。

    虽然现在win9x已经有了PNP(即插即用)功能,但是中断冲突仍然是不可避免的,其中最为容易发生冲突的就是IRQ、DMA和I/O。首先我们先了解一下IRQ、DMA和I/O的概念:

    1、IRQ(InterruptRequest)

    IRQ英文全称InterruptRequest,中文翻译为中断请求线。计算机中有许多设备(例如声卡、硬盘等)他们都能在没有CPU介入的情况下完成一定的工作。但是这些设备还是需要定期中断CPU,让CPU为其做一些特定的工作。如果这些设备要中断CPU的运行,就必需在中断请求线上把CPU中断的信号发给CPU。所以每个设备只能使用自己独立的中断请求线。一般来说在80286以上计算机中,共有16个中断请求线与各种需要用中断的不同外设相连接,(每个中断线有一个标号也就是中断号)。

    中断号的分配情况如下:

    IRQ说明

    0定时器

    1键盘

    2串行设备控制器

    3COM2

    4COM1

    5LPT2

    6软盘控制器

    7LPT1

    8实时时钟

    9PC网络

    10可用(Available)

    11可用(Available)

    12PS/2鼠标

    13数学协处理器

    14硬盘控制器

    15可用(Available)

    NM1奇偶校验

    大家现在就可以清楚的看到,IRQ3、4、5、10、11、15可供用使用。

    2、DMA(DirectMemoryAddress)

    计算机与外设之间的联系一般通过两种方法:一是通过CPU控制来进行数据的传送;二是在专门的芯片控制下进行数据的传送。我们所说的DMA,就是不用CPU控制,外设同内存之间相互传送数据的通道,在这种方式下,外设利用DMA通道直接将数据写入存储器或将数据从存储器中读出,而不用CPU参与,系统的速度会大大增加。

    DMA通道分配情况表

    DMA0可用

    DMA1EPC打印口

    DMA2软盘控制器

    DMA38位数据传送

    DMA4DMA控制器

    DMA5可用

    DMA6可用

    DMA7可用

    3、I/O(INPUT/OUTPUT)

    输入/输出端口,也就是计算机配件与CPU连接的接口。每个端口都有自己唯一的一个端口号,这个端口号称为地址。每一个想和CPU通信的外设或配件都有不同的I/O地址,通常在PC机内部一共有1024个地址。

    二、中断冲突的解决

    现在我们已经基本知道了IRQ、DMA和I/O的概念,下面我就要说一下如何解决常见的中断冲突问题。

    众所周知,现在的win9x已经运用PNP技术,它可以将中断进行自动分配,这种“即插即用”的功能可以说是大大简化了用户的操作。不过任何事物都有好与不好两方面,这种PNP技术也有它的弱点,那就是如果不能认出要安装的新设备,那么自动分配中断时就会产生冲突。现在新的硬件产品层出不穷,各种产品又相互兼容,功能类似,这就导致了win9x常常不能正确检测出新设备,中断冲突也就不可避免了。

    知道了冲突产生的原因,那我们如果解决冲突呢?在此我就详细的谈一谈在win9x下中断冲突的解决。首先我们要知道系统中冲突的设备,做法是在控制面板中双击“系统”图标,查看设备管理器中的各设备。一般有“?”和“!”的设备要注意了,有问题的设备就是它们了。解决方法有分两步做:

    第一步、先删去有“?”和“!”的设备,然后重新启动,让计算机自己再认一遍这些设备。这样做是因为部分有“?”和“!”的设备可能是驱动程序安装有误,再重装一遍可解决问题。

    第二步、如果上面一步还是不能解决问题,现在多半是中断冲突了,那我们只能手动调整来解决中断冲突。在系统=>设备管理器=>属性中我们可以看到系统资源分配的情况,通过查看此项就可从中了解到哪些系统资源被占用,哪些系统资源还没有用,用户做相应的调整即可。

    三、如何防止中断冲突

    要防止中断冲突,其实就是要知道什么设备容易产生中断冲突,只要知道了这点,在使用这些设备时稍微注意一下就可以了。下面我列出一些容易冲突的设备,希望对读者有用。

    1、声卡:一些早期的ISA型声卡,系统很有可能不认,就需要用户手动设置(一般为5)

    2、内置调制解调器和鼠标:一般鼠标用COM1,内置调制解调器使用COM2的中断(一般为3),这时要注意此时COM2上不应有其它设备

    3、网卡和鼠标:此问题一般发生在鼠标在COM1口,使用中断为3,这时要注意通常网卡的默认中断为3,两者极有可能发成冲突。

    4、打印机和EPP扫描仪:在安装扫描仪驱动程序时应将打印机打开,因为两个设备中串联,所以为了防止以后扫描仪驱动程序设置有误,一定要将打印机打开再安装扫描仪驱动程序。

    5、操作系统和BIOS:如果计算机使用了“即插即用”操作系统(例如win98),应将BIOS中PNPOSInstalled设置为Yes这样可让操作系统重新设置中断。

    6、PS/2鼠标和BIOS:在使用PS/2鼠标时应将BIOS中PS/2MouseFunctionControl打开或设置为Auto,只有这样BIOS才能将IRQ12分配给PS/2鼠标用。

    小结:通过本文的介绍,大家一定对中断冲突的原因和解决方法有所了解了,我想大家以后再遇到中断冲突问题,只要仔细的分析,一定能很好的解决。 

原创粉丝点击