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