pdflush、kjournald、swadなどはどのように相互運用されますか?

pdflush、kjournald、swadなどはどのように相互運用されますか?

私は最近このアイデアを引き起こした質問を見ました。ここまたは Google パソコンで回答が見つかりません。基本的に私はカーネルI / Oアーキテクチャがどのように階層化されているかを理解したいと思います。たとえば、kjournald次に出荷されますかpdflush、それともその逆に出荷されますか?私の仮定pdflush(一括ストレージI / Oでより一般的です)は、低レベルに座って実際に書き込みを実行するために必要なSCSI / ATA /すべてのコマンドをトリガし、書き込み前によりkjournald高いレベルのファイルシステムデータ構造を処理することです。しかし、kjournaldファイルシステムのデータ構造と直接対話し、時々目をpdflush覚まし、kjournald他の理由で2つがまったく対話しないことも可能です。

オリジナル:Linuxカーネルの大容量リポジトリにI / Oをディスパッチするための基本アーキテクチャを可視化(グラフィックまたは説明)する方法が必要です。

ベストアンサー1

pdflushkswapd`の詳細を議論する前に、kjournald, andまず議論しているLinuxカーネルの背景知識を見てみましょう。

GNU/Linux アーキテクチャ

GNU/Linux のアーキテクチャは 2 つのスペースと考えることができます。

  • ユーザー
  • コア

存在する。 。 〜サイユーザースペースそしてカーネル空間GNU Cライブラリは()にありますglibc。これは、カーネルをユーザ空間アプリケーションに接続するシステムコールインタフェースを提供します。

カーネルスペースは3つのレベルにさらに細分化できます。

  • システムコールインターフェイス
  • アーキテクチャに依存しないカーネルコード
  • 建築関連コード

システムコールインターフェイス名前が示すように、glibcカーネルとのインタフェースを提供します。これアーキテクチャに依存しないカーネルコードVFS(Virtual File System)、VMM(Virtual Memory Management)などの論理ユニットで構成されています。これ建築関連コード特定のハードウェアアーキテクチャのプロセッサとプラットフォーム固有のコードのコンポーネント。

GNU/Linux アーキテクチャ図

                                 Gnu / linuxアーキテクチャ用ss。

この記事の残りの部分では、カーネル空間のVFSおよびVMM論理デバイスに焦点を当てます。

GNU/Linux カーネルのサブシステム

                                    カーネルコムのss

VFSサブシステム

GNU/Linux カーネルがどのように構成されるかという高度な概念により、VFS サブシステムをより深く掘り下げることができます。このコンポーネントは、最終的に物理デバイス(HDDなど)のファイルシステム(ext3 / ext4 /など)にマッピングされているさまざまなブロックストレージデバイスへのアクセスを提供します。

VFS図

vfs ss

この図は、write()ユーザー プロセスが VFS を通過し、最終的にデバイス ドライバに降りて物理記憶媒体に書き込む方法を示しています。ここが私たちが初めて会った場所ですpdflush。これは、ダーティデータとメタデータバッファブロックをバックグラウンドからストレージメディアにフラッシュするのに役立つデーモンプロセスです。図にはこの内容は表示されませんが、kjournaldその横にpdflushダーティログブロックをディスクに書き込む同様の操作を実行する別のデーモンがあります。メモ:ログブロックは、ext4やJFSなどのファイルシステムが、ファイルが変更される前にディスクの変更を追跡する方法です。

上記の詳細については、以下で詳しく説明します。この紙

write()ステップの概要

write()I / O Sybsystem操作の簡単な概要を提供するために、ユーザースペースアプリケーションで呼び出されるこの関数の例を使用します。

  1. write()プロセスはシステムコールを介してファイルの書き込みを要求します。
  2. カーネルはファイルにマップされたページキャッシュを更新します。
  3. pdflush カーネルスレッドは、ページキャッシュをディスクにフラッシュする役割を担います。
  4. ファイルシステム階層は、各ブロックバッファを1つに統合しますbio struct(23ページの1.4.3「ブロックレイヤー」を参照してください。) ブロックデバイス階層に書き込み要求を送信します。
  5. ブロックデバイス層は、上位層から要求を受け取り、I / Oエレベータ操作を実行し、その要求をI / O要求キューに入れます。
  6. デバイスドライバ(たとえば、SCSIまたは他のデバイス固有のドライバ)は書き込み操作を担当します。
  7. ディスク装置ファームウェアは、ヘッド検索、回転、データをプラッタのセクタに転送するなどのハードウェア操作を実行します。

VMMサブシステム

引き続きナビゲーションを続けながら、VMMサブシステムを調べることができます。メインメモリ(RAM)、スワップ領域、物理記憶媒体間の一貫性を維持する役割を果たすコンポーネントです。一貫性を維持する主なメカニズムはですbdflush。メモリページはダーティページと見なされるため、記憶媒体のデータと同期する必要があります。このデータとストレージメディアの同期はデーモンプロセスbdflushと連携してpdflush調整されます。

VMM図

                VMMのSS

交換

システムメモリが足りなくなったりカーネルスワップタイマーが切れたりした場合、kswapdデーモンはページを解放しようとします。利用可能なページ数がそれ以上になる限り、何もしませんfree_pages_highkswapdしかし、利用可能なページ数が下がると、kswapdページ回収プロセスが開始される。kswapdページが再配置の対象としてマークされたら、デーモンを介してストレージメディアへbdflushpdflush未解決の変更を同期させるように注意してください。

参考資料と追加資料

おすすめ記事