当前位置: 首页 > news >正文

操作系统的中断与异常(408常考点)

为了进行核心态和用户态两种状态的切换,引入了中断机制。

中断是计算机系统中的一种事件,它会打断CPU当前正在执行的程序,转而执行另一个程序或者执行特定的处理程序。中断可以来自外部设备(如键盘、鼠标、网络等)、软件(如操作系统或应用程序)或者由CPU内部产生(如指令错误、内存访问错误等)。

异常是指在程序执行过程中出现的一些不正常情况,如除零错误、内存访问越界、非法指令等。当异常发生时,CPU会立即中断当前程序的执行,并根据异常类型跳转到相应的异常处理程序进行处理。

总的来说,中断和异常都是计算机系统中用来处理突发事件和错误情况的机制,它们可以保证系统的稳定性和可靠性。

一、中断(外中断)

来自于CPU执行指令之外的事件发生导致中断,例如I/O中断,时钟中断等。

中断处理过程(408重要常考点!)

第一部分由中断隐指令(硬件)完成:

1. 关中断

2. 保存断点

3. 中断服务程序寻址

第二部分由中断服务程序(软件)完成:

4.保存现场和屏蔽字

5.开中断

6.执行中断服务程序

7.关中断

8.恢复现场和屏蔽字

9.开中断

10.中断返回

二、异常(内中断)

在操作系统中,异常(Exception)(也称内中断或软中断)通常是指由程序执行过程中的错误或异常引起的中断。当程序出现异常时,操作系统需要采取相应的措施来保证系统的稳定性和安全性。

它们可以由以下几种情况触发:

  1. 算术异常:当程序进行算术运算时,如除以零或溢出等错误情况发生时,会触发算术异常。

  2. 内存访问异常:当程序试图访问不存在的内存地址、非法的内存操作或访问受保护的内存区域时,会触发内存访问异常。

  3. 指令异常:当程序执行非法或未定义的指令时,会触发指令异常。

  4. 栈异常:当程序的函数调用堆栈出现错误或溢出时,会触发栈异常。

内中断的处理通常由操作系统提供的异常处理机制来处理。当发生内中断时,操作系统会暂停当前正在执行的程序,并跳转到相应的异常处理程序进行处理。异常处理程序可以采取一系列的措施,如终止程序执行、进行错误恢复、提供错误信息等。

相关文章:

操作系统的中断与异常(408常考点)

为了进行核心态和用户态两种状态的切换,引入了中断机制。 中断是计算机系统中的一种事件,它会打断CPU当前正在执行的程序,转而执行另一个程序或者执行特定的处理程序。中断可以来自外部设备(如键盘、鼠标、网络等)、软…...

linux下的工具---vim

一、了解vim 1、vim是linux的开发工具 2、vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行…...

代码随想录算法训练营第六十天|84. 柱状图中最大的矩形

LeetCode 84. 柱状图中最大的矩形 题目链接:84. 柱状图中最大的矩形 - 力扣(LeetCode) 和接雨水还挺像的。 代码: #python class Solution:def largestRectangleArea(self, heights: List[int]) -> int:heights.insert(0, 0…...

P14 C++局部静态变量static延长生命周期

目录 01 前言 02 变量的作用域与生命周期 2.1 什么是作用域: 2.2 什么是变量的生命周期: 03 局部静态 3.1非静态变量例子 3.2静态变量例子 04 全局变量 05 后话 01 前言 在前几期里,我们了解了static关键字在特定上下文中的含义。 …...

C语言:写一个函数,求字符串的长度,在main函数中输入字符串并输出其长度(指针)

分析: 在程序中,定义一个函数 fix,该函数使用指针变量来访问字符串中的每个字符,并计算出字符串的长度。fix 函数的参数为指向 char 类型的指针变量 p,表示需要计算长度的字符串。 在主函数 main 中,定义一…...

CentOS7安装Docker运行环境

1 引言 Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,…...

单片机调试技巧--栈回溯

在启动文件中修改 IMPORT rt_hw_hard_fault_exceptionEXPORT HardFault_Handler HardFault_Handler PROC; get current contextTST lr, #0x04 ; if(!EXC_RETURN[2])ITE EQMRSEQ r0, msp ; [2]0 > Z1, get fault context from h…...

