2

通常、MMU を使用しないシステムには MPU (メモリ保護ユニット) もありません。また、ユーザー モードとカーネル モードの区別もありません。そのような場合、CPU アドレス空間にマッピングされたハードウェアの一部を備えた MMU のないシステムがあると仮定すると、ユーザー空間からすべてのハードウェア リソースにアクセスできる場合、カーネルにデバイス ドライバーを配置することは本当に意味がありますか? ?

カーネルコードは、ユーザーコードよりもメモリをより細かく制御できますか?

4

1 に答える 1

3

はい、ucLinux をホストする MMU のないプラットフォームでは、通常の組み込み Linux 環境があるかのようにすべてを行うのが理にかなっています。ユーザー アプリケーションとサービスが通常のインターフェイス (syscall など) を通過し、OS がそれらのカーネル要求をデバイス ドライバー、ファイル システム、ネットワーク スタックなどにルーティングするようにするのは、よりクリーンな設計です。

このような状況では、カーネルがハードウェアを制御することはできませんが、実際のハードウェアは、カーネルで実行されているシステム ソフトウェアによってのみ操作される必要があります。ハードウェアへのアクセスを制限しないと、システムのリセットやメモリの破損などのデバッグが事実上不可能になります。このプラクティスにより、デザインの移植性も向上します。

例外は、プラットフォームの立ち上げと診断のために社内でのみ使用されるユーザー モードのデバッグ バイナリの場合です。

于 2016-01-27T20:32:39.057 に答える