相互作用

相互作用

LinuxでVFSが何であるかを理解しようとしています。次のイメージはVFSを示しています。

ここに画像の説明を入力してください。

私が確信できないのは、VFSがアプリケーションが通信し、VFSが適切なファイルシステムドライバと通信するプログラムなのか、それともVFSがファイルシステムドライバが実装する必要があるインタフェース/共通言語であるのか、実際にはアプリケーションがこのインタフェース/汎用言語を使用しています。ファイルシステムドライバと直接通信していますか?

答え1

VFSはカーネルのインターフェース層です。これは、使用されているファイルシステムに関係なく、アプリケーションがファイルシステムと通信できる統合インターフェースを提供します。したがって、、などopenwriteシステムコールはreadすべてVFSレイヤに入り、それを適切なファイルシステムに渡します。

ファイルシステムは、VFS レイヤに自分自身を登録し、VFS レイヤが使用できるように標準情報セットを提供します。これは、Linux上のすべてのファイルシステムが同様の概念(主にinode、ディレクトリエントリ、およびファイル)を実装する必要があることを意味します。

これはカーネルの詳細ドキュメント

答え2

VFSは、システムコールとファイルシステムドライバの間にあるカーネルの完全なソフトウェア層であり、ファイルシステム自体ではありません。

一般情報を提供します相互作用さまざまなファイルシステムタイプ。

次のコマンドを使用すると想像してください。

cp /usb/file /tmp/file

/usbfat32 USBにインストールされるファイルシステム/tmpですetx2

VFS 層はアプリケーションとファイルシステムの間に位置するため、コマンドはコピーを実行cpするためにファイルシステムを知る必要はありません。代わりに、次のcp一般的なシステムコールを使用してVFSと対話します。openwriteread

答え3

インターフェースと共通機能。

相互作用

ファイルシステムはこのインタフェースを実装する必要があります。

共通機能

すべてのファイルシステムが実装する必要があるものがありますが、実装は同じです。キャッシュ、シンボリックリンク巡回など。

(参考に私がやったことがないのでタイプミスがあるかもしれません)

関連情報