操作系统知识点二:中断与系统调用

中断

什么是中断

    中断是指CPU在执行当前程序时出现的某种状况,使得CPU必须停止当前程序,而去执行另一段来处理的紧急事务,处理接收后的CPU再返回原先暂停的程序继续执行,这个过程就称为中断。

中断机制的产生

    早期计算机各个程序只能串行执行、系统资源利用低。为了解决这个问题,人们就发明了操作系统,引入了中断机制,实现了多道程序的并发执行,提高了系统资源的利用率。中断是多程序并发执行的前提条件

    (1)以两个进程为例:进程1在用户态运行一段时间后,CPU会接收到计时部件(操作系统内核的时钟管理部件)发生的中断信号,表示进程1已用完一个时间片,CPU会切换到核心态,把CPU的使用权交还给操作系统。操作系统内核就会对刚才的中断进行处理,操作系统知道进程1的时间片已经用完,就需要切换进程。完成切换的一系列工作后,操作系统又会将CPU的使用权交给用户进程。
    (2)接着进程2拿到CPU执行权就会在用户态执行,进程2执行一段时间后,进程2发出系统调用(内中断信号),请求输出,主动要求操作系统介入工作。CPU会立即切换到核心态,把CPU的使用权交还给操作系统,操作系统内核接管进程2的系统调用请求,调用IO设备开始输出工作。然后 操作系统交还CPU执行权,IO设备也会一并执行,进程2需要等待IO操作完成,所以进程1拿到CPU执行权开始运行。执行一段时间后,IO操作完成,IO向CPU一个中断信号,此时CPU由用户态转化为内核态,对刚才的中断信号进行处理,由IO操作完成。所以操作系统知道进程2可以恢复运行了,以完成后续工作,所以操作系统再次交还CPU执行权,让进程2再次运行。

    所以:

  1. 当中断发生,CPU立即进入内核态。
  2. 当中断发生,当前运行的进程会暂停运行,并由操作系统内核对中断处理。
  3. 对于不同的中断信号,会进行不同的处理。

中断的本质

    中断的本质:发生中断就意味着需要操作系统介入,开展管理工作。
    由于操作系统的管理工作(如进程切换,分配IO设备)需要使用特权指令,因此CPU要从用户态转换为内核态。中断就可以使CPU从用户态转为内核态,使操作系统获得计算机的控制权。因此有了中断,才能实现多到程序并发。

    用户态到内核态的切换就是通过中断机制实现的,并且中断是唯一途径。
    内核态到用户态的切换时通过执行一个特权指令,将程序状态字(PSW)标志位设置为用户态。


中断的分类

中断可以分为内中断外中断

内中断

    当指令执行时,由CPU主动产生的,受CPU控制。内部中断分为软中端异常

软中断

    是由软件产生的中断。

异常

    异常是另外一种内部中断,是指令执行期间CPU内部产生的错误引起的。异常包含故障、陷阱、终止

  • 故障:故障可以修正,如果修复成功,将返回到当前正在执行的指令,重新执行。否则将终止故障程序。
  • 陷阱:陷阱会导致程序停止。
  • 终止:由不可恢复的知名错误造成,处理器会终止应用程序。
外中断

    外中断的信号源于CPU 外部,与当前执行的指令无关。是系统外部设备引发的程序中断,一般分为可屏蔽中断不可屏蔽中断

可屏蔽中断

    可屏蔽中断是由有中断能力的外部设备发出,例如I/O设备发出的所有中断请求都属于可屏蔽中断。

不可屏蔽中断

    内部不可屏蔽中断是通过软件调用的中断以及由执行指令过程中产生的“异常”。包括溢出中断、除法出错中断等。

中断的处理过程

  1. 执行完每个指令后,CPU都要检查当前是否有外部中断信号。
  2. 如果检测到外部中断信号,则需要保护被中断进程的CPU环境(如程序状态字PSW、程序计数器、各种通用寄存器)。
  3. 根据中断信号类型转入相应的中断处理程序。
  4. 恢复进程的CPU环境并退出中断,返回原进程继续往下执行。

在这里插入图片描述


中断的优先级

机器错误 > 时钟 > 磁盘 > 网络设备 > 终端 > 软件中断


系统调用

    在计算机中,系统调用(英语:system call),又称为系统呼叫,指运行在使用者空间的程序向操作系统内核请求需要更高权限运行的服务。系统调用提供了用户程序与操作系统之间的接口(即系统调用是用户程序和内核交互的接口)。

    操作系统中的状态分为管态(核心态)和目态(用户态)。大多数系统交互式操作需求在内核态执行。如设备IO操作或者进程间通信。特权指令:一类只能在核心态下运行而不能在用户态下运行的特殊指令。不同的操作系统特权指令会有所差异,但是一般来说主要是和硬件相关的一些指令。用户程序只在用户态下运行,有时需要访问系统核心功能,这时通过系统调用接口使用系统调用。

    应用程序有时会需要一些危险的、权限很高的指令,如果把这些权限放心地交给用户程序是很危险的(比如一个进程可能修改另一个进程的内存区,导致其不能运行),但是又不能完全不给这些权限。于是有了系统调用,危险的指令被包装成系统调用,用户程序只能调用而无权自己运行那些危险的指令。另外,计算机硬件的资源是有限的,为了更好的管理这些资源,所有的资源都由操作系统控制,进程只能向操作系统请求这些资源。操作系统是这些资源的唯一入口,这个入口就是系统调用。

  • 6
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值