procfsとsysfsの違いは何ですか?なぜファイルシステムで作られたのですか?私が理解したのは、procはシステムで実行されているプロセスに関する即時情報を保存することだけです。
答え1
最初(UNIX時)に、プログラムがシステムで実行されているプロセスを見つける方法は、カーネルメモリから直接プロセス構造を読み取ることでした(/dev/memを開き、生データを直接解釈する)。これが最初の「ps」コマンドがどのように機能するかです。時間が経つにつれて、いくつかの情報はシステムコールを介して提供されます。
しかし、/dev/memを介してシステムデータをユーザー空間に直接公開するのは悪い形式です。されたデータにアクセスします。プロセス属性を理解します。これは/ procファイルシステムです。 /proc を使用すると、カーネルの基本データ構造が変更されても、インタフェースと構造 (ディレクトリとファイル) を同じに保つことができます。以前のシステムよりも脆弱性がはるかに低く、スケーラビリティに優れています。
/ procファイルシステムは、元のプロセス情報と「ps」、「top」、「free」などのシステムユーティリティに必要ないくつかの主要なシステムプロパティを公開するように設計されています。ただし、使用が非常に簡単なため(カーネルやユーザースペースの観点から)、システム全体の情報を収集する章になります。また、設定を調整し、カーネルやさまざまなサブシステムの動作を制御するために使用される読み取り/書き込みファイルの取得を開始します。しかし、制御インタフェースの実装方法は一時的であり、/procはすぐに混乱しました。
sysfs(または/ sysファイルシステム)は、この混乱に構造を追加し、カーネルからユーザースペースにシステム情報と制御点(設定可能なシステムとドライバのプロパティ)を公開する統合された方法を提供するように設計されています。ドライバを登録すると、カーネルのドライバフレームワークはドライバの種類とそのデータ構造の値に基づいて/ sysの下にディレクトリを自動的に作成します。つまり、特定の種類のドライバはすべて、sysfsを介して公開されるのと同じ要素を持ちます。
多くのレガシーシステム情報と制御点はまだ/ procからアクセスできますが、すべての新しいバスとドライバはsysfsを介して情報と制御点を公開する必要があります。
答え2
procfsとsysfsの違いは何ですか?
proc
古く、ルールや構造はほとんどありません。ある時点で、私たちはこれがproc
混乱しすぎて新しいアプローチが必要であることに気づきました。
その後、sysfs
生成され、sysfs
デバイス情報のように新しいものが追加されます。
したがって、ある意味では同じことを行いますが、よりsysfs
構造化されています。
なぜファイルシステムで作られたのですか?
UNIXの哲学では、すべてが「ファイル」なので、ファイルのように動作するように生成されると言います。
私が理解したのは、procはシステムで実行されているプロセスに関する即時情報を保存することだけです。
これらの部品は常にそこにあり、決して移動しない可能性がありますsysfs
。
ただし、よりproc
古い、移動されていないコンテンツを見つけることができます。
答え3
procfsは何でも受け入れますfile_operations
が、sysfsはより制限的です。
procfsエントリは、、、などの
file_operations
各ファイルベースのシステムコールで何が起こるかを決定する関数ポインタを含む構造を受け取り、ここで任意の操作を実行できます。open
read
mmap
最小限の例:
sysfsは次のように制限されます。
show
と2つの方法だけを実装すればよく、store
Linuxはこれら2つの方法を使ってopen
、、、close
およびread
をwrite
実装します。lseek
また見なさい:プラットフォームドライバのsysfsプロパティにファイル操作をどのように関連付けますか? |スタックオーバーフロー- 緊密に統合
kobject
答え4
sysfsは、procfsがその情報をうまく処理できないため、デバイス情報を表示するために2.6カーネルリリースサイクル中に作成された仮想ファイルシステムです。
メモリなどはその種類の情報を表示することを意図していないため、移植できないため、sysfsに移植されませんでした。