目录

  • 1、知识总览
  • 2、中断机制的诞生
  • 3、中断的概念和作用
  • 4、中断的分类
  • 5、外中断的处理过程
  • 6、知识回顾

1、知识总览

2、中断机制的诞生

早期的计算机中,各个程序只能串行执行,一个程序放进计算机内存之后,程序会开始运行,程序运行结束之后需要等到I/O设备输出,操作结束之后程序才能从内存中移除;接下来对第二个程序进行操作,其过程类似;

这种方法的缺点是各程序只能串行执行,系统资源的利用率低,在计算机的内存中同一时刻最多只能有一道程序运行,这种方式会导致系统的资源利用率低;

为了解决上述问题,人们发明了操作系统(作为计算机的管理者),引入了中断机制,从而实现多道程序的并发执行。

中断本质:发生中断就意味着需要操作系统介入,开展管理工作;引入中断机制之后,可以把多个程序放到内存。各个程序并发地执行;

比如说程序一,在用户态下运行,运行一段时间之后,CPU可能会收到计时部件发出的中断信号,提示CPU已经过了一个时间片了;

CPU收到中断信号后,就意味着需要操作系统介入,开展管理工作,CPU会立即切换核心态,然后把CPU的使用权限交给操作系统,操作系统的内核对中断信号进行处理;操作系统发现刚才的中断信号是时间片到了,操作系统负责将进程1切换到进程2运行,在完成这一系列管理工作后,操作系统会把CPU的使用权交还给用户进程,接下来进程2就会在用户态下开始执行;

当进程2进行一段时间后,进程2可能发出系统调用(内中断信号),请求输出,为了保证系统的安全性,输入输出操作指令属于特权指令,不允许用户进程直接使用,因此用户进程只能通过系统调用的方式主动要求操作系统介入工作,让操作系统来完成输入输出功能;

因此,接下来CPU会切换到核心态,操作系统接管进程2提出的系统调用请求,之后操作系统会按照进程2的请求要求打印机输出设备开始工作,进程2由于要等待I/O设备的工作完成,所以进程2会暂停运行,让进程3运行;

操作系统完成一系列的管理工作之后,操作系统会再次把CPU的使用权还给用户进程,然后进程3开始工作;

输出设备在操作系统的要求下也会并行地工作,当其工作结束之后会向CPU发送一个I/O完成的中断信号,当CPU接收到中断信号之后,操作系统接管管理工作,CPU会切换为核心态,操作系统内核会对刚才的中断信号进行处理,中断信号其实是进程2的I/O操作已经完成,那么操作系统会让进程2恢复运行来完成后续的工作,所以操作系统会把CPU的控制权交还给用户进程,然后进程2重新运行,执行后续的工作;

3、中断的概念和作用

通过以上分析,我们可以知道以下特点:

  • 当中断发生时,CPU立即进入核心态;
  • 当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理;
  • 对于不同的中断信号,会进行不同的处理
    发生中断,就意味着需要操作系统的介入,开展管理工作。由于操作系统的管理工作(比如进程切换,分配I/O设备等)需要使用特权指令,因此CPU需要从用户态转换为核心态。中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权。有了中断,才能实现多道程序的并发执行;

看一个历史遗留问题:用户态、核心态的切换是怎么实现的?
回答:“用户态->核心态”是通过中断实现的,并且中断是唯一途径;“核心态->用户态”的切换是通过执行一个特权指令,将程序的状态字(PSW)的标志位设置为“用户态”;

4、中断的分类

中断可以分为内中断和外中断两大类,内中断和外中断的本质区别是中断信号的来源是CPU的内部还是CPU的外部:

另一种分类方法中,内中断可以细分为陷进(陷入)、故障、终止;

5、外中断的处理过程

假设CPU正在用户态下执行用户程序相关指令,在执行完每个指令之后,CPU都要检查当前是否有外部中断信号需要处理,如果没有中断信号需要处理,CPU会继续执行下一个程序指令,直到某一条指令结束后发现存在中断信号需要处理;

发现中断信号需要处理之后,操作系统需要介入来处理中断信号,因此用户程序需要暂停运行,需要保护被中断的进程的CPU环境(比如程序状态字PSW、程序计数器PC、各种通用寄存器);完成保护工作之后,会根据中断信号的类型转入相应的中断处理程序;当中断处理完成后,恢复原来进程的CPU环境并退出中断,返回原进程继续往下执行;

6、知识回顾

