第4回:Windows 95のアーキテクチャと最適化

― 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の役割を拡張した過程を解析する。

コメント

タイトルとURLをコピーしました