Windows 98 覚え書き


細かいお話し・・・構造編

シェルってなあに?(ホントの定義)

シェル・・・実はこれをお話しするにはホントはちとややこしいんです。

元々の定義は“ファイルのオープンやコピー/削除、プログラムの起動など、
OSがユーザーに提供するユーザーインターフェイスを実現するソフトウェアモジュール”
となっています。これの意味するところは、例えばアプリケーション使用時に
どのファイルを開けるのか/保存するのか指定するコモンダイアログボックスやメニュー
ボタン押下時のリスト表示、テキストボックス、コンボボックスの表示なども
含まれています。これらはアプリケーションに左右されない、基本的な操作機能です。
これらはエクスプローラのような“ファイル管理プログラム”に統合されて、使われていました。

ところが、便利さを追求するため、タスクバーの追加、右クリックのコンテクストメニュー表示
ドラッグ&ドロップ効果などがシェル機能として追加され、(これらはそれまでは各アプリケーションが
独自に設定していました)その結果、元々の“ファイル操作に関するインターフェイス”という
枠をWindowsのシェルは越えてしまったのです。(これを“シェルエクステンション”といいます)

これ以降、Windowsのシェルに関しては、“ファイル管理を中心としたOS全体のユーザーインターフェイスを
実現するソフトモジュール”という定義に“拡張”されて使われています。

わかりました?(笑)

dllファイルってなあに?

dll(ダイナミック・リンク・ライブラリ)ファイル・・・簡単に言えば、いろいろなアプリケーションが行なう
共通の動作をモジュール化して、各アプリケーションが、一時的に自分のプログラムの
一部として使用するためのファイルです。

本来、プログラムは自分が行なう動作に必要な機能をすべて自身が持つのが普通です。
ところが、いくつかのプログラムで同じ機能があれば、“重なった部分”を省略し、
共用で利用すれば、プログラムの大きさ&使用するメモリの節約ができます。

dllファイルのもうひとつの利点は、“使いたいときだけ呼び出せる”ことです。
プログラムにモジュール含まれる場合、いっぺんメモリに読み込むと、
プログラムを終了しない限り、モジュールが開放される事はありません。
(これをスタティック・リンクといいます) ダイナミック・リンクは使用時に呼び出される
とともに、使われなければメモリから退避されます。これにより、メモリの利用効率が
アップした、ということになります。

プログラミングの見地からでも、システム上での動作について、個々に考える
必要がなくなるため、開発者はそのプログラム固有の設定(ユーザーインターフェイスなど)
に、神経を集中できるというわけです^^

ファイルシステムってなあに?

2次記憶装置(ハードディスクやフロッピー、MOやCD-ROMなど)のデータ記録の
管理方式です。ここでは、ハードディスク・ドライブ(HDD)に使われている
FAT(ファイル・アロケーション・テーブル)形式についてお話しします。

FAT形式とは?

ハードディスクは円盤の形をしています。これをバームクーヘンのように、同心円で区切り、
一方、丸いケーキを切り分けるように、中心から放射状にも区切っていきます。
同心円の区切りを“トラック”、同心円と放射状の線に区切られた一部分(切り分けた
バームクーヘンみたいに!)を“セクタ”といいます。セクタの大きさは512バイトと決まっています。

ところがこの1セクタ=512バイトでは、データを扱うには小さすぎるため、いくつかの隣り合う
セクタをまとめて、これを管理の最小単位にしています。これを“クラスタ”といいます。
クラスタはHDDの大きさで変わっていきますが、2GB程度で32KBになっています。

プログラムなどをHDDにセーブする場合、プログラムはデータとして細かく分割され、
ディスクに書きこまれます。この時あとでデータをつなぎ合わせることができるように、
クラスタにデータとともに、次に参照するディスク上の番地(場所)が記録されます。
この番地の管理のためのシステムをFATと呼ぶのです。

FAT16とFAT32

MS-DOSとWindows 95初期型に採用にされていたのは、FAT16という
16ビット対応型のシステムでした。FAT16にはいくつかの問題点がありました。

容量が2GBまでしか認識できない・・・FAT16のクラスタサイズは32KBが上限です。
そのため、FAT16には2GB以上のHDDをひとつのドライブとして認識する事が
できません。この場合、HDDを任意の大きさに分割して管理する事になります。

クラスタギャップ・・・前述の通り、FAT16の1クラスタは32KBです。ところでクラスタ上に
データをいれた場合、データの大きさに関わらず、1クラスタを使用します。例えばデータが
2KBだったとしたら、残りの30KBは、何も使われない無駄な領域になります。
これをクラスタギャップといいます。ディスクに無駄な領域があるということは当然アクセス
速度の低下になったりします。

これらを改善するため、Windows 95 OSR2(改良版)以降から32ビット対応版の
FAT32が加えて採用されました。これは、クラスタサイズを従来の32KBから4KBにちいさくできる
ため、クラスタギャップが大幅に改善されました。これによりディスク利用の効率化、スピードアップ
などが可能になったのです。また、理論上は2TB(ティガバイト)までの大きさを
ひとつのHDDとして認識できます。

FAT32で問題になるのはFAT16との互換性です。FAT16対応のOSでは、
FAT32のドライブを認識することができません。また、FAT16専用の古いプログラムなどは
FAT32で動作しないものもあります。

なぜ、IE(4.0x)がこけるとWinも落っこちるの?

これは、IEとExplorerのプロセスとスレッドの関係によるものです。
下図をご覧ください。

ここで、IEのスレッドがExplorerのプロセスに“すっぽり”はいっていることに
注意してください。これの意味は“IEがこけたらExplorerのプロセスが終了する”
つまりWindowsが終了してしまうことになります。(ExplorerはWindowsのシェルですからね)

これを防ぐために、IEのスレッドをExplorerのプロセスから出して、別に設定することが
できます。(詳細設定の“新しいプロセスでブラウズを開始”をon)その代わり、スレッドの
数が増えて、当然実行速度が遅くなりますが。ちなみにIE5+Winの場合は最初の
段階でプロセスが別々になっているようです。