Sah*_*ngh 5 embedded arm embedded-linux processor-architecture risc
为了将ARM处理器模式与x86操作模式(ring0到ring 3)进行比较,用户模式看起来就像ring3,用户空间程序在其中运行.但是我无法将ring0与系统模式或管理员模式联系起来.根据信息来源,似乎两种模式都可以很好地完成在特权模式下运行内核的工作.我能找到的两种模式之间的唯一区别是:
你能解释一下这些模式之间的差异吗,来自x86背景的人可以理解吗?
另外,模式之间的细微架构差异(如库存寄存器的数量)如何使一个优于另一个?
我认为 ARM ARM 说得很清楚(见下文),不要认为 X86 只考虑这个处理器模式允许你做什么或不做什么。以及您在操作系统中需要什么以及哪些模式有用或无用。
您有用户和系统,然后是异常模式。他们的限制已记录在案。较新的 ARM 具有更多功能/限制/保护等。
来自 ARM ARM
大多数应用程序在用户模式下执行。当处理器处于用户模式时,正在执行的程序无法访问某些受保护的系统资源或更改模式,除非发生异常(请参阅第 A2-16 页上的异常)。这使得适当编写的操作系统能够控制系统资源的使用。除用户模式之外的模式称为特权模式。他们可以完全访问系统资源并可以自由更改模式。其中五种称为异常模式:
-FIQ
-IRQ
-导师
-中止
-不明确的。
当发生特定异常时输入这些内容。它们每个都有一些额外的寄存器,以避免在异常发生时破坏用户模式状态(有关详细信息,请参阅第 A2-4 页上的寄存器)。
剩下的模式是系统模式,任何异常都不会进入该模式,并且具有与用户模式完全相同的可用寄存器。然而,它是一种特权模式,因此不受用户模式的限制。它旨在供需要访问系统资源但希望避免使用与异常模式关联的附加寄存器的操作系统任务使用。避免此类使用可确保任务状态不会因任何异常的发生而损坏。
监督模式是当您进行 svc 或 sys 调用时所遇到的模式(我认为他们从 svc 更改了名称)是相同的指令。类似于 dos 时代的 int 21h,这就是您在没有任何权限的情况下从用户模式请求操作系统执行某些操作的方式。将控制权切换到管理员模式,然后一旦进入管理员模式,您就可以在那里处理它或切换模式等......一旦您切换到用户,尽管您无法切换出去。因此,例如,如果您想设置用户堆栈,则无法在用户模式下轻松执行此操作,然后返回操作系统任务。因此,您需要一种特权模式,如果没有其他模式,则具有用户注册访问权限。