1. 概要

このチュートリアルでは、バッファメモリとキャッシュメモリ、およびそれらの違いについて学習します。 ご存知のように、Linuxファイルシステムのバッファーとキャッシュを使用すると、入出力(I / O)操作が高速になります。

ただし、バッファとキャッシュの違いについて説明する前に、それらが何であるか、およびそれらがどのように動作するかを理解する必要があります。

2. バッファ

バッファリングは、バッファメモリと呼ばれるメモリの予約領域にデータをプリロードするプロセスです。

バッファメモリは、2つ以上のデバイス間またはアプリケーションとデバイス間のデータ転送を格納するメインメモリ(RAM)の一時的なストレージ領域です。バッファリングは、送信者と受信者の間の転送速度の違いを補正しますデータの。

データを転送するアプリケーションまたはデバイス間で伝送速度が変化するたびに、システムはRAMにバッファを自動的に作成します。 バッファは、送信者から受信したデータのバイトを蓄積し、準備ができたら受信者に提供します。

バッファは、長いドキュメントを印刷するときに役立ちます。 システムは自動的にバッファを作成し、ドキュメントのデータでそれを埋めるので、次のページを処理する前にプリンタを待つ必要はありません。

コンピュータネットワークでは、バッファはデータの断片化と再構築に役立ちます。送信者側から見ると、システムは大量のデータを小さなパケットに分割し、ネットワーク経由で送信します。 受信者側では、システムはデータの断片化されたパケットを収集し、それらを元の形式に再構成するバッファを作成します。

バッファリングは、アプリケーションの入力または出力(IO)のコピーセマンティクスをサポートします。アプリケーションにハードディスクに書き込むバッファがあり、 write()システムコールを実行するとします。 システムコールが戻る前にアプリケーションがバッファデータを変更した場合、コピーセマンティクスは最後のシステムコール時のデータのバージョンを提供します。

バッファは次の3つの容量で実行されます。

  • 制限された容量:バッファメモリのサイズが制限されており、いっぱいになると送信者をブロックします
  • 無制限の容量:バッファメモリサイズは無制限で、送信者からの任意の量のデータを受け入れます
  • 容量ゼロ:バッファメモリサイズはゼロで、データが受信されるまですべての送信者をブロックします

3. キャッシュ

キャッシングは、特定のリソースのコピーを一時的に保存して、同じリソースへの後続のリクエストがより高速に処理されるようにするプロセスです。

キャッシュメモリは、コンピュータチップが標準のダイナミックランダムアクセスメモリ(DRAM)よりも効率的にアクセスできる高速のスタティックランダムアクセスメモリ(SRAM)です。 RAMまたはハードディスクのいずれかに存在できます。 RAMでのキャッシングはメモリキャッシングと呼ばれ、ハードディスクでのキャッシングはディスクキャッシングと呼ばれます。

システムがクラッシュしてもハードディスクにキャッシュされたデータが失われないため、ディスクキャッシュは有利です。 ただし、ディスクキャッシングでのデータアクセスは、メモリキャッシングに比べて低速です。

ディスクキャッシュサイズは、通常のハードディスクの128MBからソリッドステートディスク(SSD)の1GBの範囲です。

プログラムがハードディスクからデータを要求するときはいつでも、システムは最初にキャッシュメモリをチェックします。 要求されたデータがキャッシュメモリに存在しない場合にのみ、ハードディスクをチェックします。 これにより、ハードディスクから直接アクセスする速度が遅くなるため、データ処理が大幅に向上します。

キャッシュは、情報の大規模なストアへのランダムアクセスをサポートできます。 さらに、キャッシュメモリは、保持または削除するデータを決定するのに役立つ複雑なアルゴリズムも使用します。

free コマンドを使用して、バッファメモリとキャッシュメモリのサイズを確認できます。

$ free -h
              total        used        free      shared  buff/cache   available
Mem:          7.6Gi       6.4Gi       170Mi       402Mi       1.1Gi       573Mi
Swap:         2.0Gi       589Mi       1.4Gi

-h フラグを渡して、結果を人間が読める形式で表示します。 この場合、RAM内のバッファメモリとキャッシュメモリの合計サイズは1.1GBです。

キャッシュメモリのサイズはRAMに比べて小さい場合がありますが、システムの一般的なパフォーマンスに大きな影響を及ぼします。

4. バッファとキャッシュの主な違い

バッファとキャッシュの主な違いをいくつか見てみましょう。

バッファ キャッシュ
RAMにのみ存在します RAMまたはハードディスクのいずれかに存在します
データを交換する2つのプログラム間の速度の違いを補正します 頻繁に要求されるデータへのアクセスを高速化します
元のデータを保存します 元のデータのコピーを保存します
RAM内の通常の一時的な保存場所 RAMまたはハードディスクの高速ストレージロケーション
ダイナミックRAM製 スタティックRAM製

5. 結論

この記事では、バッファメモリとキャッシュメモリ、およびそれらの違いについて学習しました。