ユーザー空間カーネル通信に/ devと/sysはいつ使用されますか?

ユーザー空間カーネル通信に/ devと/sysはいつ使用されますか?

私はLinuxドライバの開発が初めてで、他の初心者がカーネルの開発を始めるのに役立つと思う概念的な質問があります。

私は「Linux Device Drivers」という本を読んでいて、第1章を終えました。第3巻。これまで、私はフォルダ内のファイルにopencloseおよびその他のコマンドを実行して、/devユーザースペースがカーネル機能にアクセスできることを確認しました。

制御を共有するもう1つの方法はファイルを介することです/sys。ここでファイルの読み書きはsysドライバに渡すことができます。

各アプローチのユースケースが何であるかを知りたいです。同じことを行う2つの方法ですか?他に関連して一つに制限はありますか?誰かが他のものよりも役に立つかもしれないいくつかの実際のケースを共有できますか?

私はここで別の質問を読んで説明devしますsys。これは役に立ちますが、2つの違いと用途をより深く理解したいと思います。

ベストアンサー1

おおよその:

/dev初期のUnixシステムでカーネルと対話する唯一の方法であったデバイスノードを含みます。その種類は二つありますが、詰まった機器と特徴機器。これらのAPIは、ブロックベースのI / O(一種のディスク)または文字ベースのI / O(シリアルポートなど)を許可するのに適しています。

/sys(および/proc)は後で追加され、おそらく次の影響を受けた可能性があります。計画9オペレーティングシステム読み込み時にカーネルモジュールの内部状態を記述または書き込むときに内部状態を設定するテキストは、ファイルエントリに含まれる完全なディレクトリサブツリーを提供します。

したがって、一般的なアプリケーションは次のようになります。

特定のストレージデバイス用のカーネルドライバを作成しますか?ノードを使用して/devデバイス自体にアクセスする方法、またはアイテムを使用して/sysストレージ/procにアクセスする方法を微調整します。

おすすめ記事