王道 —— 中断和异常相关推荐

  1. (王道408考研操作系统)第一章计算机系统概述-第一节4:中断和异常

    注意!!! 本节内容和<计算机组成原理>中的中断有重合,如果需要详细了解的话可以点击链接跳转:(计算机组成原理)第七章输入和输出系统-第四节2:I/O方式之程序中断方式 为了内容完整,部分 ...

  2. 外中断(中断)、内中断(异常)

    1.中断 下图来自王道考研操作系统 为什么需要中断? 假设CPU正在跑一个程序 如果没有中断,那么CPU只能一直跑这个程序 如果有中断,给CPU一个中断信号,之后就可以让CPU跑其他程序了 中断响应过 ...

  3. 保护模式下中断或异常示意图

    保护模式下中断或异常示意图 转载于:https://www.cnblogs.com/LoveFishC/archive/2012/08/24/3845741.html

  4. 两篇文章说中断和异常之一

    转载自:http://www.cnblogs.com/javawebsoa/archive/2013/05/05/3061787.html 中断和异常的概念 * 中断: 硬件通过中断来通知内核.中断是 ...

  5. <X86汇编语言:实模式到保护模式>四十六 中断和异常的处理与抢占式多任务

    中断和异常概述 抢占式任务切换(依赖于硬件中断信号) 用来处理异常或者中断的程序叫做中断处理过程(程序) 中断描述符表

  6. 操作系统(五)中断和异常

    1.5 中断和异常 在上节内核态与用户态的转换过程中曾经提到过,操作系统会响应中断信号强制夺回CPU使用权,使用户态转换为内核态."中断"是操作系统夺回CPU使用权的唯一方式,如果 ...

  7. kernel 3.10内核源码分析--中断--中断和异常返回流程

    一.问题 1.内核调度与中断/异常/系统调用的关系如何? 2.信号处理与中断/异常/系统调用的关系如何? 3.内核抢占与中断/异常/系统调用的关系如何? 4.内核线程的调度有何特别之处?中断/异常/系 ...

  8. 《LINUX3.0内核源代码分析》第二章:中断和异常 【转】

    转自:http://blog.chinaunix.net/uid-25845340-id-2982887.html 摘要:第二章主要讲述linux如何处理ARM cortex A9多核处理器的中断.异 ...

  9. 操作系统--中断和异常

    操作系统–中断和异常 中断机制的诞生 为了实现多道批程序并发执行的一种技术,而发明出中断,主要为了提高资源的利用率. 中断的概念 发生中断,就意味着需要操作系统介入开展管理工作,cpu会立即进入核心态 ...

最新文章

  1. Effective java笔记3--类和接口1
  2. [剑指offer]面试题第[53-1]题[JAVA][在排序数组中查找数字-1][二分法][暴力法]
  3. NAACL’21 | 来看如何让模型学会因为所以但是如果
  4. 超清晰 ,一文理解:深拷贝与浅拷贝(js)
  5. 支付宝借呗还款利息为什么都不一样?
  6. mysql报错01427_ORA-01427问题的分析和解决
  7. 对于目前流行的量化投资与smart beta策略的一些看法
  8. poj 2503 Babelfish trie树!!!!指针版和数组版 基础
  9. 孙鑫VC学习笔记:第七讲 对话框
  10. 免费不限流的内网穿透,外网共享内网文件
  11. Zabbix实现企业微信报警
  12. 拼多多校招笔试题 避嫌抢劫
  13. 三维地图渲染技术工程实践 高德前端技术专家 GMTC 开讲啦
  14. linux u盘修复引导文件,centos bootloader安装到u盘后修复方法
  15. 基于Python的信用评分卡模型-give me some credit数据集,AUC 0.93 KS 0.71
  16. 1、 输入长方形的长和宽,编程求该长方形的周长和面积
  17. python异步的发展历程_深入了解Python的异步IO:概念和历史
  18. 5.19 c语言--循环选择--找到N个数中最大的一个数
  19. lcDFS1 深度优先遍历1[记忆化搜索]
  20. 清华大学计算机科学王昊,日照最好的三所高中,新鲜出炉!

热门文章

  1. linux文件三种时间及stat的用法
  2. 页面的访问速度如何提高?(我所知道的,哪位高手有其它的高见,敬请提醒....)...
  3. MongoDB与Spring集成教程
  4. Spring Boot Initilizr Web界面
  5. 如何在CentOS 7上安装和使用PostgreSQL
  6. Mysql搭建PXC集群 - Percona XtraDB Cluster
  7. 刷算法题需要的java语法_蓝桥杯java b组需要重点刷什么算法呢?
  8. VMware linux 虚拟机(ubuntu18.04) 安装TL-WDN5200H 2.0网卡驱动 完美使用(适用于vmware无法桥接网络使用此方法)
  9. 最全总结,GitHub Action自动化部署
  10. WeChat.app debuger