先日(2010年3月30日の日記参照)の続き。
ファイルに対してできるアクセスは、読み(実行は読み込みを伴うので読み込みの一種)、書き(削除は書き込みの一種)のどちらかです。ウイルスが悪さするアクセスパターンは下記の通りです。
既存 | 読み | 書き | チェック必要性 | 起きうる悪意 |
---|---|---|---|---|
○ | ○ | × | ○ | 既存ファイルからウイルスを読み出す |
○ | × | ○ | ○ | 既存ファイルを消す、ウイルスを書き込む |
○ | × | × | × | なし(誰も触らないファイル) |
× | ○ | × | × | なし(存在しないファイル、つまり読めない) |
× | × | ○ | △ | 新規ファイルにウイルスを書き込む |
× | × | × | × | なし(存在しないファイル) |
既存ファイルの読み出し、既存ファイルへの上書きは即時にチェック(チェックの必要性が ○)しますが、新規ファイルへの書き込みはスキップ(チェックの必要性が △)できます。
理由は全読み込みアクセスをチェックできれば、後の読み込み時のチェックで「十分」であるため、ですが…説明になっていないので、ウイルスを新規作成したときの動作で考えてみましょう。
ウイルスファイルが新規作成されても、それだけで悪さはできません。悪さをするには、ウイルスファイルを実行するか、既存ファイルにウイルスデータを混ぜて良いファイルのふりをして実行する必要があります。
実行にせよ書き込みにせよ、一度は新規作成したウイルスファイルの読み込みを経なければなりません。つまり新規作成されたウイルスファイルが悪さをするには、新規作成されたウイルスファイルの読み込みが必要です。
新規作成されたウイルスが読み込まれる時にチェックできれば、新規作成されたウイルスが悪さするのを十分阻止できる、といえます。
先の結論をまとめると、
要は全読み込みをチェックできるなら、新規作成時のウイルスチェックは不要であり、「新規作成時にウイルスチェック」をサボって「後に読み込む時にウイルスチェック」(これこそ遅延評価ですね!)をすると速くなることが予想されます。
さて懸案のローカルドライブへのファイルコピーを先ほどの表に当てはめてみると、下記のようになります。
既存 | 読み | 書き | チェック必要? | 起きうる悪意 | コピー動作に当てはめると |
---|---|---|---|---|---|
○ | ○ | × | ○ | 既存ファイルからウイルスを読み出す | (発生しない) |
○ | × | ○ | ○ | 既存ファイルを消す、ウイルスを書き込む | 上書きコピー |
○ | × | × | × | なし(誰も触らないファイル) | (発生しない) |
× | ○ | × | × | なし(存在しないファイル、つまり読めない) | (発生しない) |
× | × | ○ | △ | 新規ファイルにウイルスを書き込む | 新規コピー |
× | × | × | × | なし(存在しないファイル) | (発生しない) |
確認すると、私が実行するコピー作業の9割以上が新規コピーで、上書きコピーはほとんどありませんでした。新規コピーファイルのチェック遅延が効果的に効くため、ローカルドライブへのコピー作業は非常に速いのだと思われます。
ローカルドライブでは遅延評価により高速化が望めましたが、ネットワークドライブに関しては「3. 全読み込みをチェックできれば、ウイルスは悪さできない」が成立しないため、遅延評価ができません。下記にローカルドライブとの違いを挙げます。
このため新規作成のファイルも全てチェックする必要があります。だからネットワークドライブへのコピーは非常に遅いのです。
< | 2010 | > | ||||
<< | < | 03 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | 1 | 2 | 3 | 4 | 5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 | - | - | - |
合計:
本日:
管理者: Katsuhiro Suzuki(katsuhiro( a t )katsuster.net)
This is Simple Diary 1.0
Copyright(C) Katsuhiro Suzuki 2006-2023.
Powered by PHP 8.2.15.
using GD bundled (2.1.0 compatible)(png support.)