ARM有8个基本工作模式
1. User : 用户模式
非特权模式,大部分任务执行在这种模式,运行在操作系统的用户态,没有权限去操作其他硬件资源,只能执行处理用户自己的数据,也不能切换到其他模式,要访问硬件资源或切换到其他模式,只能通过软中断或者产生异常。
当一个高优先级(fast) 中断产生时将会进入这种模式,用于高速数据处理及通道处理。
当一个低优先级(normal) 中断产生时将会进入这种模式,硬件产生中断信号之后就自动 都进入这种模式。
当复位【reset重启】或软中断【swi】指令执行时将会进入这种模式。
当存取异常时将会进入这种模式比如:segment fault,用于支持虚拟内存或者存储器保护,当用户访问非法地址的时候就进入这个模式。
6. Undef: 未定义模式
当执行未定义指令时会进入这种模式,用于支持硬件协处理器的软件仿真,cpu在指令译码阶段不能识别的指令操作时,进入未定义模式。
使用和User模式相同寄存器集的特权模式
是为了安全而扩展出的用于执行安全监控代码的模式;
说明1:除了User模式其他模式都是特权模式,在特权模式下所有硬件资源都可以访问。
linux:
1. 系统调用比如调用open、read 、write等系统函数,进入到内核模式,此时cpu处于svc Supervisor