中断机构和中断处理程序

中断是是多道程序得以实现的基础,因为进程之间的切换是通过中断完成的。

中断与陷入

中断
中断是指CPU对I/O设备发来的中断信号的一种响应。
CPU暂停正在执行的程序,保留CPU环境后,自动地转去执行该I/O设备的中断处理程序。
执行完后,再回到断点,继续执行原来的程序。
I/O设备可以是字符设备、块设备、通信设备等。由于中断是由外部设备引起的,故又称外中断。
陷入
CPU内部事件引起的中断。例如进程在运算中发生了上溢或下溢,又如程序出错,如非法指令、地址越界,以及电源故障等。通常把这类中断称为内中断或者陷入。
与中断一样,
若系统发现了有陷入事件,CPU也将暂停正在执行的程序,转去执行该陷入事件的处理程序。
中断和陷入的主要区别:信号的来源——来自CPU外部或者内部

中断向量表和中断优先级

中断向量表
为每种设备配以相应的中断处理程序,并把该程序的入口地址放在中断向量表的一个表项中。
并为每一个设备的中断请求规定一个**中断号,**它直接对应于中断向量表的一个表项。
当I/O设备发出中断请求信号时,由中断控制器确定该请求的中断号,根据该设备的中断号去查找中断向量表,从中取得该设备中断处理程序的入口地址,就可以转入中断处理程序执行。
中断优先级
经常会有多个中断信号源,每个中断源对服务要求的紧急程度不同,分别设置不同的优先级。

对多中断源的处理方式

屏蔽中断
当处理机正在处理一个中断时,将屏蔽掉所有中断。在该方法中,所有中断都按顺序处理,简单,但不能用于对实时性要求高的中断请求。
嵌套中断
当同时有多个不同优先级的中断请求时,CPU优先响应最高优先级的中断请求。
高优先级的中断请求可以抢占正在运行的低优先级中断的处理机。

中断处理程序

当一个进程请求I/O操作时,该进程将被 挂起,直到I/O设备完成I/O操作后,设备控制器便向CPU发送一个中断请求,CPU响应后便转向中断处理程序,中断处理程序执行相应的处理,处理完后解除相应进程的阻塞状态。

  1. 测定是否有未响应的中断信号。每当设备完成一个字符(字或数据块)的读入或输出时,设备控制器便向处理机发出一个中断请求信号。
    请求处理机将该设备已读入的数据传送到内存的缓冲区中
    请求处理机将要输出的数据传送给设备控制器
    程序每当执行完当前指令后,处理机都要监测是否有未响应的中断信号。
    如果没有,继续执行下一条指令。
    若有,停止原有进程的执行,准备转去执行中断处理程序,为把处理机的控制权交给中断处理程序做准备。
  2. 保护被中断进程的CPU环境
    在把控制权转交给中断处理程序之前,需要先保护被中断进程的CPU环境,以便能恢复运行。
    保存:
    从中断现场恢复到当前进程运行所需要的信息。
    通常由硬件自动将处理机状态字(PSW)和保存在程序计数器(PC)中下一条指令的地址保存在栈中。
    然后把被中断进程的CPU现场信息压入栈中。
  3. 转入相应的设备处理程序
    由处理机对各个中断源进行测试,以确定引起本次中断的I/O设备,并向提供中断信号的设备发送确认信号。在该设备收到确认信号后,就立刻取消它所发出的中断请求信号。然后,将相应的设备中断处理程序的入口地址装入到程序计算器中。这样当处理机运行时,便可自动地转向中断处理程序。
  4. 中断处理
    对不同的设备,有不同的中断处理程序。该程序首先从设备控制器中读出设备状态,以判别本次中断是正常完成中断还是异常结束中断。若是前者,中断程序便做结束处理。假如这次是字符设备的读操作,则来自输入设备的中断表明该设备已经读入了一个字符的数据,并已放入数据寄存器中。此时,中断处理应该将数据传送给CPU,再将它存入缓冲区中,并修改响应的缓冲区指针,使其指向下一个内存单元。
    若还有命令,可再向控制器发送新的命令,进行新一轮的数据传送。
    若是异常结束中断,则根据发生异常的原因,做相应的处理。
  5. 恢复CPU的现场并退出中断
    当中断处理完成后,需要恢复CPU的现场,退出中断。
    是否返回到被中断的进程,取决于:
    (1)本中断是否采用了屏蔽中断方式,若是,就会返回被中断的进程。
    (2)采用的是中断嵌套方式,如果没有优先级更高的中断请求I/O。在中断完成后,返回被中断的进程。
    如果要返回被中断的进程,可将保存在中断栈中的被中断进程的现场信息取出,并装入到相应的寄存器中,其中包括该程序下一次要执行的指令的地址N+1,处理机状态字PSW,以及各通用寄存器和段寄存器的的内容。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饼干饼干圆又圆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值