ARM系统模式与arm管理员模式有何不同?

时间:2015-04-20 10:54:19

标签: arm embedded embedded-linux processor-architecture risc

为了将ARM处理器模式与x86操作模式(ring0到ring 3)进行比较,用户模式看起来就像ring3,运行用户空间程序。 但是我无法将ring0与系统模式或管理员模式联系起来。根据信息来源,似乎两种模式都可以很好地完成在特权模式下运行内核的工作。 我能找到的两种模式之间的唯一区别是:

  1. 寄存器13和14以管理员模式存储,而对于系统模式,所有15个寄存器都相同。
  2. 系统模式不能直接输入异常,而超级用户模式可以。
  3. 系统模式以某种方式防止链接寄存器损坏。
  4. 你可以解释一下这些模式之间的区别,来自x86背景的人可以理解吗?

    模式之间的微妙架构差异(如库存寄存器的数量)如何使其优于另一个?

1 个答案:

答案 0 :(得分:3)

我认为ARM ARM非常清楚(见下文),不要认为X86会考虑这种处理器模式允许你做什么或不做什么。您在操作系统中需要什么以及哪些模式有用或无用。

您拥有用户和系统,然后是异常模式。他们的限制记录在AFAIK中。较新的ARM具有更多功能/限制/保护等。

来自ARM ARM

  

大多数应用程序在用户模式下执行。当处理器是   在用户模式下,正在执行的程序无法访问某些程序   受保护的系统资源或更改模式,而不是通过导致   发生异常(请参阅第A2-16页的例外)。这允许一个   适当编写的操作系统来控制系统的使用   资源。用户模式以外的模式称为特权模式   模式。他们可以完全访问系统资源并可以更改模式   自如。其中五个被称为异常模式:

     

-FIQ

     

-IRQ

     

-Supervisor

     

-Abort

     

-undefined。

     

在发生特定异常时输入。他们每个人都有   一些额外的寄存器,以避免在破坏用户模式状态时   发生异常(有关详细信息,请参阅第A2-4页的寄存器)。

     

其余模式为系统模式,任何人都不输入   异常并且具有与用户模式完全相同的寄存器。   但是,它是一种特权模式,因此不受此限制   用户模式限制。它旨在供操作系统使用   需要访问系统资源但希望避免使用的任务   与异常模式相关的附加寄存器。避免   这样的使用可以确保任务状态不会被破坏   发生任何例外。

监督模式是你在进行svc或sys调用时所遇到的(同样的指令,我认为他们改变了svc的名称)。类似于dos天中的int 21h,这就是你如何从没有任何权限的用户模式,请求操作系统做某事。这会将控制切换到管理员模式,然后一旦处于管理员模式,您可以在那里处理或切换模式等...一旦切换到用户,但您无法切换。因此,例如,如果要设置用户堆栈,则无法在用户模式下轻松执行此操作,然后返回操作系统任务。所以你需要一个特权模式,如果没有别的用户注册访问权限。