分布式锁之基于redis实现分布式锁(二)

2. 基于redis实现分布式锁 2.1. 基本实现 借助于redis中的命令setnx(key, value),key不存在就新增,存在就什么都不做。同时有多个客户端发送setnx命令,只有一个客户端可以成功,返回1(true);其他…...

python中%s的用法(字符串变量赋值办法),长字符串换行办法

参考: http://wap.mobiletrain.org/about/BBS/142752.html https://blog.csdn.net/PolarisRisingWar/article/details/131134627 https://baijiahao.baidu.com/s?id1756094563884490493&wfrspider&forpc 字符串变量赋值 "Hello, %s. Today is %s.&q…...

【Mybatis】预编译/即时sql 数据库连接池

回顾 Mybatis是一个持久层框架.有两种方式(这两种方式可以共存) 1.注解 2.xml 一.传递参数 以使用#{} 来接受参数为例 (以上两种方式一样适用的) 1)传递单个参数 #{} 可以为任意名称 2)多个参数 默认的参数名称就是接口方法声明的形参 3)参数为对象 默认给每个对象的每个属性都…...

物联网AI 无线连接学习之WiFi基础篇 802.11协议发展

学物联网,来万物简单IoT物联网!! 前言 随着物联网行业不断发展,WiFi技术的发展在其中起着非常关键的作用,也是我们日常生活中使用非常广泛的无线网络技术之一,现在我们随便买一个家用电子产品&#xff0c…...

FreeRTOS-队列Queue

队列Queue 队列Queue可以用在“任务到任务”、“任务到中断”、“中断到任务”直接传输信息。 队列的阻塞访问(可指定超时时间) 只要知道队列的句柄,任务、ISR都可以读、写该队列。任务读写队列时,如果读写成功了就马上进入就绪态…...

车内总线通信技术简述

1. 前言 本文主要分享一些汽车总线通信技术(CAN、CANFD、LIN、Flex Ray、MOST、LVDS、TTP/C、Ethernet),希望对大家能有所帮助。 2. 多种汽车总线通信技术 2.1 CAN CAN(Controller Area Network)全称为“控制器局域…...

6.2 Windows驱动开发:内核枚举SSSDT表基址

在Windows内核中,SSSDT(System Service Shadow Descriptor Table)是SSDT(System Service Descriptor Table)的一种变种,其主要用途是提供Windows系统对系统服务调用的阴影拷贝。SSSDT表存储了系统调用的函数…...

实时LCM的ImgPilot搭建部署

ImgPilot是具有实时潜在一致性模型(LCM)功能的图像试点 下载源码 GitHub - leptonai/imgpilot: Image pilot with the power of Real-Time Latent Consistency Modelhttps://github.com/leptonai/imgpilot安装前端web cd imgpilot npm install 安装…...

开源与闭源:大模型未来的发展之争

在当今数字化时代,开源与闭源软件一直是技术界争论的热点话题。随着人工智能技术的快速发展,特别是大模型(如GPT-4等)的广泛应用,这个辩论在大模型技术的背景下变得更加引人注目。本文将探讨开源与闭源的优劣势比较&am…...

linux系统初始化本地git,创建ssh-key

step1, 在linux系统配置你的git信息 sudo apt install -y git//step1 git config --global user.name your_name // github官网注册的用户名 git config --global user.email your_email //gitub官网注册绑定的邮箱 git config --list //可以查看刚才你的配置内容…...

JDBC 操作 SQL Server 时如何传入列表参数

本文是作为将要对 PostgreSQL 的 in, any() 操作的一个铺垫,也是对先前用 JDBC 操作 SQL Server 的温习。以此记录一下用 JDBC 查询 SQL Server 时如何传递一个列表参数。比如想像一下查询语句 select * from users where id in (?) 我们是否能给这里的问题参数传递…...

[算法总结] - 蓄水池采样算法

