4

質問する前に、トピックに関する私の理解を述べます。

  1. Linux カーネル モードはARM スーパーバイザ モードに対応します。
  2. Linux ユーザー モードはARM ユーザーモードに対応します。
  3. カーネル モード(MMU が有効) では、Linux は物理アドレスではなく相対アドレスを使用します。つまり、物理アドレス = 相対アドレス - PAGE_OFFSET + PHYS_OFFSET
  4. ユーザー モード(MMU が有効) では、Linux は物理アドレスの代わりに仮想アドレスを使用します。つまり、物理アドレス = pte 、 pmd 、 pgd を使用した MMU Translation(Virtual Address)

質問:

  1. スーパーバイザー モードで MMU が有効になっていますか (カーネル アドレス用)。

  2. 有効になっている場合、スーパーバイザー モードとユーザー モードを変換する際に、同じ MMU が異なる方法で機能することを意味します。

  3. MMU が別のモードで別の方法で機能する場合、mmu 機能がさまざまなモードでどのように機能するかについての指針を教えてください。

前もって感謝します。

4

1 に答える 1

1

1: はい。MMU を有効にすると、すべてのモードで有効になります (ただし、セキュア/非セキュア状態で個別に行う必要がありますが、それは Linux の範囲を超えています)。

2: はい。特権 (カーネル) モードとユーザー モードで異なるアクセス許可を持つことができます。ARM1176 テクニカル リファレンス マニュアルには、これを示すやや古いが概念的に役立つ表があります。http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0333h/Caceaije.html

3: MMU はすべてのモードで同じように機能します。完全を期すために、「ドメイン」と呼ばれる概念があり、カーネルがアクセス許可チェックを完全にバイパスするために使用できます。ただし、これは最新のプロセッサでは推奨されておらず、ARM11 および Cortex-A プロセッサでは使用されなくなりました。

于 2012-04-07T14:33:01.470 に答える