操作系统-中断

中断(广义的)(异常)

  • 有了中断机制,才能实现程序并发执行(才能进程切换

  • 发生中断就意味着需要操作系统介入,进行管理。管理需要特权指令,所以需要进入内核态。(要进入内核态要经过一些状态保存)

  • 收到中断信号后,CPU会暂停执行下一条将要执行的指令,转而去执行中断信号的处理程序(在内核态处理)

  • 收到中断信号(1、计时部件发出的中断信号;2、进程自己发出的系统调用这种内中断信号(比如输出,就会切换进程,该进程就等待IO结束);3、IO完成,IO设备发出中断信号 )后,就要切换为内核态,对中断进行处理

  • 中断发生后,当前运行的进程暂停执行CPU进入内核态,操作系统获得计算机的控制权

  • 对于不同的中断信号,会进行不同的处理(对于不同的中断处理程序,内核程序,在内核态下运行,执行一些特权指令)

  • 中断可以使CPU从用户态切换到内核态,且只有中断可以使CPU从用户态切换到内核态

  • 从内核态到用户态是执行特权指令,把程序状态字的标志位改一下就行


(原子性语句在执行前会关闭接收中断信号,在执行完后才打开,这样就能保证原子执行,不会被打断。在原子语句执行完后,才会处理中断信号。)

(在 ICS 里,是把这个叫做异常。ICS里异常中的中断指的是狭义的中断,指的是硬件的中断,也就是下述的外中断。这里的中断指的是广义的中断,其实就相当于异常)

中断的分类
  • 内中断:信号来源是CPU内部,与当前执行的指令有关

    • 自愿中断(指令中断)(系统调用,该指令本身想转到内核态)(trap)
    • 强迫中断
      • 硬件故障(缺页)(fault)
      • 软件中断(出错了,比如除0)(abort)
  • 外中断:信号来源是CPU外部,与当前执行的指令无关

    • 外设请求(IO操作完成发出中断信号)
    • 人工干预(用户强行终止)

外中断的处理过程:

  • 执行完每个指令后,CPU都要检查当前是否有外部中断信号,没有的话就执行下一条指令。
  • 检测到有外部中断信号,因为当前进程需要被暂停运行,则需要保护被中断进程的CPU环境(例如程序计数器、通用寄存器等),就是得存下来
  • 进入内核态,根据中断信号的类型转入相应的中断处理程序。

为什么要有用户态和内核态?

  • 由于需要限制不同的程序之间的访问能力,防止他们获取别的程序的内存数据,或者获取外围设备的数据,并发送到网络,CPU划分出两个权限等级 – 用户态和内核态。

系统调用

​ 系统调用是操作系统提供给应用程序使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序通过系统调用请求操作系统的服务。系统中各种共享资源都由操作系统统一管理,保证系统的稳定性和安全性。系统调用中用到特权指令,需要在内核态下进行

  • 发出系统调用请求是在用户态,发出请求后CPU进入内核态,对系统调用的相应处理是在内核态,即真正的系统调用的执行是在内核态(所以陷入指令是唯一一个只能在用户态下执行的指令)
  • 不同的系统调用有不同的相应的系统调用号,就能知道要用什么系统调用

与库函数的区别:库函数是编程语言里的,相当于是对某些功能的封装。有些库函数里会封装系统调用,有的不会。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值