ユーザー空間からハードウェアに直接アクセスできますか?

ユーザー空間からハードウェアに直接アクセスできますか?

職場には、DOSソフトウェアによって制御される組み込みデバイスがあります。私の使命は、次世代ハードウェアからDOS代替オペレーティングシステムとしてLinuxの使用を評価することです。私の研究によると、DOSは選択に応じて潜在的に危険なタスクを実行することができるまったく異なるタイプのオペレーティングシステムです。私が理解したように、ハードウェアに直接アクセスするにはカスタムドライバを作成する必要があります。上司の好奇心を満たすためには、次のことを知っておく必要があります。ユーザー空間からハードウェアに直接アクセスできますか???

私の推測は「いいえ」ですが、私よりも多くの知識を持っている方々の意見を聞きたいです。

ベストアンサー1

はい、しかしほとんど役に立ちません。 32ビットx86システムでは、システムioperm(2)コールを使用して、現在のプロセスがポートI / Oを直接実行できるように設定できます。私はこれが64ビットシステムでは機能しないと思います。lseek/read/writeコンボもできますが/dev/port、私の考えには携帯性が落ちます。バラよりhttp://tldp.org/HOWTO/IO-Port-Programming-2.html詳しくはこちらをご覧ください。もちろん、どちらのアプローチもデバイスドライバを書くよりはるかに遅く、柔軟性が低くなります(/dev/port最も遅い)。もちろん、これらのユーザースペースメカニズムのどれも割り込みやそのようなものを処理できません。パフォーマンスが問題であれば、最終的にデバイスドライバを作成します。

おすすめ記事