web-dev-qa-db-ja.com

icon-theme.cacheとは何ですか?

Lubuntu 12.10で次のコマンドを実行すると

[11:09 PM] ~ $ find /usr/share/icons/ -iname icon-theme.cache -type f

私は次を取得します(最終変更日とサイズを追加した後):

/usr/share/icons/lubuntu/icon-theme.cache              20121125  61.2 KiB
/usr/share/icons/Humanity-Dark/icon-theme.cache        20120810  40.6 KiB
/usr/share/icons/Humanity/icon-theme.cache             20120810 931.9 KiB
/usr/share/icons/gnome/icon-theme.cache                20121017  65.8 MiB
/usr/share/icons/ubuntu-mono-light/icon-theme.cache    20130408 140.0 KiB
/usr/share/icons/LoginIcons/icon-theme.cache           20130408   628 bytes
/usr/share/icons/ubuntu-mono-dark/icon-theme.cache     20130408 139.9 KiB
/usr/share/icons/hicolor/icon-theme.cache              20130406  12.4 MiB
/usr/share/icons/elementary-mono-dark/icon-theme.cache 20120926  12.4 KiB

そして、以下の例に示すように、これらのファイルはすべてTrueType font dataタイプです。

[11:09 PM] ~ $ file /usr/share/icons/hicolor/icon-theme.cache
/usr/share/icons/hicolor/icon-theme.cache: TrueType font data

私の質問は、すべて密接に関連しています:

  • icon-theme.cacheとは何ですか?その機能は何ですか?これらのファイル名のcacheの意味は何ですか? キャッシュタグ の定義は次のとおりです。「キャッシュは一時的なデータを近くに保存するため、実際のバッキングストア(ディスク、ネットワーク)、または何らかの結果を再計算する」。
  • なぜファイルサイズがそんなに多様なのですか? gnomehicolorは、フォールバックアイコンを提供するため最大のものですか(どこかで読んだように)。
  • 日付はどうですか? ubuntu-monoについては、20130408にlight-themesをインストールしたときに出てくるので、確信しているだけです。これらのファイルは、テーマの切り替え中に変更されたり、日付が単なる日付を反映したりしますインストールの?
9
user25656

これらのファイルが必要な理由を理解するには、最初にファイルをメモリにマッピングする概念を理解する必要があります

メモリマップファイル:メモリマップファイルは、仮想メモリのセグメントであり、ディスク上の物理ファイルにバイト単位で直接マッピングされます。大きなファイルへのランダムアクセス中のパフォーマンスや、異なるスレッドやプロセス間でマップされたメモリを共有する機能など、従来のストリームベースのI/Oに比べて多くの利点があります。

メモリマップファイルへのアクセスは、2つの理由で直接読み取りおよび書き込み操作を使用するよりも高速です。まず、システムコールは、プログラムのローカルメモリを単純に変更するよりも桁違いに遅くなります。第二に、ほとんどのオペレーティングシステムでは、実際にマップされるメモリ領域はカーネルのページキャッシュ(ファイルキャッシュ)です。つまり、ユーザー空間にコピーを作成する必要はありません。

さて、質問を一つ一つ取り上げてみましょう:

  1. icon-theme.cacheとは何ですか?その機能は何ですか?これらのファイル名のキャッシュの意味は何ですか?

    ファイルicon-theme.cacheには、特定のディレクトリ(たまたま_index.themeを含むディレクトリ)特定のテーマ)。

    GTK +はキャッシュファイルを使用して、アプリケーションの起動時に多くのシステムコールとディスクシークのオーバーヘッドを回避できます。キャッシュファイルの形式により、複数のアプリケーション間で共有されるメモリマップが可能になるため、全体的なメモリ消費も削減されます。

  2. ファイルサイズがそれほど多様なのはなぜですか?

    ファイルサイズは、アイコンテーマのアイコンの数によって異なります。

  3. 日付はどうですか?

    メモリキャッシュを使用する場合、特定のメモリロケーションにアクセスするプロセスがある場合にのみキャッシュに何かが存在し、キャッシュがいっぱいでその要素を削除する必要がない限りそこに残ります。

    したがって、変更日は、何らかのプロセスによって更新された日付に依存する可能性が最も高いでしょう。この場合、テーマのアイコンが使用されたときである可能性があります。

    実際、gtk-update-icon-cacheという名前のアイコンキャッシュを更新するコマンドがあります。

出典と詳細情報:

11
green