[1.3_2]计算机系统概述——中断和异常

news2024/11/18 15:26:32

文章目录

  • 第一章 计算机系统概述
    • 中断和异常
      • (一)中断的作用
      • (二)中断的类型
      • (三)中断机制的基本原理
    • 小结

第一章 计算机系统概述

中断和异常

  • 中断的作用
  • 中断的类型
    • 内中断(也称“异常”)
    • 外中断
  • 中断机制的基本原理

(一)中断的作用

  CPU上会运行两种程序,一种是操作系统内核程序,一种是应用程序

  内核是整个系统的管理者,在计算机刚启动的时候,运行的是内核程序。在合适的情况下,操作系统内核会把CPU的使用权主动让给应用程序。(具体见第二章进程管理相关内容)

  “中断”是让操作系统内核夺回CPU使用权的唯一途径。“中断”会使CPU由用户态变为内核态,使操作系统重新夺回对CPU的控制权。

  而一个应用程序如果运行,则它会一直运行下去,除非发生了中断。可想而知,如果没有“中断”机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序。而如果CPU一直都只是在运行1个应用程序的话,又何来“并发”?

  所以,没有中断技术,就没有多道程序并发。甚至可以说,没有中断技术就没有操作系统。


  总之,操作系统内核是一个管理者,当它想要把CPU使用权让给应用程序的时候,它会自愿地用一个特权指令来完成这件事情。但是,当它想要把CPU的使用权重新夺回来的时候,它就要通过“中断”的方式来实现。

  内核态→用户态:执行一条特权指令——修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权。

  用户态→内核态:由**“中断”**引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权。

(二)中断的类型

  • 内中断(也称异常、例外)

    与当前执行的指令有关,中断信号来源于CPU内部

    • 陷阱、陷入(trap)

      由陷入指令引发,是应用程序故意引发的。

    • 故障(fault)

      由错误条件引起的,可能被内核程序修复。内核程序修复故障后会把CPU使用权还给应用程序,让它继续执行下去。如:缺页故障。

    • 终止(abort)

      由致命错误引起,内核程序无法修复该错误,因此一般不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。如:整数除0、非法使用特权指令。

  • 外中断(也称“中断”)

    与当前执行的指令无关,中断信号来源于CPU外部

    • 时钟中断
    • I/O中断请求

注:在很多地方,“内中断”一般称为异常,“外中断”一般直接称作中断。所以如果说一个狭义的中断往往就是指的外中断,而如果对“中断”进行细分,再谈内外中断。

内中断

  若当前执行的指令是非法的(指令本身是非法的/指令的参数是非法的),则会引发一个中断信号。

  例子1:应用程序试图在用户态下执行特权指令,指令本身是非法的,CPU在执行其程序指令的过程中,会拒绝执行并发出中断信号,转变为内核态进而执行一段处理中断信号的内核程序。

  例子2:执行非特权指令时也会有问题,比如执行除法指令时发现除数为0,也会引发一个内中断,指令的参数是非法的


  例子3:有时候应用程序想要请求操作系统内核的服务,此时会执行一条特殊的指令——陷入指令,该指令会引发一个内部中断信号。(陷入指令是特殊的非特权指令,不是特权指令,毕竟它是在用户态下由应用程序发出的)

  执行“陷入指令”,意味着应用程序主动地将CPU控制权还给操作系统内核。“系统调用”就是通过陷入指令完成的。

外中断

  例子1:时钟中断——由时钟部件发来的中断信号。

  计算机会有一个时钟部件,时钟部件每隔一个时间片(如50ms)会给CPU发送一个时钟中断信号。

  如应用程序1正在CPU上执行一条条指令时,当执行时间到达50ms,就会暂停运行(只是先暂停一下,如果一会儿它又上CPU了,那么会接着刚才的继续运行),由用户态转为内核态并执行一个内核程序来处理时钟中断信号,并由内核决定接下来该让哪一个应用程序接着上CPU运行。

  例子2:I/O中断——由输入/输出设备发来的中断信号。

  如某程序向打印机请求打印服务,则打印机在打印完成后会向CPU发送中断信号,用来通知CPU,输入输出任务已经完成了,接下来CPU会转而执行内核程序来处理I/O中断信号。


  总之,这两种中断信号,都来自CPU的外部,和当前CPU上运行的指令内容是没有关系的。CPU在每一条指令执行结束的时候,都会例行检查是否有外中断信号。

