前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >什么是中断机制?

什么是中断机制?

作者头像
陆道峰
发布于 2020-06-16 09:20:23
发布于 2020-06-16 09:20:23
1.8K0
举报

本文是操作系统系列第五篇,介绍操作系统中的中断机制。更多内容见公号机器学习与系统,欢迎与我互动~

概念

操作系统需要管理外设,但是外设的速度远远低于CPU的速度,所以我们需要一种机制来弥补这种速度鸿沟,提高CPU的效率。

为此我们引入了中断机制,让外设在需要操作系统处理外设相关事件的时候,能够主动通知操作系统,即打断操作系统和应用的正常执行,让操作系统完成外设的相关处理,然后在恢复操作系统和应用的正常执行。

当CPU收到中断或者异常的事件时,它会暂停执行当前的程序或任务,通过一定的机制跳转到负责处理这个信号的相关处理例程中,在完成对这个事件的处理后再跳回到刚才被打断的程序或任务中。

分类

  1. 异步中断(asynchronous interrupt),由CPU外部设备引起的外部事件如I/O中断、时钟中断、控制台中断等是异步产生的(即产生的时刻不确定),与CPU的执行无关。也称外部中断,简称中断(interrupt)。
  2. 同步中断(synchronous interrupt),在CPU执行指令期间检测到不正常的或非法的条件(如除零错、地址访问越界)所引起的内部事件称作,也称内部中断,简称异常(exception)。
  3. 陷入中断(trap interrupt),在程序中使用请求系统服务的系统调用而引发的事件,也称软中断(soft interrupt)。

中断

异常

系统调用

源头

外设

应用程序

应用程序

响应方式

异步

同步

异步或同步

处理机制

持续,对用户应用程序是透明的

杀死或者重新执行意想不到的应用程序指令

等待和持续

中断描述符表

也称中断描述符表(Interrupt Descriptor Table)。

在操作系统中,会预先设置一些中断处理函数,当CPU接收到中断时,会根据中断号去查找对应的处理函数,中断向量表就是记录中断号和处理函数映射关系的表。

中断处理机制如下:

中断、异常和系统调用都由中断向量表协调执行。

  1. 发生中断时,根据中断向量号查询中断向量表,根据里面的处理程序,协调设备驱动处理外部设备的中断请求
  2. 发生系统调用请求时,中断向量表查询系统调用表,然后执行对应的系统调用程序
  3. 发生异常时,查询中断向量表得到对应异常处理程序,处理异常

总结

中断机制是为了弥补CPU速度和外设速度数量级差异的机制,它的核心是中断向量表。本文只介绍概念和简单的机制,没有深入介绍中断过程中特权级转换等内容,有兴趣的同学可以查看清华大学的操作系统课程[1]。

参考资料

