计算机操作系统-中断

  • 中断机制的诞生

为了提高计算机资源的利用率、效率,人们发明了操作系统来作为计算机的管理者,进而引入中断机制来辅助操作系统,实现了多道程序并发执行

本质

发生中断就意味着需要操作系统的介入,来展开管理工作。因为很多操作是需要使用特权指令来完成的,而用户程序是没有资格使用特权指令的,只能借助操作系统的内核来实现。所以产生中断的目的就是为了让操作系统来完成用户程序所完成不了的操作,此时用户程序会交出所占用的计算机资源,将其交给操作系统来使用。操作系统使用完之后,会将计算机资源交还给用户程序。这就是中断的意义。操作系统就像是一个管理员,服务员,而中断信号相当于一个传唤信息,用户程序通过中断机制发出中断信号,对操作系统进行传唤,让操作系统的内核(功能)帮助其完成用户程序完成不了的操作(执行特权指令),而在CPU执行操作系统内核功能时,处理器CPU状态会从用户态转换成核心态

举例

多个程序并发运行时,由于处理器对每个程序划分时间片,当计时器计时到了的时候,则应当执行下一个程序。而这个操作需要控制CPU,所需要的是特权指令,而用户程序并没有使用特权指令的资格,所以它需要产生中断信号,呼唤操作系统的内核来代替用户程序执行相应的特权指令。操作系统收到中断信号后会将相应的资源的使用权占有,这里资源是CPU,即操作系统将占有CPU的使用权,此时处理器的状态会由用户态转化为核心态,因为要处理的程序中存在特权指令。操作系统让CPU执行相应的特权指令后,会使得CPU接下来要执行的程序是原本应该下一个执行的程序。所以当完成特权指令的操作后,CPU的处理器状态会回归用户态,并且计算机资源使用权将重新回到用户程序中

总结

  • step1:当中断发生时,CPU立即进入核心态
  • step2:当中断发生后,当前运行的进程会暂停运行,并由操作系统内核对中断进行处理
  • step3:对于不同的中断信号,会进行不同的处理

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

注意

用户态转换到核心态是通过中断实现的。并且中断是唯一的途径。

而从核心态转换到用户态是通过执行一个特权指令,将程序状态字PSW的标志位设置为用户态

之所以用户态岛核心态无法设置PSW是因为设置PSW是需要执行特权指令的,可知用户态并没办法执行特权指令,所以只能通过中断来实现

  • 中断的分类

上文中的中断是广义的中断。

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

内中断

也称为异常、例外、陷入。中断信号的来源是CPU内部,与当前执行的指令有关

自愿中断:指令中断,例如系统调用时使用的访管指令,又叫陷入指令、trap指令

强迫指令:

  • 硬件故障:缺页
  • 软件中断:整数除零

外中断

即为狭义的中断。中断信号的来源是CPU的外部,与当前执行的指令无关

  • 外设请求:例如IO操作完成发出的中断信号
  • 人工干预:例如用户强行终止一个进程

注意根本的区别:信号的来源

  • 外中断的处理过程

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

猜你喜欢

转载自blog.csdn.net/weixin_39721347/article/details/86487152