(三)中断机制的基本原理

  刚才我们举的例子当中,有非法指令的中断、I/O中断、除数为0中断等等,每一个中断都对应内核当中不同的中断处理程序。那么CPU是怎么知道自己该执行哪种中断程序的呢?

  **不同的中断信号,需要用不同的中断处理程序来处理。**当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。

image-20230304162518446

  显然,中断处理程序一定是内核程序,需要运行在“内核态”。

小结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BPRgJmMW-1677919724465)(C:/Users/11202/AppData/Roaming/Typora/typora-user-images/image-20230304164704787.png)]

  没有中断机制,就不可能实现操作系统,不可能实现程序并发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/388870.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ES之DSL查询文档基础查询

分类 query查询分类 总体规律就是逻辑性的,从外层的你干嘛,到下一层的查询类型,再到下一层的查询字段(如果需要的话)和然后是查询内容 查询所有 语法 get /索引库名/_serarch {"query":{"查询条件…

【Linux】配置动态IP

动态IP 服务器重启完成之后,我们可以通过linux的指令 ip addr 来查询Linux系统的IP地址,具体信息如 下: 从图中我们可以看到,并没有获取到linux系统的IP地址,这是为什么呢?这是由于启动服务器时未 加载网卡&#x…

2D图像处理:Qt + Opencv使用光度立体法检测Halcon中提供的缺陷图像

文章目录 不需知道光源方向一、光度立体法(后续有时间在查资料研究)1.1 问题1:Slants和Tilts的理解(暂时是理解的)1.2 问题1:Gradient通道数为1,为何像素点对应的值会有两个?1.3 问题2:F(r,c)=(u(r,c),v(r,c)) 关于高斯曲率和平均曲率如何计算的?二、非标定光源实现光…

C++经典20题型,满满知识,看这一篇就够了(含答案)

今天找了20道c的经典题型,看这一篇就够了,全是干货 目录 1、题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总…

【蓝桥杯集训11】BFS(4 / 4)

目录 844. 走迷宫 - BFS求最短路 1233. 全球变暖 - BFS 845. 八数码 - 最短路BFS 状态表示 一二维坐标转换 为什么BFS保证走的是最短路? 一二维坐标转换(nn矩阵) 1562.微博转发 - BFS按层遍历 有向图 844. 走迷宫 - BFS求最短路 活…

Centos7安装中文字体

一、背景 最近一直在重写2021年毕设的前端页面,用vue3vite实现的响应式布局,目前完成10%。但在部署到Linux上时,遇到了服务端生成的中文验证码混乱的问题,通过远程断点,排除编码的问题,原来是由于Linux没有…

Linux网络编程 第六天

目录 学习目标 libevent介绍 libevent的安装 libevent库的使用 libevent的使用 libevent的地基-event_base 等待事件产生-循环等待event_loop 使用libevent库的步骤: 事件驱动-event 编写一个基于event实现的tcp服务器: 自带buffer的事件-buff…

深圳大学计软《面向对象的程序设计》实验14 运算符重载2和函数模板

A. 日期比较(运算符重载之类型转换) 题目描述 定义一个日期类CDate,包含属性:年、月、日,都是整数。 构造函数含单个参数,参数是八位整数,默认值为0,实现整数转为日期类型&#x…

【基于感知损失的无监督泛锐化】

PercepPan: Towards Unsupervised Pan-Sharpening Based on Perceptual Loss (PercepPan:基于感知损失的无监督泛锐化) 在基于神经网络的全色锐化文献中,作为地面实况标签的高分辨率多光谱图像通常是不可用的。为了解决这个问题…

C++初学笔记整理

目录 1. C关键字 2. 命名空间 1)命名空间的引入和概述 2)命名空间的定义 3)std与命名空间的使用 4).相关特性 3. C输入&输出 4. 缺省参数 1 )缺省参数概念 2)使用及分类 a.全缺省 b.部分缺省 5. 函数…

