首页 > 其他分享 >中断是怎么实现的

中断是怎么实现的

时间:2023-09-26 23:37:25浏览次数:43  
标签:怎么 优先权 处理机 中断 CPU 实现 外围设备 中断请求

中断是什么

简单的说
就是 CPU 在等待很久才能完成的任务时,趁机去干点别的事情去了。
要是这个耗时较长的任务完成了,给 CPU 打个电话,再把 CPU 叫回来干活。

用复杂的话来说
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。——来自百度百科。

中断为什么要这样

为什么要让 CPU 趁机去干点别的事情呢?
让它等着不好吗?
是啊,可是别的进程怎么办呢?眼巴巴看着 CPU 搁这儿闲着吗?那不得骂街啊
干脆让给别的进程玩会儿得了
等我这儿事情忙得差不多了,再喊回来,这叫充分使用 CPU

用复杂的话来说
现代计算机中采用中断系统的主要目的是 [4]:

  • ①提高计算机系统效率。计算机系统中处理机的工作速度远高于外围设备的工作速度。通过中断可以协调它们之间的工作。当外围设备需要与处理机交换信息时,由外围设备向处理机发出中断请求,处理机及时响应并作相应处理。不交换信息时,处理机和外围设备处于各自独立的并行工作状态。
  • ②维持系统可靠正常工作。现代计算机中,程序员不能直接干预和操纵机器,必须通过中断系统向操作系统发出请求,由操作系统来实现人为干预。主存储器中往往有多道程序和各自的存储空间。在程序运行过程中,如出现越界访问,有可能引起程序混乱或相互破坏信息。为避免这类事件的发生,由存储管理部件进行监测,一旦发生越界访问,向处理机发出中断请求,处理机立即采取保护措施。
  • ③满足实时处理要求。在实时系统中,各种监测和控制装置随机地向处理机发出中断请求,处理机随时响应并进行处理。
  • ④提供故障现场处理手段。处理机中设有各种故障检测和错误诊断的部件,一旦发现故障或错误,立即发出中断请求,进行故障现场记录和隔离,为进一步处理提供必要的依据。

——来自百度百科。

中断是怎么办的

中断咋这么能干呢?
万一电话打给 CPU,CPU 不认识回家的路咋整啊?
这不简单吗?
CPU 趁机干别的事情之前,咱把这儿的电话和定位写在 CPU 手上,这它不就记住了吗?

用复杂的话来说
CPU 收到中断信号后会首先把一些数据 push 到内核栈上,保存的数据是和当前执行点相关的,这样中断完成后就可以返回到原执行点。如果 CPU 当前处于用户态,则会先切换到内核态,把用户栈切换为内核栈再去保存数据(内核栈的位置是在当前线程的 TSS 中获取的)。

那要是谁都给 CPU 打电话,大家弄混了,产生竞争了咋办呢?
这个也简单,给 CPU 配个秘书,嘿嘿。
秘书接到电话,把咱们这些打电话的人先记在本子上。到时候 CPU 再按照顺序上门。

那要是有人很着急,非得插队,要 CPU 赶紧回去咋办呢?
这个也没事,他权限大,他事情急就让他的呗。他权限小,事情缓,那就乖乖和咱们一起排队等呗

用复杂的话说
在某一时刻有几个中断源同时发出中断请求时,处理器只响应其中优先权最高的中断源。当处理机正在运行某个中断服务程序期间出现另一个中断源的请求时,如果后者的优先权低于前者,处理机不予理睬,反之,处理机立即响应后者,进入所谓的“嵌套中断”。中断优先权的排序按其性质、重要性以及处理的方便性决定,由硬件的优先权仲裁逻辑或软件的顺序询问程序来实现
——来自百度百科。

标签:怎么,优先权,处理机,中断,CPU,实现,外围设备,中断请求
From: https://www.cnblogs.com/manqing321/p/17731554.html

相关文章

  • 使用HttpServletResponse实现curl接口时控制台输出(续)
    上一篇文章的问题在上一篇文章SpringBootRestController接口如何输出到终端中讨论了如何使用HttpSerlvetResponse写入输出流,使应急接口通过curl调用时可以在控制台输出信息,使运维人员知道命令执行情况。但是上一篇文章的问题是,HttpServletResponse是Controller的参数......
  • 225. 用队列实现栈
    请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:voidpush(intx) 将元素x压入栈顶。intpop() 移除并返回栈顶元素。inttop() 返回栈顶元素。booleanempty() 如果栈是空的,返回 true ;否则,返回 fals......
  • 在excel表格插入标黄的这列数据 实现合并单元格,并统计单元格个数?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个Python自动化办公的问题,一起来看看吧。下图是他的原始数据和他想得到的目标数据,如下所示:需要在标黄的两行里边进行相关操作。二、实现过程这里【瑜亮老师】给了一个思路,groupby系统.漏洞......
  • # yyds干货盘点 # 在excel表格插入标黄的这列数据 实现合并单元格,并统计单元格个数?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个Python自动化办公的问题,一起来看看吧。下图是他的原始数据和他想得到的目标数据,如下所示:需要在标黄的两行里边进行相关操作。二、实现过程这里【瑜亮老师】给了一个思路,groupby系统.漏洞数.sum,不......
  • 如何实现简单的分布式链路功能?
    为什么需要链路跟踪为什么需要链路跟踪?微服务环境下,服务之间相互调用,可能存在A->B->C->D->C这种复杂的服务交互,那么需要一种方法可以将一次请求链路完整记录下来,否则排查问题不好下手、请求日志也无法完整串起来。如何实现链路跟踪假设我们从用户请求接口开始,每次请求需要有......
  • 旅游的时候,怎么安排计划
    快到十一了,又要旅游了。首先就是要提前定好酒店,可以到大众点评上搜索这个城市的酒店,比如五星级酒店,有时候五星的酒店并不比三星的酒店贵很多钱,比如最近我到杭州定的五星酒店,再怎么着也比全季强吧,在国庆假期,一天是六百元,因为包含了2顿早饭,所以总体而言还是十分实惠的。两顿早饭怎么......
  • Java 实现邮件发送
    importorg.apache.http.HttpEntity;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.entity.ContentType;importorg.apache.http.entity.StringEntity;importorg.apache.http.i......
  • 亚信科技AntDB数据库 高并发、低延迟、无死锁,深入了解AntDB-M元数据锁的实现
    AntDB-M在架构上分为两层,服务层和存储引擎层。元数据的并发管理集中在服务层,数据的存储访问在存储引擎层。为了保证DDL操作与DML操作之间的一致性,引入了元数据锁(MDL)。AntDB-M提供了丰富的元数据锁功能,然而高并发锁操作很容易出现锁竞争、等待、死锁的问题,AntDB-M具体提供了什么样......
  • C# 简单实现对字符串加密和解密
     C#简单实现对字符串加密和解密有两种方式,供参考:1///<summary>2///编译字符串3///</summary>4///<paramname="strUnicode"></param>5///<returns></returns>6publicstaticstringFromUnicodeToAscii(stringstrUnicode)7......
  • 成功实现FaceTime语音,FaceTime视频,FaceTime数据筛选,检测手机号是否开通FaceTime的
    FaceTime是苹果公司iOS和macOS(以前称MacOSX或OSX)内置的一款视频通话软件,通过Wi-Fi或者蜂窝数据接入互联网,在两个装有FaceTime的设备之间实现视频通话。其要求通话双方均具有装有FaceTime的苹果设备,苹果ID以及可接入互联网的3G/4G/5G或者Wi-Fi网络。 一、Windows电脑上部署......