答え1
VFSはカーネルのインターフェース層です。これは、使用されているファイルシステムに関係なく、アプリケーションがファイルシステムと通信できる統合インターフェースを提供します。したがって、、などopen
のwrite
システムコールはread
すべてVFSレイヤに入り、それを適切なファイルシステムに渡します。
ファイルシステムは、VFS レイヤに自分自身を登録し、VFS レイヤが使用できるように標準情報セットを提供します。これは、Linux上のすべてのファイルシステムが同様の概念(主にinode、ディレクトリエントリ、およびファイル)を実装する必要があることを意味します。
これはカーネルの詳細ドキュメント。
答え2
VFSは、システムコールとファイルシステムドライバの間にあるカーネルの完全なソフトウェア層であり、ファイルシステム自体ではありません。
一般情報を提供します相互作用さまざまなファイルシステムタイプ。
次のコマンドを使用すると想像してください。
cp /usb/file /tmp/file
/usb
fat32 USBにインストールされるファイルシステム/tmp
ですetx2
。
VFS 層はアプリケーションとファイルシステムの間に位置するため、コマンドはコピーを実行cp
するためにファイルシステムを知る必要はありません。代わりに、次のcp
一般的なシステムコールを使用してVFSと対話します。open
write
read
答え3
インターフェースと共通機能。
相互作用
ファイルシステムはこのインタフェースを実装する必要があります。
共通機能
すべてのファイルシステムが実装する必要があるものがありますが、実装は同じです。キャッシュ、シンボリックリンク巡回など。
(参考に私がやったことがないのでタイプミスがあるかもしれません)