中断和异常的概念

简介: 中断Interruption异常Exception在操作系统中引入核心态和用户态这两种工作状态后,就需要考虑这两种状态之间如何切换。操作系统内核工作在核心态,而用户程序工作在用户态。

在操作系统中引入核心态用户态这两种工作状态后,就需要考虑这两种状态之间如何切换。操作系统内核工作在核心态,而用户程序工作在用户态。但系统不允许用户程序实现核心态的功能,而它们又必须使用这些功能。因此,需要在核心态建立一些“门”,实现从用户态进入核心态。在实际操作系统中,CPU运行上层程序时唯一能进入这些“门”的途径就是通过中断或异常

当中断或异常发生时,运行用户态的CPU会立即进入核心态,这是通过硬件实现的(例如,用一个特殊寄存器的一位来表示CPU所处的工作状态,0表示核心态,1表示用户态。若要进入核心态,只需将该位置0即可)。

中断是操作系统中非常重要的一个概念,对一个运行在计算机上的实用操作系统而言,缺少了中断机制,将是不可想象的。

中断(Interruption)

中断(Interruption),也称外中断,指来自CPU执行指令以外的事件的发生,如:

  • 设备发出的I/O结束中断,表示设备输入/输出处理已经完成,希望处理机能够向设备发下一个输入/输出请求,同时让完成输入/输出后的程序继续运行。
  • 时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。

这一类中断通常是与当前程序运行无关的事件,即它们与当前处理机运行的程序无关。

异常(Exception)

异常(Exception),也称内中断、例外或陷入(Trap),指源自CPU执行指令内部的事件,如:

程序的非法操作码、地址越界、算术溢出、虚存系统的缺页以及专门的陷入指令等引起的事件。

对异常的处理一般要依赖于当前程序的运行现场,而且异常不能被屏蔽,一旦出现应立即处理。关于内中断和外中断的联系与区别如图1-2所示。

这里写图片描述

图1-2 内中断和外中断的联系与区别

Wu_Being博客声明:本人博客欢迎转载,请标明博客原文和原链接!谢谢!
《中断和异常的概念》:
http://blog.csdn.net/u014134180/article/details/78418428

Wu_Being 吴兵博客接受赞助费二维码

如果你看完这篇博文,觉得对你有帮助,并且愿意付赞助费,那么我会更有动力写下去。

目录
相关文章
|
人工智能 IDE 开发工具
Studio Bot - 让 AI 帮我写 Android 代码
Studio Bot - 让 AI 帮我写 Android 代码
692 1
|
存储 算法
树(Tree) - 概念与基础
树(Tree) - 概念与基础
302 2
|
存储 数据安全/隐私保护 索引
Windows Server 各版本搭建文件服务器实现共享文件(03~19)
Windows Server 各版本搭建文件服务器实现共享文件(03~19)
|
存储 Kubernetes 调度
【K8S系列】Pod详解
【K8S系列】Pod详解
978 0
|
8月前
|
关系型数据库 MySQL 中间件
MySQL 中如何实现分库分表?常见的分库分表策略有哪些?
在MySQL中,分库分表(Sharding)通过将数据分散到多个数据库或表中,以应对大量数据带来的性能和扩展性问题。常见策略包括:哈希分片(分布均匀,查询效率高)、范围分片(适合范围查询)、列表分片(适用于特定值查询)、复合分片(灵活性高)和动态分片(灵活应对负载变化)。每种策略各有优劣,需根据业务需求选择。常用工具如MyCAT、ShardingSphere和TDDL可简化实现过程。
|
10月前
|
运维 网络协议
IP地址与子网划分:IPv4与IPv6地址规划及子网掩码计算详解
IP地址与子网划分:IPv4与IPv6地址规划及子网掩码计算详解
2778 3
|
数据采集 自然语言处理 搜索推荐
一篇博客带你领略学习Python的第三方库---如何获取和安装第三方库,关于三种常见第三方库的下载和讲解(pyinstall库,jieba库,wordcloud库),更多第三方库的分类介绍
一篇博客带你领略学习Python的第三方库---如何获取和安装第三方库,关于三种常见第三方库的下载和讲解(pyinstall库,jieba库,wordcloud库),更多第三方库的分类介绍
2111 1
|
存储 缓存 Linux
Linux 系统调用深思:从原理到实战
Linux 系统调用深思:从原理到实战
468 1
|
存储 算法 Java
超详细的Guava RateLimiter限流原理解析
限流是保护高并发系统的三把利器之一,另外两个是缓存和降级。限流在很多场景中用来限制并发和请求量,比如说秒杀抢购,保护自身系统和下游系统不被巨型流量冲垮等。
JAVA实现开根号的两种方式:二分法以及牛顿迭代法
JAVA实现开根号的两种方式:二分法以及牛顿迭代法
403 0