问题描述 在长度为N的数组中,随机等概率选取K个元素,如何实现这个随机算法。 思路很简单,生成一个[0, N]的随机数index,然后返回index上的数值即可。 但是,如果输入是一个长度未知的数组比如stream,先遍历…...

【Dockerfile】将自己的项目构建成镜像部署运行

目录 1.Dockerfile 2.镜像结构 3.Dockerfile语法 4.构建Java项目 5.基于Java8构建项目 1.Dockerfile 常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。 而要自定义镜像,就必须先了解镜像的结构才行。 2.镜像结构 镜…...

Go反射reflect包高级用法

Go语言反射机制探秘:深入reflect包高级用法 Go语言的反射机制通过reflect包为开发者提供了强大的运行时类型检查与操作能力。尽管反射会带来一定的性能开销,但在需要动态处理类型、实现泛型逻辑或构建框架时,它往往是不可替代的工具。本文将…...

C++ 智能指针循环引用问题剖析

C智能指针循环引用问题剖析 在现代C开发中,智能指针是管理动态内存的重要工具,能够有效避免内存泄漏。当多个智能指针相互引用时,可能形成循环依赖,导致资源无法释放。本文将深入剖析循环引用的成因、影响及解决方案,…...

SQL检查开发提效:sql-lint让数据库操作更可靠

SQL检查开发提效:sql-lint让数据库操作更可靠 【免费下载链接】sql-lint An SQL linter 项目地址: https://gitcode.com/gh_mirrors/sq/sql-lint 当你在深夜排查线上SQL错误时,当团队因SQL风格不统一争论时,当执行DELETE语句忘记WHERE…...

StructBERT中文相似度模型实操手册:如何扩展为‘单句vs百句’本地向量检索服务

StructBERT中文相似度模型实操手册:如何扩展为‘单句vs百句’本地向量检索服务 1. 项目简介与核心价值 StructBERT中文相似度模型是基于阿里达摩院开源的大规模预训练模型开发的本地化语义匹配工具。这个工具能够将中文句子转化为高质量的特征向量,通过…...

ozz-animation工具集完整使用手册:从模型导入到动画导出

ozz-animation工具集完整使用手册:从模型导入到动画导出 【免费下载链接】ozz-animation Open source c skeletal animation library and toolset 项目地址: https://gitcode.com/gh_mirrors/oz/ozz-animation ozz-animation是一款开源C骨骼动画库和工具集&a…...

【配网故障恢复+重构】主动配电网故障恢复的重构与孤岛划分统一模型Matlab实现

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...

保姆级教程:用Docker Compose和Nginx给内网Nexus仓库上HTTPS(自签证书避坑指南)

内网Nexus私有仓库HTTPS全栈实战:从Docker部署到证书信任闭环 当开发团队规模超过10人时,私有制品仓库就成了刚需。上周帮某金融客户部署内网Nexus时,发现Maven 3.8.1强制HTTPS的策略让很多工程师措手不及——内网没有公网域名,Le…...

OFA图像语义蕴含模型实战:基于Python的英文图文关系判断

OFA图像语义蕴含模型实战:基于Python的英文图文关系判断 用AI看懂图片和文字之间的关系,原来这么简单 你有没有遇到过这样的情况:看到一张图片和一段英文描述,想要快速判断它们是否匹配?比如电商平台需要自动审核商品图…...

Pixel Language Portal效果展示:实时翻译+st.balloons()庆祝动画+HP状态变化的沉浸式交互录屏

Pixel Language Portal效果展示:实时翻译st.balloons()庆祝动画HP状态变化的沉浸式交互录屏 1. 像素冒险工坊的诞生 在传统翻译工具千篇一律的界面中,Pixel Language Portal(像素语言跨维传送门)带来了全新的视觉冲击。这款基于…...

Qwen3-VL-8B在软件测试中的应用:自动生成测试用例与缺陷报告截图分析

Qwen3-VL-8B在软件测试中的应用:自动生成测试用例与缺陷报告截图分析 最近和几个做软件测试的朋友聊天,大家普遍都在吐槽一件事:写测试用例和缺陷报告太费时间了。尤其是现在敏捷开发节奏快,版本迭代频繁,测试人员不仅…...