操作系统运行环境之CPU状态与中断/异常处理概念与原理机制

文章中图片来源于网络,侵权告删。

一、处理器的状态基础(也叫模式)
1.CPU = 控制器 + 运算器 + 寄存器 + 高速cache
2.寄存器的分类:
用户可见寄存器:由高级语言编译器优化算法分配使用,为减少访问内存的次数
控制和状态寄存器:用于控制处理器的操作,通常由操作系统代码使用
(这是我们关注的重点)

二、控制和状态寄存器:
作用:
用于控制处理器的操作,如PC控制CPU执行哪条指令;
在某个特权级别下可以访问、修改
常见的控制和状态寄存器:

程序计数器:PC 记录将要执行的指令的地址
指令寄存器:IR 记录最近取除的指令
程序状态字:PSW 记录处理器的运行状态如条件码、模式、控制位等信息

在这里插入图片描述
三、操作系统需要的CPU状态(MODE)
1.内核态:运行内核代码
2.用户态:运行用户代码

在X86系统中,分为实模式和保护模式
其中实模式的中断处理和普通的过程调用没什么区别

指令系统划分:
特权指令:只能由操作系统使用
非特权指令:操作系统和用户都可以使用

特权指令:启动IO、内存清零、修改程序状态字、设置时钟、允许/禁止中断、停机等
非特权指令:控制转移、算术运算等

X86系统支持4个处理器特权级别:
在这里插入图片描述
R0:特权最高,可以直接访问所有资源;
R3:特权最低,必须通过系统调用陷入内核,才能访问资源,也就是通过操作系统访问。
linux实际上只选择了0和3两个特权级别。
用户态->内核态途径:唯一的途径是中断/异常/陷入机制
内核态->用户态途径:修改设置程序的状态字PSW即可

四、特殊的指令—访管指令(陷入指令):
内核态有时也被称为管理态,所以访问或者陷入内核 又被称为访管。

用户态->内核态途径:唯一的途径是中断/异常/陷入机制

陷入指令 == 访管指令
提供给用户程序的接口,用于切换到内核态,用于调用操作系统的功能
常见的有:int  trap  syscall  sysenter/sysexit

五、中断和异常机制概念:

有句话这样说: ”操作系统是由中断驱动的,事件驱动的“
主要作用:
1.及时处理设备发来的请求
2.捕获用户程序提出的请求
3.防止用户程序有意或者无意的破坏活动

中断/异常的概念:
1.定义:CPU对系统发生的某个事件做出的一种反应。
2.发生中断/异常CPU做什么反应:

1.暂停正在执行的程序
2.保留现场后自动转去执行相应事件的处理程序
(这里”自动“指的是 硬件去处理该异常或者中断)
3.处理完成后返回断点,继续执行被打断的程序

3.中断和异常的引入:
中断的引入:为了支持CPU和设备之间的并行操作

设备通过中断 的 方式 向CPU”报告“自己的事情做完了,让CPU决定处理之后的事情

异常的引入:表示CPU执行指令时本身出现的问题

如算术溢出、除零、地址越界、执行了陷入指令,此时CPU暂停当前工作,
转到错误处理程序或者执行系统调用

早期,中断和异常不作区分,也就是说,大概上可以混为一谈。

4.事件分类(中断+异常):
中断:也叫外中断

一般有I/O中断、时钟中断(定时器、时间片)、硬件故障(笔记本没电)

异常:也叫内中断

常见的有系统调用、页故障(如缺页异常)、保护性异常(越界访问)、断点指令(单步调试)
程序性异常(算术除零、算术溢出等等)

5.总结中断和事件的区别:
中断:都是一些CPU外部的事件引起的,是程序所不期望发生的
异常:由CPU正在执行的指令引发
在这里插入图片描述
异常包括:陷入+ 故障 + 中止

六、中断和异常机制原理:硬件与软件相互配合

1.硬件做什么:捕获中断源发出的中断/异常请求,然后将控制权交给处理器去执行特定的处理程序;(捕获响应)
2.软件做什么:执行处理程序。(处理)
3.中断寄存器:
在这里插入图片描述
4.中断向量表:
是一个内存单元,存放中断处理程序的入口地址和程序运行时所需处理机的状态字。
事先编写好这些中断处理程序,然后将入口地址存放在中断向量表中,并进行编号。
在这里插入图片描述
Linux的中断向量表:
在这里插入图片描述

前面提到了,X86系统的分为实模式和保护模式:

其中 实模式 使用的表就叫中断向量表

保护模式 使用的向量表 换了个名字 叫中断描述符表
 采用门描述符数据结构表示中断向量,本质上没什么太大差别

5.中断处理程序:
设计操作系统时,为每一类的中断/异常事件提前编号相应的处理程序,并设置好中断向量表。
基本流程:

系统运行被打断,去响应中断,中断硬件部件 将CPU控制权交给中断处理程序
(软件提前设置好,硬件机制来执行)
在中断处理程序中:
1.保存相关寄存器信息
2.分析中断/异常的具体原因
3.执行对应的处理功能
4.恢复现场,返回被事件打断的程序

六、实例
在这里插入图片描述在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/KingOfMyHeart/article/details/90173692