ユーザープログラムが常にシステムコールを使用してデバイスドライバにアクセスするかどうか

ユーザープログラムが常にシステムコールを使用してデバイスドライバにアクセスするかどうか

Linuxでは、ユーザープログラムは常にオペレーティングシステムカーネルへのシステムコールを使用してデバイスドライバに間接的にアクセスしますか?

ドライバがロード可能およびアンロード可能モジュールとして実装されている場合、ユーザープログラムはカーネルへのシステムコールなしでドライバに直接アクセスできますか?

ベストアンサー1

ユーザーはシステム呼び出しを囲むライブラリ関数を呼び出します(通常のプログラマーにとっては、生のシステム呼び出しは非常にまれです)。モジュールコードはとにかくカーネルモードで実行されるため、ある時点でユーザー空間からカーネル空間へのコンテキスト切り替えが必要です。理想的には、ほとんどのモジュールは標準化されたインタフェース(デバイスノード、netlinkソケット、またはinetソケット)を使用しているため、ユーザー側の対話は主にシステムコールを介して行われread()ますwrite()ioctl標準のシステムコールではなく「追加」設定を扱うため、一般的です) )。バッファはコールの数を減らしますが、最終的にはシステムコールが含まれます。

おすすめ記事