― 16bitと32bitが共存する“危うい平衡”
Windows 95の不安定さは、偶然でも実装ミスでもない。
それは設計段階で織り込み済みのトレードオフだった。
本稿では、Windows 95の内部構造を
「なぜ壊れやすかったのか」ではなく、
「なぜそれでも成立したのか」という視点で読み解く。
1. カーネルは32bit、だがOSは32bitではない
Windows 95は「32bit OS」と呼ばれた。
しかし実態はこうだ。
- カーネル:32bit
- 仮想メモリ管理:32bit
- USER / GDI:16bitコードが残存
- システムDLL:混在
つまり、
OSの心臓部は32bitだが、血管は16bit
という構造である。
これは後方互換性を守るための犠牲だった。
2. Win16とWin32の同居が生んだ地雷
マルチタスクの分裂
- Win16:協調型
- Win32:プリエンプティブ
この結果、
- Win16アプリが応答しない
- システム全体が巻き添え
- UIフリーズ=OS停止に見える
という現象が日常化した。
技術的には欠陥だが、市場的には許容された。
3. USER / GDIはなぜ16bitのままだったのか
最大の問題点はここにある。
- USER:ウィンドウ管理
- GDI:描画・フォント・デバイス
これらが16bitのままだった理由は単純だ。
互換性を壊すとアプリが死ぬ
結果として:
- グローバルロック
- GDIリソース枯渇
- 1アプリ暴走=全体不安定
「再起動すれば直る」という文化は、
USER/GDIの制約が生んだ副産物だった。
4. VxD ― 強力だが危険な存在
Windows 95のデバイスドライバであるVxDは、
ほぼカーネル権限で動作する。
VxDの特徴
- 保護なし
- デバッグ困難
- OS全体に影響
一つのバグが即システムクラッシュ。
それでもVxDが採用された理由は明確だ。
速度と互換性を最優先した
これは後にWDMへ移行する伏線となる。
5. 最適化とは「速くする」ことではなかった
Windows 95時代の最適化は、これまでと意味が違う。
最適化目的
- GDIリークを遅らせる
- メモリ断片化を抑える
- フリーズまでの時間を伸ばす
つまり、
安定化ではなく“延命”
だった。
この制約を前提に、
アプリ開発者も「再起動前提」で設計していた。
6. NT系との決定的な分岐点
Windows NTは、
- 完全32bit
- 厳密なメモリ保護
- カーネル/ユーザー分離
という正統派設計だった。
一方95系は、
- 混在構造
- 保護が弱い
- 互換性最優先
この二系統は、
Windows XPで統合されるまで
別物のOSとして進化する。
7. なぜこの構造は許されたのか
理由は一つ。
ユーザーは“内部構造”を見ない
GUIが動き、アプリが起動すれば十分だった。
技術的欠陥は、
- 再起動
- 再インストール
- 諦め
で吸収された。
これは冷酷だが、
圧倒的に現実的な設計判断だった。
まとめ:Windows 95は“完成を目指さなかった”
Windows 95は、
- 完全性より普及
- 正しさより互換性
- 安定性より速度
を選んだOSだった。
その歪みは、
後のWindows設計すべてに影を落とす。
次回予告
第5回:Windows 95の活用
― DirectXがWindowsの立場を変えた
次回は、
業務用途だけでなくゲーム・マルチメディアを通じて
Windows 95がOSの役割を拡張した過程を解析する。

コメント