Windows 98 覚え書き

←前ページ      次ページ→

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) は固定化することでパフォーマンスはよくなりますが、キャッシュサイズが
小さ目のため、たくさんのアプリケーションを同時には使えなくなります。

別表を参照してください。

Vcache設定例
搭載メモリ数 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の姿がとらえられれば
十分だと思います。

もっと手短に、かつ分かりやすい書き方が必要だとは思いましたが・・・。
私の力量なんでしょうね、これが(笑)
本当はもう少し書かねばならないのでしょうが(この項)、頭がパンクしそう
なんで・・・。次回は少し簡単なお話を考えます~~

それでは、また(^^;

←前ページ      次ページ→