ユーザモードプログラムがカーネル空間メモリにアクセスしてIN命令とOUT命令を実行できるようにした場合、CPUモードの目的は無効になりますか?

ユーザモードプログラムがカーネル空間メモリにアクセスしてIN命令とOUT命令を実行できるようにした場合、CPUモードの目的は無効になりますか?

CPUがユーザーモードの場合、CPUは特権コマンドを実行できず、カーネルスペースメモリにアクセスできません。

そして、CPUがカーネルモードにあるとき、CPUはすべての命令を実行し、すべてのメモリにアクセスできます。

Linuxでは、ユーザーモードプログラムはすべてのメモリにアクセスでき、(使用して)特権コマンドと(使用しているようです)の両方を/dev/mem実行できるようになりました。INOUTiopl()

したがって、Linuxのユーザーモードプログラムは、カーネルモードができるほとんどのタスクを実行できます(私が考えるほとんどのタスク)。

ユーザーモードプログラムがこれらすべての機能を持つことを許可すると、CPUモードを持つ目的は無効になりますか?

ベストアンサー1

したがって、Linuxのユーザーモードプログラムは、カーネルモードができるほとんどのタスクを実行できます(私が考えるほとんどのタスク)。

まあ、すべてのユーザーモードプログラムは可能ではなく、適切な権限を持つプログラムのみが可能です。これはカーネルによって決まります。

/dev/mem一般的なファイルシステムのアクセス権とCAP_SYS_RAWIO機能で保護されています。iopl()また、ioperm()同じ能力によって制限されます。

/dev/memカーネル(CONFIG_DEVMEM)で完全にコンパイルすることもできます。

ユーザーモードプログラムがこれらすべての機能を持つことを許可すると、CPUモードを持つ目的は無効になりますか?

おそらく。これは、特権ユーザースペースプロセスで実行できる操作によって異なります。ユーザースペースプロセスは、/dev/sdaアクセス権(またはそれに対応する権限)がある場合、ハードドライブ全体を損傷する可能性があります。これは、ストレージアクセスを処理するファイルシステムドライバの目的を喪失しても同様です。

iopl()(i386でCPUの特権モードを活用して動作するという事実もあるので、彼らの目的を崩すとは言えません。)

おすすめ記事