前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >操作系统随记 —— 中断与异常

操作系统随记 —— 中断与异常

作者头像
繁依Fanyi
发布2023-05-07 19:32:20
3760
发布2023-05-07 19:32:20
举报
文章被收录于专栏:繁依Fanyi 的专栏
请添加图片描述
请添加图片描述

一、用户态与核心态

为了避免操作系统及其关键数据受到用户程序的破坏,通常需要将 CPU 的执行状态分成两种:用户态核心态

  • 用户态:又称目态,是用户程序执行时机器所处的状态,具有较低的特权指令(只能由操作系统内核部分使用,不允许用户直接使用的指令)。它只能执行规定的指令,只能访问指定的寄存器和存储器。
  • 核心态:又称管态、系统态,是操作系统管理程序执行时机器所处的状态,具有较高的特权,能够执行包括特权指令的一切指令,能访问寄存器和存储区。

通过划分核心态与用户态,这两类程序就被严格的区分了,从而在 CPU 执行时的优先级等将会有所不同。

二、中断与异常

在引入用户态与核心态这两种工作状态后,就需要考虑这两种状态之间的切换,让相关指令能够在用户态与核心态之间反复横跳。中断与异常就恰好能够解决这一问题,从而提高系统的资源利用率。

1、中断与异常的定义

中断(Interrupt)也称为外中断,是指来自 CPU 执行指令以外的事件的发生,比如设备发出的 I/O 结束中断,表示设备输入/输出处理已经完成,希望处理机能够向别的设备发出下一个输入/输出请求,同时让完成输入/输出后的程序继续执行。

异常(Exception)也称为内中断、例外或者陷入(trap),指源自 CPU 执行指令内部的事件,如程序的非法操作码、地址越界、算数溢出等等。

2、中断处理的过程

网上关于中断处理的过程有所不同,主要是其所占的软硬件角度不同,以及其所选的中断的开始不同,其原理都是大致相同的,主要分为以下部分:

请添加图片描述
请添加图片描述

⓪ 中断请求:某一中断源向 CPU 发起中断请求,对于外部中断 CPU 在当前指令最后一个时钟周期查询中断请求信号的。

硬件部分

① 关中断:CPU 响应中断后,首先要保护程序的现场状态,在保护现场的过程中,CPU 不应响应更高级中断源的中断请求;否则,现场保存不完整,中断结束后也就不能正确的恢复并执行现行程序。

② 保存断点:为了能够恢复到原来的程序,必须将原来的程序的断点(程序计数器 PC)保存起来。

③ 引出中断服务程序:取出中断服务程序的入口地址送入程序计数器 PC。

软件部分

④ 保存现场与屏蔽字:进入中断服务程序后,首先会保存现场(现场信息一般是指程序状态字寄存器 PSWR 和 某些通用寄存器的内容)。

⑤ 开中断:允许更高级的中断请求得到相应。

⑥ 执行中断服务程序:这是中断请求的目的。

⑦ 关中断:保证在恢复现场和屏蔽字时不被中断。

⑧ 恢复现场与屏蔽字:将现场和屏蔽字恢复到原来的状态。

⑨ 开中断、中断返回:中断服务程序的最后一条指令通常是一条中断返回指令,使其返回到原程序的断点处,以便继续执行原程序。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、用户态与核心态
  • 二、中断与异常
    • 1、中断与异常的定义
      • 2、中断处理的过程
        • 硬件部分
        • 软件部分
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档