VFS とローカル FS
Jul 26, 2023オペレーティング システム カーネルは、完全な I/O 制御プロセスを提供し、さまざまなモジュール間の I/O フローを管理するために多数のさまざまなデータ構造を準備する必要があります。
これらのモジュールには、VFS ディレクトリ層、ページ キャッシュ層、ファイル システム層、ネットワーク処理層、共通ブロック層、I/O スケジューラ層、ブロック デバイス ドライバ層、外部 I/O チャネル コントローラ ドライバ層が含まれます。これらの層は一緒になって、大規模で複雑な I/O プロトコル スタックを形成します。
プログラムが I/O デバイスをどのように使用するかについてはすでに理解していると思います。最も一般的な I/O デバイスは、次の 3 つのカテゴリに分類されます。 ネットワークカード デバイス、 ストレージデバイス(st2400mm0129)、キーボード/マウスなどのインタラクティブデバイス。これらのデバイスは、PCIE または USB ポートを介してシステムに接続できます。問題は、それらに送信されるデータがどのように生成され、デバイス ドライバーやデバイスに至るまで送信されるのかということです。
ユーザー モード プログラムがハードディスク ファンのセクター 0 の内容を読みたい場合、ハードディスク ファンによって提供される関数を呼び出すことができないため、ハードディスクを直接操作することはできません。 ハードディスク装置 ドライバーは、読み取りシステム コールを通じてカーネル コードにこれを実行することを委任することしかできません。
読み取りシステムコールのパラメータで、ユーザー側プログラムは少なくともカーネルに、どのデバイスを読み取るか、デバイスのどのバイトから読み取るか、読み取ったデータをメモリのどこに戻すか、およびその他のパラメータ(たとえば、読むときにどのように読むかなど)。ファイルの読み取りも同様です。