2-1 处理器状态(模式)中断与异常

一、处理器是由运算器、控制器、一系列的寄存器以及高速缓存构成

1. 两类寄存器:
              用户可见寄存器:高级语言编译器通过优化算法分配并使用,以减少程序访问内存的次数
              控制和状态寄存器:用于控制处理器的操作通常由操作代码使用

常见的控制和状态寄存器

程序计数器(PC:Program Counter),记录将要取出的指令的地址
              指令寄存器(IR:Insruction Register),记录最近取出的指令
              程序状态字(PSW:Program Status Word),记录处理器的运行状态码、模式、控制位等信息

2. CPU的状态(模式MODE)
           现在处理器通常将CPU状态设计划分为两种、三种、或者四种
           在程序状态字寄存器PSW中专门设置一位,根据运行程序对资源和指令的使用权限而设置不同的CPU状态

3. 特权指令和非特权指令
           操作系统需要两种CPU状态
                  内核态(kernel mode):运行操作系统程序
                  用户态(user mode):运行用户程序
            特权(privilege)指令:只能由操作系统使用、用户程序不能使用的指令
            非特权指令:用户程序可以使用的指令

4. CPU状态之间的转换(系统程序和用户程序的转换)
           用户态--->内核态
                  唯一途径--->中断/异常/陷入机制
           内核态--->用户态
                 设置程序状态字PSW
                  一条特殊的指令:陷入指令(又称访管指令)
                  提供给用户程序的接口,用于调用操作系统的功能(服务)

二、中断与异常(操作系统的驱动力)
       1. 中断/异常  对于操作系统的重要性
            就好比:汽车的发动机、飞机的引擎
            可以说 操作系统是由“中断驱动”或者“事件驱动”的

2. 主要作用
           及时处理设备发来的中断请求
           可使OS捕获用户程序提出的服务的请求
           防止用户程序执行过程中的破坏性活动等等...

3.  中断/异常的概念
            CPU对系统发生的某个事件做出的一种反应,事件的发生改变了处理器的控制流
            CPU暂停正在执行的程序,保留现场后自动转去执行相应事件的处理程序,处理完成后返回断电继续执行被打断的程序

4. 为什么引入中断与异常?
           中断的引入:为了支持CPU和设备之间的并行操作
           当CPU启动设备进入输入/输出后,设备便可以独立工作,CPU转去处理与此次输入/输出不相关的事情,当设备完成输入/输出后,通过CPU发中断报告此次输入/输出的结果,让CPU决定如何处理以后的事情

5. 异常的引入:表示CPU执行指令时本身出现的问题
           如算术溢出、清零、取数时的奇偶错误,访存地址越界或者执行了“陷入指令”等,这时硬件改变了CPU当前的执行流程,转到相应的错误处理程序或异常处理程序或执行系统调用
       6. 事件的划分
           中断(外中断):IO中断:在键盘上按了ctrl+c,网卡接到包,打印机读盘结束,、时钟中断:定时器到点了,cpu上运行的程序时间片、硬件故障:笔记本没有电了
            异常(内中断):系统调用,页故障、保护性异常,断点指令,其他程序异常(如算术溢出等)

类别 原因 异步/同步 返回行为
中断interrupt 来自I/O设备、其他硬件部件 异步 总是返回到下一跳指令
陷入Trap 有意识安排的 同步 返回到下一条指令
故障Fault 可恢复的错误 同步 返回到当前指令
终止Abort 不可恢复的错误 同步 不会返回

#中断是一种,异常是三种

时间: 2024-10-10 00:36:54

2-1 处理器状态(模式)中断与异常的相关文章

x86关于中断和异常的总结

<一>80386的中断和异常 8086/8088把中断分为内部中断和外部中断两大类.为了支持多任务和虚拟存储器等功能,80386把外部中断称为“中断”,把内部中断称为“异常”.与8086/8088一样,80386通常在两条指令之间响应中断或异常.80386最多处理256种中断或异常. 1.中断 对80386而言,中断是由异步的外部事件引起的.外部事件及中断响应与正执行的指令没有关系.通常,中断用于指示I/O设备的一次操作已完成.与8086/8088一样,80386有两根引脚INTR和NMI接受

中断和异常的处理

