ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。

我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin。在ARM的cpsr中,有一个I位和一个F位,分别用来禁止IRQ和FIQ。

今天我们看一看内核对长期处于睡眠状态的进程的一种监测机制:hung task。

hung task 案例

用 crash tool 解析出的结果如下:

1 垫话

x86架构相关的内存序及内存屏障知识,参阅《Intel SDM之Memory Ordering》。

本文为Arm Developer《Learn the architecture-Memory Systems,Ordering,and Barriers》的翻译(https://developer.arm.com/documentation/102336/0100?lang=en)。

本文非常之好,回答了我对于啥是“观察者”、啥是“Shareability domain”以及啥是“访问完成”的定义性困惑。那些讲内存屏障但不先讲清楚以上这些基础概念的文章都拉黑吧,因为作者只是在机械地背诵,而不是真正的理解了;或者作者压根就没思考过底层细节,因为但凡思考过,这些基础概念必然是跳不过去的。

相对而言,Intel spec行文要严谨、易读一些,Arm spec略显诘诎聱牙(当然本文严格意义上不算是spec,只是一篇guide),可能是语言表达习惯问题。

今天我们看一看内核锁机制引起的一类稳定性问题:soft lockup。

soft lockup 案例

用 crash tool 解析出的信息如下:

AMBA总线:

AMBA(Advanced Microcontroller Bus Architecture)总线是由ARM公司设计并提出的一种用于高性能嵌入式系统的标准。它因片上系统SoC(System on Chip)的广泛应用的取得了巨大的成功。