GNU/Linux >> Linux の 問題 >  >> Linux

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

はい、しかしめったに役に立ちません。 32 ビット x86 システムでは、ioperm(2) を使用できます。 現在のプロセスをセットアップして、ポート I/O を直接実行できるようにするためのシステム コール。これは 64 ビット システムでは機能しないと思います。 lseek/read/write もできます /dev/port に対する組み合わせ これも同様にあまり移植性がないと思います。詳細については、http://tldp.org/HOWTO/IO-Port-Programming-2.html を参照してください。もちろん、これらのアプローチは両方とも、デバイス ドライバーを作成するよりもはるかに遅く、柔軟性に欠けます (/dev/port 最も遅い)。もちろん、これらのユーザー空間メカニズムでは、割り込みなどを処理することはできません。パフォーマンスが問題になる場合は、デバイス ドライバーを作成することになります。


あなたの推測は正しいです。カーネルは、ハードウェア要求を送信できる唯一のソフトウェアです。これは、Linux だけに当てはまるわけではありません。事実上、DOS よりも新しいオペレーティング システムでは、ハードウェアに直接アクセスすることはできません。なぜなら、あなたも疑っているように、これは非常に危険だからです。

ただし、独自のドライバーを作成することに問題はなく、ドキュメントも豊富に用意されています。たとえば、xatlantis のこのチュートリアルは最近 (重要です!) 良い情報源のようです。


Linux
  1. Linux でユーザー空間から物理アドレスにアクセスするには?

  2. カーネルスタックとユーザー空間スタック

  3. Linux でファイル名から空白を削除する

  1. VHD から Linux を起動できますか?

  2. 非ログイン ユーザーを作成するにはどうすればよいですか?

  3. Linux ユーザー アカウントのロックを解除できません

  1. LinuxでIDでユーザー名を検索するにはどうすればよいですか?

  2. プロセスがファイルを書き込めないようにする方法

  3. Wi-Fi ドライバーが緊張状態にならないようにするにはどうすればよいですか?