linux内核面试题[2]-Linux用户模式和内核模式
Kernel mode下运行的程序能够访问所有的memory,能够处理interrupt;
user mode的程序只能访问有限的memory,不能直接处理中断.
<1>ARM体系下的7种工作模式
当前程序状态寄存器Current Program Status Register (CPSR)的bit4:0决定的:
CPSR[4:0 | 处理器模式 | 可访问的寄存器 |
---|---|---|
0b10000 | User | R0~R14;PC;CPSR |
0b11111 | System | R0~R14;PC;CPSR |
0b10001 | FIQ | R0~R7;R8_FIQ-R14_fiq;PC;CPSR;SPSR_fiq |
0b10010 | IRQ | R0~R12;R13_irq-R14_irq;PC;CPSR;SPSR_irq |
0b10011 | Supervisor | R0~R12;R13_svc-R14_svc;PC;CPSR;SPSR_svc |
0b10111 | Abort | R0~R12;R13_abt-R14_abt;PC;CPSR;SPSR_abt |
0b11011 | Undifined | R0~R12;R13_und-R14_und;PC;CPSR;SPSR_und |
用户(User)模式:ARM处理器正常的程序执行状态
系统(System)模式:运行具有特权的操作系统任务
快速中断(FIQ)模式:用于处理紧急的中断,如高速数据传输或通道处理
普通中断(IRQ)模式:用于处理通用的中断,通常在硬件中断信号后进入该模式
管理(Supervisor)模式:操作系统使用的保护模式,是CPU上电后的默认模式,主要用于系统的初始化
数据访问终止(Abort)模式:用于虚拟存储及存储保护,当访问非法地址或读取无权限内存地址时进入该模式
未定义指令中止(Undifined)模式:当执行未定义的指令时进入该模式,用于支持硬件协处理器的软件仿真
<2>ARM体系下的2种工作状态
1> ARM state :此时处理器执行 32 位的字对齐的ARM指令。
2> Thumb state :此时处理器执行的 16 位的半字对齐的Thumb指令。
注:使用Thumb指令集,就是为了减小程序使用的空间
31 | 30 | 29 | 28 | 27 | . | . | . | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
N | Z | C | V | I | F | T | M4 | M3 | M2 | M1 | M0 |
M0-M4: ARM的7种工作模式
T: ARM CPU的2种工作状态,1:CPU处于Thumb状态;0表示处于ARM状态
F: FIQ快中断禁止位,1表示被禁止
I: IRQ中断禁止位,1表示被禁止
V: 溢出标志位(overflow)
C: 进位/借位/移位溢出标志位
Z: 运算结果是否为0
N: 运算结果是否为负数
bit 8-17:保留位
参考资料:
https://www.cnblogs.com/JmZd/p/8809997.html
https://blog.youkuaiyun.com/cosmoslhf/article/details/17282777