本文为<x86汇编语言:从实模式到保护模式> 第17章笔记 中断和异常 中断和异常概述 中断和异常的作用是指示系统中的某个地方发生一些事件, 需要引起处理器(包括正在执行中的程序和任务)的注意. 当中断和异常发生时, 典型的结果是迫使处理器将控制从当前正在执行的程序或任务转移到另一个历程或任务中去. 该例程叫做中断处理程序, 或者异常处理程序. 如果是一个任务, 则发生任务切换. 1. 中断(Interrupt) 中断包括硬件中断和软中断. 硬件中断是由外围硬件设备发出的中断信号引发的, 以请

ARM处理器工作模式

++++++++++++++++++++++++++++++++++++++++++ 本文转载自mr_raptor的专栏,感谢mr_raptor大神. http://blog.csdn.net/mr_raptor/article/details/6556157 ++++++++++++++++++++++++++++++++++++++++++ 1.1 ARM处理器工作模式 CPU的模式可以简单的理解为当前CPU的工作状态,比如:当前操作系统正在执行用户程序,那么当前CPU工作在用户模式,这时网

[国嵌笔记][021-022][ARM处理器工作模式]

[ARM处理器工作模式] 处理器工作模式 1.User(urs):用户模式,linux应用程序运行在用户模式 2.FIQ(fiq):快速中断模式 3.IRQ(irq):中断模式 4.Supervisor(svc):系统保护模式,linux内核运行在系统保护模式 5.Abort(abt):异常模式 6.Undefined(und):未定义指令模式 7.System(sys):系统模式 [ARM寄存器详解] ARM寄存器(37个) 通用寄存器(31个) 1.未分组通用寄存器(R0-R7) 2.分组通

一个操作系统的实现(9)-中断和异常

这节讲了中断与异常的一些基本概念.然后通过代码实现一个显示字符的中断和时钟中断. 实模式与保护模式下的中断有区别 保护模式下的中断与实模式下的中断有几点不同. 实模式下的中断向量表在保护模式下被IDT取代 实模式下可以使用BIOS中断,而保护模式下不能用 这里面出现了一个新的名词IDT,接下来就介绍什么是IDT. 中断描述符表(IDT,Interrupt Descriptor Table) 中断描述符表的作用 与GDT和LDT一样,IDT也是一个描述符表,IDT的描述符可以是下面三种之一: 中断

linux总结-第一讲-中断和异常

中断与异常 一.中断(广义):会改变处理器执行指令的顺序,通常与CPU芯片内部或外部硬件电路产生的电信号相对应 中断--异步的:由硬件随机产生,在程序执行的任何时候可能出现 异常--同步的:在(特殊的或出错的)指令执行时由CPU控制单元产生 我们用"中断信号"来通称这两种类型的中断 二.中断信号的作用 中断信号提供了一种特殊的方式,使得CPU转去运行正常程序之外的代码 当一个中断信号到达时,CPU必须停止它当前正在做的事,并且切换到一个新的活动 在进程的内核态堆栈保存程序计数器的当前值

【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)

作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42375701 相关资源下载 :  -- 三星 ARM Architecture Reference Manual 文档 : http://download.csdn.net/detail/han1202012/8324641 一. ARM 芯片类型 1. ARM 分类 (1) ARM 分类类型(芯片 | 核 | 指令架构) ARM 分类 : -- ARM 芯片类型

处理器执行模式+进程切换

大多数处理器至少支持两种执行模式.某些指令只能在特权模式下执行,包括读取或者改变诸如程序状态字之类控制寄存器的指令.原始IO指令和内存管理相关的指令.另外,有一部分内存区域仅在特权下可以被访问到. 非特权态常被称为用户态,这是因为用户程序通常在该模式下执行:特权态可称作系统态.控制态或者内核态,内核态指的是操作系统的内核,这是操作系统中包含重要系统功能的部分. 这样产生了两个问题:处理器如何知道它正在什么模式下执行以及如何改变这一模式.对第一个问题,程序状态字中有一个位表示执行模式,这一位应某些

中断与异常详解(二)

中断或异常发生之前 当 CPU 执行了当前指令之后,CS 和 EIP 这对寄存器中所包含的内容就是下一条将要执行 指令的逻辑地址.在对下一条指令执行前,CPU 先要判断在执行当前指令的过程中是否发生 了中断或异常. 如果发生了一个中断或异常 那么 CPU 将做以下事情 • 确定所发生中断或异常的向量i(在 0-255 之间). • 通过 IDTR 寄存器找到 IDT 表,读取 IDT 表第i项(或叫第i个门). • 分两步进行有效性检查:首先是“段”级检查,将 CPU 的当前特权级 CPL(存放