中断,异常和系统调用

一、中断
1.中断的概念
CPU对外设的中断信号的响应,CPU暂停正在执行的程序,保留环境,执行中断程序,执行完毕后,再回到断点。中断是由外部设备引起,也称为外中断。
由CPU内部事件引起的中断。如溢出、非法指令、地址越界、电源故障等。也称为内中断。与中断一样,系统如果发现陷入时间,CPU也将暂停正在执行的程序,保留环境,执行该陷入事件的处理程序,执行完毕后,再回到断点。

2.中断号,中断向量表和中断优先级
a.中断号
中断号是中断类型的编号,每一个编号对应着一种中断类型。中断处理器将中断号传给CPU,CPU根据中断号去查询中断向量,找到处理终端的程序入口地址。
b.中断向量表
为每种设备配以相应的中断处理程序,把该程序的入口地址放在中断向量表的一个表项中,并规定一个中断号用于设备的中断请求。
c.中断优先级
系统中有多个中断信号源,系统为他们规定不同的优先级。如:键盘<打印机<磁盘

补充:对多个中断源的处理方式
对于多中断信号源的情况下,当处理机正在执行一个中断时,有来一个新的中断请求,此时有两种处理方式
a.屏蔽中断
对任何新到的中断请求都暂时不处理,让其等待。知道处理机已经完成本次中断的处理。处理机再去检查是否有中断发生,若有再去处理新到的中断,若无。则返回被中断的程序。该方法中,所有中断都按照顺序执行,优点是简单,但不能对实时性要求较高的中断处理。
b.嵌套中断
在设置了中断优先级的系统中,通常按照这样的规则来进行优先级控制。
当同时有多个不同的优先级的中断请求时,CPU优先响应最高优先级的中断请求。
高优先级的中断请求可以抢占正在运行的低优先级中断的处理器,下图展示了嵌套中断时的情景。

3.中断处理过程
中断的处理过程分成以下几个步骤:
a. 测定是否有未响应的中断信号
CPU每一次执行完当前指令后,都要检测是否有未响应的中断信号。若没有继续执行下一条指令,若有,则停止原有进程的执行,准备执行中断处理程序,操作系统将CPU的控制权交给中断程序。

b.保护被中断进程的CPU环境(保护现场)
保存程序状态字PSW和程序计数器PC中下一条指令的地址,入中断保留区(栈)中。所有CPU寄存器的内容入栈。下图给出了一个简单的中断现场的示意图

c.转入相应的设备处理程序
CPU测试各个中断源,确定IO设备,并发送确认信号。设备收到信号后,取消中断请求信号。将设备中断处理程序的入口地址装入到程序计数器中,这样,当处理机运行时,便可以自动转向中断处理进程。

d.中断处理
不同的设备有不同的中断处理程序。该程序首先从设备控制器中读出设备状态,判别本次中断是正常完成中断还是异常结束中断,如果是正常完成中断,中断设备便做结束处理。如果是异常结束中断,则根据发生异常的原因做出相应的处理。

e.恢复被中断进程的现场
中断处理完成后,恢复CPU现场,退出中断。是否返回被中断的进程,取决于:
采用屏蔽中断方式。返回至被中断的进程
采用中断嵌套方式,考虑有无优先级更高的中断请求
中断处理流程如下图:

二、异常
异常也称内中断、例外或陷入(Trap),指源自CPU执行指令内部的事件的发生,如程序的非法操作码、地址越界、算术溢出、虚存系统的缺页以及专门的陷入指令等引起的事件。
对异常的处理一般要依赖于当前程序的运行现场,而且异常不能被屏蔽,一旦出现应立即处理。

三、系统调用
首先,有一个概念叫做接口。抽象而言的接口是连接两个东西的中间物。接口的好处是屏蔽了连接起来的实际细节。我们只关心接口如何使用。
系统调用:操作系统的接口是连接应用软件与操作系统的中间桥梁。接口在程序设计中表现的形式就是:函数。操作系统提供的函数就被称为系统调用(system call)。
系统调用的实现:系统调用的存在给用户提供了接口,阻止了用户恶意访问操作系统的数据。系统调用也给用户访问内核提供了唯一的途径。计算机硬件的设计解决了这个问题的具体实现。它将内核程序和用户程序隔离。内核程序处于内核态,用户程序处于用户态。Intel的X86CPU使用CS寄存器的最低两位来表示:0是内核态,1和2是OS服务,3是用户态。当应用程序调用system call时,会完成从用户态到内核态的转换,控制权从应用程序转变为操作系统,操作系统对系统调用进行识别并且提供服务。

函数调用和系统调用的区别
函数调用是在一个堆栈空间内完成的;系统调用时应用程序和操作系统(操作系统有自己的堆栈)是在不同的堆栈空间的,从应用程序到操作系统有堆栈切换和用户态内核态的切换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值