让我们想象一个情况。有一个基于ARMv6的系统,例如RaspberryPi。系统和简化的操作系统上有两个正在运行的进程。
除了这个简单的案例之外,我还想更清楚地了解中断处理,操作模式切换和地址转换如何一起工作。
MMU已激活。
转换表是为三个虚拟地址空间(VAS)(进程A,进程B,OS)中的每一个构建的,并且转换是间接的,没有共享的区域。但是有一个例外。
- 每个VAS都具有直接映射的相同区域。
- 包含中断服务程序的区域直接从虚拟地址映射到物理地址。
- 此区域被标记为对于“未特权”模式不可访问,而对于“特权”模式则完全可访问。
我正确吗?
- 当用户进程A中断时,一个ISR开始使用进程A的地址转换表执行。由于以下原因,该ISR可能被放置在不可访问的区域中,但仍可以执行:
操作模式从USR(非特权)更改为IRQ(特权);
该地区可以直接翻译地址。
- 如果进程A或B或OS的转换表不具有该区域的ISR代码(或映射是间接的),则无法执行ISR。