ARM 的编程模式和 7 种工作模式

ARM处理器具有7个工作模式,包括User、FIQ、IRQ、Supervisor、Abort、Undef和System模式,其中User是非特权模式,其余是特权模式。特权模式用于异常处理和系统管理,模式切换可通过代码或异常中断自动进行。异常包括中断和存取异常,是处理器执行流程中的异常情况。CPU设计多种模式以满足操作系统的安全性和功能需求。
摘要由CSDN通过智能技术生成

一、ARM的基本设定

  • ARM 采用的是32位架构.

  • ARM 约定:
    Byte : 8 bits
    Halfword :16 bits (2 byte)
    Word : 32 bits (4 byte)

  • 大部分ARM core 提供:
    ARM 指令集(32-bit)
    Thumb 指令集(16-bit )
    Thumb2指令集(16 & 32bit)

    ARM 的一个 CPU 上,能够同时提供、支持 3 种指令集。

    ARMv7 之后版本的 CPU,支持 Thumb2 指令集。对于普通指令,采用 Thumb2 16 bit 指令集,能够节省内存空间;对于异常等指令长度较长的操作,采用 Thumb2 32 bit 指令集。

  • Jazelle cores 支持 Java bytecode


二、ARM处理器工作模式

ARM 有7个基本工作模式

  • User : 非特权模式,大部分任务执行在这种模式;
  • FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式,此中断是快速中断;
  • IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式 ,此中断是普通中断;
  • Supervisor : 当复位或软中断指令执行时将会进入这种模式 ,此模式又称为管理模式;
  • Abort : 当存取异常时将会进入这种模式,如 CPU 读取内存失败,或者 CPU 写内存失败;
  • Undef : 当执行未定义指令时会进入这种模式,如 CPU 读取到不认识的指令;
  • System : 使用和 User 模式相同寄存器集的特权模式

七种工作模式的分类,可以记忆如下:
1、一个用户模式 User,和六个特权模式;
2、特权模式又分为 5 个异常模式 和 1 个系统模式 System;

在这里插入图片描述

  • 除 User(用户模式)是 Normal(普通模式)外,其他 6 种都是 Privilege(特权模式)。
  • Privilege 中除 Sys 模式外,其余 5 种为异常模式。
  • 各种模式的切换,可以是程序员通过代码主动切换(通过写 CPSR 寄存器);也可以是 CPU 在某些情况下自动切换。
  • 各种模式下权限和可以访问的寄存器不同。

其他书籍看到的解释

  • User:非特权模式,大部分任务执行在这种模式,如用户进程;
  • FIQ:当一个高优先级 (fast) 中断产生时将会进入这种模式;
  • IRQ:当一个低优先级 (normal) 中断产生时将会进入这种模式;
  • Supervisor:当复位或软中断指令执行时将会进入这种模式,如 uboot 过程;
  • Abort:当存取异常时将会进入这种模式;
  • Undef:当执行未定义指令时会进入这种模式;
  • System:使用和User模式相同寄存器集的特权模式,操作系统内核专用的模式;

在这里插入图片描述

除了用户模式之外其他 6 种处理器模式称为特权模式(Privileged Modes)。在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。其中,除 sys 系统模式外,其他 5 种特权模式又称为异常模式。

处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换。大多数的用户程序运行在用户模式下。这时,应用程序不能够访问一些受操作系统保护的系统资源。应用程序也不能直接进行处理器模式的切换。当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理过程中进行处理器模式的切换。这种体系结构可以使操作系统控制整个系统的资源。

当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式中都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器(保存了程序运行状态)不被破坏。

系统模式并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器。但是系统模式属于特权模式,可以访问所用的系统资源,也可以直接进行处理器模式切换。它主要供操作系统任务使用。通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用用户模式的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态不被破坏。


三、什么是异常

  • 正常工作之外的流程都叫异常;
  • 异常会打断正在执行的工作,并且一般我们希望异常处理完成后继续回来执行原来的工作;
  • 中断是异常的一种;

四、CPU为什么设计这些模式

  • CPU是硬件,OS是软件,软件的设计要依赖硬件的特性,硬件的设计要考虑软件需要,便于实现软件特性。
  • 操作系统有安全级别要求,因此CPU设计多种模式是为了方便操作系统的多种角色安全等级需要。

源自B站朱有鹏老师.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值