[1]操作系统课程: https://chyyuu.gitbooks.io/ucore_os_docs/content/lab1/lab1_3_3_2_interrupt_exception.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与系统 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
在VMware环境安装Ubuntu Server中遇到的无法安装问题
我们项目最近在测试pihole dns, 所以想要安装Ubuntu Server测试,结果发现报错。
繁华是客
2023/03/03
5.1K0
在 Linux 上使用网络配置工具 Netplan
多年以来 Linux 管理员和用户们以相同的方式配置他们的网络接口。例如,如果你是 Ubuntu 用户,你能够用桌面 GUI 配置网络连接,也可以在 /etc/network/interfaces 文件里配置。配置相当简单且可以奏效。在文件中配置看起来就像这样:
用户8989785
2021/09/10
2.6K0
Ubuntu 18.04 网卡配置
其网卡配置文件为:/etc/netplan/50-cloud-init.yaml,,netplan 描述文件采用了 yaml 语法,默认是用dhcp方式,如果要配置静态地址,则需要修改此文件的想关内容 参考:https://netplan.io/
大大大黑白格子
2020/03/27
6.3K0
Ubuntu 18.04 网卡配置
Ubuntu24.04 设置固定静态 IP
虚拟机安装 ubuntu24.04 server 最新版,为了防止每次重启电脑 dhcp 导致 ip 发生变更,所以需要固定一下,因为 centos 长期版已无,目前所有新机器我都切换到 ubuntu 服务器版本了,发现固定 ip 和 centos 还是有很大不同,所以做下备忘,快速查阅,并且安装 ubuntu 默认初始化磁盘分区不会使用全部空间,本文也给出装完系统后将所有剩余空间都叠加到根目录,以免后续空间不足。
Lcry
2025/03/06
1.1K0
Ubuntu 18.04 修改和添加额外IP地址
Ubuntu从18.04开始就使用Netplan来进行IP地址的管理,跟以前添加IP地址的方法有所区别;
会长君
2023/04/25
1.5K0
Ubuntu 18.04 修改和添加额外IP地址
如何在Ubuntu 20.04 LTS上配置静态IP地址
Ubuntu 从 17.10 开始,已放弃在 /etc/network/interfaces 里固定 IP 的配置,interfaces 文件不复存在,即使配置也不会生效,而是改成 netplan 方式 ,配置写在 /etc/netplan/01-netcfg.yaml 或者类似名称的 yaml 文件里。
用户8965210
2021/10/14
13K0
Netplan on Ubuntu 用于网络管理
在Ubuntu 18.04 平台上,其使用Netplan管理系统网络。Netplan 可以通过yaml 格式的配置文件(位于/etc/netplan),生成 NetworkManager 或 systemd-network 所需要的配置文件,用于配置网络。Ubuntu从17.10起,就使用netplan代替了之前的ifupdown的linux系统默认的网络管理工具。之前的网络配置,常编辑 /etc/network/interfaces文件,并重启网络服务;netplan的引入,使得网络配置更方便。
西湖醋鱼
2021/01/04
2K0
Netplan on Ubuntu 用于网络管理
【详解】ping得通外网IP,ping不通外网域名的解决办法
在日常的网络管理或开发过程中,有时会遇到一个奇怪的问题:能够通过IP地址成功ping通外网服务器,但使用域名时却无法ping通。这种情况下,问题通常不在于网络连接本身,而可能是DNS解析出现了问题。本文将探讨几种可能的原因及相应的解决方法。
大盘鸡拌面
2025/01/26
1.4K0
解决内网ubuntu20.04无法进行域名解析的问题
有时有些机器部署在内网,有关内网ubuntu如何通过fiddler代理执行apt命令、下载docker镜像的问题可以参考笔者的其他文章:https://blog.csdn.net/john1337/category_10165743.html
johnhuster的分享
2022/03/28
5.6K0
解决内网ubuntu20.04无法进行域名解析的问题
如何在 Linux 上刷新 DNS 缓存?
DNS(Domain Name System)是一个用于将域名解析为相应 IP 地址的网络服务。在 Linux 操作系统上,为了提高 DNS 查询的性能和效率,系统会缓存最近的 DNS 查询结果。但有时候你可能需要手动刷新 DNS 缓存,以便获取最新的 DNS 解析结果。本文将介绍如何在 Linux 上刷新 DNS 缓存,并提供详细的步骤。
网络技术联盟站
2023/06/19
8.9K0
如何在 Linux 上刷新 DNS 缓存?
DNS 解析问题:DNS 解析失败,无法访问域名
是山河呀
2025/02/05
4.8K0
ubuntu 17.10 设置固态IP
设置了基本的环境之后,需要设置固定的ip,要不然每次启动都变IP,我每次调整IP都得疯了。
魔王卷子
2019/05/28
1.1K0
Ubuntu 18.04 永久修改DNS的方法
发现每次在/etc/resolv.conf 修改DNS之后,重启服务器DNS就会重置为原始127.0.0.53。
yaohong
2021/06/01
25.7K0
Ubuntu 18.04 永久修改DNS的方法
关于ubuntu系统下使用netplan做网关配置无法生效的排查
在一次服务器例行重启维护后,发现网络无法联通,带外登录发现IP未能配置在网卡上。以下是一些排查步骤:
yiwei
2024/10/15
1.8K0
影响ubuntu18.04系统DNS的几个因素
/etc/resolv.conf 文件里面的dns服务器是实时生效的,发现ubuntu18.04和Centos系列的差别很大,ubuntu18.04是个软链接并建议不要去修改;centos系列是个配置文件,可以直接修改使用。
zd123
2021/07/29
7470
【教程】Warp/ZeroTrust 1.1.1.1 域名解析服务的安装与使用
        1.1.1.1是一款免费的域名解析服务,也就是域名服务器,由CloudFlare与APNIC共同拥有与维护。该服务于2018年4月1日发表启用,且被Cloudflare称为“互联网最快、以隐私优先的消费者端DNS服务”(the Internet's fastest, privacy-first consumer DNS service)。
小锋学长生活大爆炸
2023/05/26
24.5K2
【教程】Warp/ZeroTrust 1.1.1.1 域名解析服务的安装与使用
如何在Debian 9上将BIND配置为专用网络DNS服务器
管理服务器配置和基础架构的一个重要部分包括通过设置适当的域名系统(DNS),维护一种通过名称查找网络接口和IP地址的简便方法。使用完全限定的域名(FQDN)而不是IP地址来指定网络地址可以简化服务和应用程序的配置,并提高配置文件的可维护性。为您的专用网络设置自己的DNS是改善服务器管理的好方法。
穿鞋跑得快
2018/11/05
4.6K0
网络基本配置查询
前言:主要针对于Linux中网络/路由/通信通道类命令进行学习,加深对Linux的使用;
全栈工程师修炼指南
2022/09/28
2.8K0
网络基本配置查询
如何在 Linux 上刷新 DNS 缓存?
DNS(域名系统)是互联网的一项服务,它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不用记住能够被机器直接读取的 IP 数串。在使用域名访问网站时,电脑会将域名解析为 IP 地址。为了提高解析速度,操作系统通常会将解析过的地址存储在 DNS 缓存中。
网络技术联盟站
2024/06/13
1.8K0
如何在 Linux 上刷新 DNS 缓存?
ubuntu 18.04 设置静态ip方法
本教程将会演示如何设置Ubuntu16.04 Server版和Ubuntu18.04 Server版系统的静态固定IP地址。
yaohong
2019/09/26
3.8K0
推荐阅读
相关推荐
在VMware环境安装Ubuntu Server中遇到的无法安装问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档