←前ページ 次ページ→
Windowsの構造・・・メモリの管理について
前回は、Windowsのおおまかな構造について、お話ししました。
今回は主に、Windowsのメモリの管理方法についてお話ししましょう。
キャッシュってなあに?
よく“キャッシュ”という言葉を聞きますね。例えば“ブラウザのキャッシュ”。
これは、ブラウザが一度取りこんだwebページを、どこかに書きこんでおいて、
2回目以降の表示をすばやく行なう目的で設定されています。
(ダウンロードには時間がかかります)
これと同じ目的(つまりメモリ⇔HDD間のデータのやり取りを早くする)で
Windowsもキャッシュシステムを持っています。これを“ディスクキャッシュ”
と呼んだりします。
Vcacheって?
まず読み方ですが、“ブイキャッシュ”といいます。これはメモリ内に特別に
設けられた領域で、HDDからのデータを記憶しておき、2回目以降のデータ呼び出し
に対して、ここから内容を呼び出す事で、HDDへのアクセス時間を節約できるようにする
便利な仕掛けです。
普通は、ファイルなどを開く場合、システム(Windows)からの命令でHDDのFATを検索し、
そこにあるPath情報/ファイル名情報からHDD内のデータを引き出します。
この時、メモリの作業領域に読みこむと同時に、Vcacheにも同じものを読みこんで、
2回目には、Vcacheから読み出します。HDD⇔メモリ間だとHDDにスピードを
合わせないといけませんが、メモリ⇔メモリ間なら、かなりのスピードアップになる、というわけです。
Vcacheの設定方法
Vcacheにはvariable(可変)という意味も内包されてます。これはメモリの一部分を
キャッシュ領域として“キープ”するわけですから、当然、これが大きくなると作業領域(普通に使う
部分)が圧迫され、都合が悪いのです。
Windows 98ではVcacheは自動的に最適なサイズに設定されるはずなのですが、
メモリ不足などで、作業領域を広く確保&システム負担軽減したい場合は
手動で設定する方法があります。
システム設定ユーティリティを使用する方法 |
1) “ファイル名を指定して実行”から msconfig と入力実行 |
2) System.ini タブの[vcache]項目を探して、“+”をクリック(下にスペースができるはず) |
3) 下にできたスペース部分をクリックし、“編集”ボタンを押すと入力可能になるので、以下のように入力 |
MinFileCache□=□xxxx (□は半角スペース、x,yは数字)、 enterキー>“新規”ボタンで1行下に |
MaxFileCache□=□yyyy |
4) “適用”ボタン>再起動でOK! |
もちろん
System.ini ファイルから直接書きかえる事も可能です。
ファイルのサイズですが、基本的に、a) システムに任せる(指定範囲内で)、b)固定化する
の2通りが、あります。a) はメモリの使用状況に応じてサイズが増減しますから、
どんな状況にも対処できますが、パフォーマンスはあまり上がりません。
b) は固定化することでパフォーマンスはよくなりますが、キャッシュサイズが
小さ目のため、たくさんのアプリケーションを同時には使えなくなります。
別表を参照してください。
搭載メモリ数 | a) システムに任せる | b) 固定化する | |
MinFileCacheの値 | MaxFileCacheの値 | Min/Max両方の値 | |
24MB〜31MB | 1024 | 4096 | 3072 |
32MB〜47MB | 1536 | 6144 | 3584 |
48MB〜55MB | 1536 | 10240 | 5096 |
56MB〜63MB | 2048 | 12288 | 6144 |
64MB〜more | 2048 | 20480 | 10240 |
(Windows Start 7月号より引用) |
この数字はあくまで目安としてください。私の私見では、ちょっと大きめな設定に
なっていると思います。正確に使いこなすのなら、システムモニタによる検証が必要です。
私の環境では、MinFileCache=2048/MaxFileCache=16384で設定しています。(64MB)
なお、“自動”設定でも通常では問題はないと思います。よく分からない場合は、変更は
しなくていいとも思いますよ。
NameCache/PathCacheってなあに?
Vcacheのほかにも、Windowsはキャッシュシステムを持っています。
NameCache/PathCacheとは、名前通り、HDDから読みこまれたデータの、ファイル名/パスの
情報をキャッシュに読み込み、2回目以降に利用します。
これらの情報を得るには、本来FATを検索しなければなりませんが、このキャッシュが
あるおかげで、FAT検索をスキップすることができます。2回目には、この情報で
ダイレクトにHDDからアクセスすることができるのです。
NameCache/PathCacheの設定方法
これは簡単です。
コントロールパネル>システム>パフォーマンスタブの“ファイルシステム”>
ハードディスクタブの設定を変更すればいいのです。
ネットワークサーバー・・・32MB以上のメモリがある場合に可。パフォーマンス優先。
デスクトップコンピュータ・・・標準はこれ。パフォーマンスも中庸。
ポータブルコンピュータ・・・メモリを節約したい人向け。パフォーマンスは落ちます。
64MB以上メモリがある場合は、“ネットワークサーバー”を選択するといいようです。
MapCacheとは?
もう一つの大きなキャッシュシステムは、MapCache(マップキャッシュ)と呼ばれています。
Vcacheが、キャッシュ領域から作業領域にデータを読み込むのに対して、
MapCacheは、メモリマップそのものを作り直して、キャッシュ領域の該当データ部分を
作業領域にしてしまうというものです。
少し考えてみてください。通常に実行された場合、キャッシュ領域と作業領域に同じ内容の
データが2つ存在する事になってしまいます。この状態では、メモリが圧迫されて
ベストな状況とはいえません。(無駄にメモリが使われている)
そこで、該当するキャッシュが、メモリ全体のどこに格納されているか記憶しておき、
その場所を、あらためて作業領域に組み込んでしまうのです。こうすれば、
メモリ→メモリへの読みこみを省略できるので、メモリ容量&時間が節約されます。
ところでMapCacheには、ある種の制約があります。それは、ファイルデータの
大きさの問題です。簡単にいうと、4KBで割り切れる大きさでないとMapCacheは
機能しません。最初から、プログラム等がこういう作りならいいのですが、
そうもいかないので、内容を変えずに大きさを4KBで割り切れるように変更する
プログラムがあります。それが walign.exe (ウィンアライン)です。
walign.exe はタスク内で機能しています。
タスクの“アプリケーションの起動チューンアップ”がそれです。
(プロパティで、内容を見てみてくださいね)
このwalign.exeはすべてのプログラムに有効なわけではありません。
この機能に対応したものでないと、有効になりません。
ちなみに、walignが有効にならないプログラムがVcacheに読みこまれた場合、
通常のディスクキャッシュ機能(上の図1)が使われます。
どのファイルがそうなのか知りたい場合は、winali.ini というファイルに記載されています。
フォントキャッシュとアイコンキャッシュって?
キャッシュの目的は、PCのスピードアップです。グラフィックスもその例外では
ありません。といってもWindowsにとって、よく呼び出すグラフィックスは、大方
文字表示とファイル管理に不可欠なアイコンの表示です。
これもキャッシュして、そこから呼び出しています。
ttfCache・・・フォントキャッシュです。トゥルーフォントという、一般的なフォントのグラフィックスです。
(システムフォントはちがいます)また、ウインドウ右上のボタン文字などは“Marlet”という
フォントで構成されています。(覚えておいてね)
ShellIconCache・・・シェルアイコンキャッシュといいます。言葉通りです。アイコンが崩れたり
誤ったものが出た場合、これを作り直します。
ウインドウの様子が変だ!?
時々、ウインドウ右上のボタンが崩れて表示される事はありませんか?
また、ブラウザで表示させると、いくつかの文字が崩れたり、誤って表示されませんか?
これはttfCacheの内容が壊れたために起こったことです。
正しく作り直してあげましょう。そのためには・・・
ズバリ、SafeModeで起動することです。
SafeModeは診断用モードとして、いくつかのファイルをリフレッシュします。
それらの中にttfCache/ShellIconCacheがあるのです。
SafeModeでの起動方法はご存知ですか?PC/AT互換機なら
Ctrlキーを押しつづける、NEC-PCは・・・F8キーだったような・・・。
すると起動方法が選べる画面が出ますから。すぐわかります。
(パソコンのマニュアルを読んでくださいね)
あとは、特に何も行なわず、通常で再起動できます。
アイコンの異常の場合も同様です。
仮想メモリって、なあに?
仮想メモリって言葉を聞いた事がありますか?
普通、メモリという場合、(たいていxxMBっていいますよね)これは、PC上に設置
されたRAMのことを指します。これを“物理メモリ”と呼びます。
一般に、物理メモリだけにデータを展開して使おうとしても、とても間に合いません。
(マルチタスク処理など不可能です)そこで、物理メモリ上のデータのうち、すぐに使いそうにない
ものを一時的にHDDに書きこんで、物理メモリを空けてあげます。
これを、仮想メモリシステムといいます。
このHDDに書きこまれるデータを受け取るのが Win386.swp というファイルです。
これはスワップファイルと呼ばれる特別なもので、必要に応じてサイズが変化します。
仮想メモリ=物理メモリ+Win386.swp ということですね。
スワップファイルのサイズはかなり大きいので、HDD容量を空けたい時などに
削除しようとする方がいますが、不可能ですし、不具合が起こります。
やめましょう。
Win386.swpのメンテナンス
基本的には“自動”で問題ありません。ただし、HDD容量の関係でどうしても
スワップファイルを小さくしたい、あるいはパフォーマンス向上のために
大きくしたい場合には調整ができます。
コントロールパネル>システム>パフォーマンスタブの“仮想メモリ”で
下の画面が出てきます。
ハードディスク・・・複数のディスクドライブがある場合、別ドライブに移動できます。
例えば、500MB程度のドライブを用意してそれをスワップ専用ドライブにすると
パフォーマンスが向上したりします。
最小/最大・・・この数値の範囲でファイルの大きさが変わります。同じ数値をいれれば、
スワップファイルサイズが固定化されます。
使わない・・・トラブル診断用です。使わないで下さい。
まず、システムモニタで、スワップファイルの使用状況を知ることは必須です。
見る項目は、メモリマネージャ:スワップファイルのサイズ/メモリマネージャ:使用中スワップファイル
の2項目です。この数値をよく観察した上で最大値などの数値を決めてください。
特に画像や音声ファイルを扱う方やWord/Excel
などの大きいアプリケーションを使う場合は
余裕を持ちましょう!
パフォーマンスを上げたい場合は、ファイルのサイズを固定化する方法もあります。
この場合、数値は必ず大きめに設定して下さい。
最低でも普段の最大ファイルサイズの2倍は取ってください。(ちゃんと調べてくださいね)
前述の、別ドライブへの移動と組み合わせれば、効果もあがるでしょう。
お待たせした割に・・・少ししか記事がありません。私にはちょっとむずかしかったかな?
皆さんは、いかがだったでしょう?ここの話のすべてを知る必要はまったくありません。
Windowsはこんな仕組みで動いている・・・。Windowsの姿がとらえられれば
十分だと思います。
もっと手短に、かつ分かりやすい書き方が必要だとは思いましたが・・・。
私の力量なんでしょうね、これが(笑)
本当はもう少し書かねばならないのでしょうが(この項)、頭がパンクしそう
なんで・・・。次回は少し簡単なお話を考えます~~
それでは、また(^^;
←前ページ 次ページ→