力扣-337打家劫舍III(dp)

力扣-337打家劫舍III 1、题目 337. 打家劫舍 III 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。 除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有…

【FMCW 01】中频IF信号

FMCW信号 调频连续波(frequency modulated continuous wave,FMCW)顾名思义,就是对信号的频率进行线性调制的信号。 从时域上看,对频率的调制,就像一把连续的锯齿波。其中每一个锯齿叫做一个chirp,其持续的时间叫做ch…

Android仿微信选择图片

效果展示首先先添加用到的权限<uses-permission android:name"android.permission.INTERNET" /><!--获取手机存储卡权限--><uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:nam…

java 包装类 万字详解(通俗易懂)

前言简介和溯源拆装箱String类和基本类型的相互转化String类和包装类型的相互转化八大包装类的常用方法汇总&#xff08;含代码演示&#xff09;一、前言 : 本节内容是我们《API-常用类》专题的最后一节了。本节内容主要讲包装类&#xff0c;内容包括但不限于包装类的诞生&…

Linux磁盘占满,如何清理磁盘空间

目录解决思路&#xff1a;先查linux磁盘为什么占满了&#xff0c;是什么导致的&#xff0c;这样才好去定位目录&#xff0c;清楚空间写者的问题是测试环境磁盘占满&#xff0c;原因是测试环境tomcat的日志都会保留&#xff0c;日志空间占用太大把linux磁盘占满&#xff0c;导致…

HTML 表单

HTML 表单和输入 HTML 表单用于收集不同类型的用户输入。 在线实例 创建文本字段 (Text field) 本例演示如何在 HTML 页面创建文本域。用户可以在文本域中写入文本。 创建密码字段 本例演示如何创建 HTML 的密码域。 &#xff08;在本页底端可以找到更多实例。&#xff09; …

信息安全与数学基础-笔记-①整数的可除性

知识目录整除素数带余除法最大公因数&#xff08;欧几里德算法&#xff09;裴蜀等式最小公倍数❀标准分解式❀标准分解式求最大公因数标准分解式求最小公倍数整除 a bq 公式表达的意思&#xff1a;b整除a&#xff0c;a可被b整除 用符号表示&#xff1a;b | a 否则&#xff1a…

【SpringMVC】SpringMVC程序开发

SpringMVC程序开发 文章目录SpringMVC程序开发:one:认识SpringMVC什么是SpringMVCMVC思想:two:获取请求参数创建SpringMVC项目建立路由连接获取请求参数获取urlEncoded格式参数获取表单标签参数获取Json格式参数获取URL中的参数上传图片获取请求信息获取请求header获取cookie创…

Linux -- 信号控制进程 Kill 命令 简引

Kill 命令 &#xff1a;给进程发送信号 &#xff1a;[rootfsw ~]# kill -l # 可以列出 当前所有的信号量 比较常用的就是 &#xff1a;1) SIGHUP 重新加载配置2) SIGINT 键盘中断^C 即 Ctrl C3) SIGQUIT 键盘退出9) SIGKILL 强制终止15) SIGTERM 终止&#xff08;正…

『OPEN3D』点云表面重建

目录 1 点云法线一致性估计 2 点云的表面重建 1 Alpha shapes reconstruction 2 Ball pivoting reconstruction 3 poisson surface reconstruction 1 点云法线一致性估计 在点云处理的章节中已经介绍使用estimate_normals来生成点云的发现信息&#xff0c;但该方法通过拟合…