Windows OSの礎となったWindows NT

サブシステムに関してもう少し述べておきましょう。前述した各サブシステムは図03で示したようにユーザーモードに配置しています。Windows NT 3.1では、利用可能なメモリー領域をカーネルスペースとユーザースペースに区切り、いずれかのサブシステム上で動作するアプリケーションがクラッシュし、OSを巻き込むようなハングアップを引き起こすようなトラブルが発生したとしましょう。しかし、サブシステムはユーザーモード上に配置しているため、Windows NT 3.1自体がハングアップすることはありません。これが前回述べた「信頼性」を実現する仕組みの一つでした。

マイクロカーネルアーキテクチャの採用もWindows NTを構成する特徴に数えられます。例えばMS-DOSはモノリシックカーネルと呼ばれ、I/Oやネットワーク機能、デバイスドライバーの制御などをカーネルと同一のメモリ空間に実装し、実行する手法を用いていました。その一方でマイクロカーネルとは、OSが担う必要最小限の機能をカーネルスペースに実装し、残りの機能をユーザースペースに実装して構造をシンプルにするというものです。マイクロカーネルの採用は、異なるプロセッサへの移植だけでなく信頼性の維持も可能にしました。ただし、後に登場するWindows NT 4.0は、グラフィック関連のデバイスドライバーをカーネルスペースで動作させることで、グラフィックパフォーマンスの向上を実現しましたが、Windows NTにおける設計思想から格段退化し、Cutler氏が掲げた信頼性は低下したことになります。

現代では当たり前となったプリエンプティブマルチタスクに対応したのもWindows NTが初めてでした。そもそも複数の処理を同時に行っているように見せるマルチタスクは、内部でプロセスを切り替えることで実現しています。Windows 3.xはタスク側でOSに処理を返す方式であるノンプリエンプティブマルチタスク(疑似マルチタスク)であり、プリエンプティブマルチタスクはハードウェアタイマー割り込みなどを用いて一定時間内に制御がOSに戻る仕組みでマルチタスクを実現しています。この採用は信頼性(この場合は堅牢性の向上、と述べた方が正しいでしょう)を高める結果結果につながり、Windows NTの最終的な成功につながりました。

Cutler氏が掲げた三つめの目標「個性」は、実現したとは言い難(がた)いものでした。当初OS/2のPM(プレゼンテーションマネージャ)を採用する予定でしたが、最終的にはWindows 3.0(実際には3.1相当)の「プログラムマネージャ」が搭載されています。同氏は今後登場するUIもサポートするロジックとしてシェルの呼び出し機能を用意しましたが、それに対応するアプリケーションはあまり多くありません。当時を知る方ならご承知のとおり、最終的には"プログラムマネージャ"を拡張するアプリケーションや、"ファイルマネージャ"の代替えアプリケーションを使うことになりました(図04)。

図04 Windows NT 3.1のメイン画面。Windows 3.0/3.1と同じ「プログラムマネージャ」を採用しました

また、Windows NT 3.1には専用のファイルシステムとしてNTFS(NT File System)を採用しています。当時のMicrosoft社内では、「OS/2のHPFS(High Performance Filesystem)で十分ではないか」という声があがりましたが、Cutler氏らはNTFSの採用を断行しました。もっともNTFSの開発も一筋縄では行かず、ベータ版の頃は致命的なバグもかなり残されていたとか。そのためと述べていいか分かりませんが、Windows NT 3.1はMS-DOSのFAT上でも動作する設計でした(図05~06)。

図05 MS-DOS上からインストールしますと、FATからNTFSのコンバートを実行するか確認を求められます

図06 「Disk Administrator」を起動しますと、FATのままであることが分かります

Windows NT 3.1をリリースするタイムリミットが迫ってきたあたりから、次期バージョンで修正するバグをリストアップしていました。その成果は1994年9月にリリースされたWindows NT 3.5に反映されます。「Daytona(デイトナ)」の開発コード名を持つWindows NT 3.5は、前バージョンで問題とされたOSのパフォーマンスを向上させるのが主目的でした。また、開発コード名で日本国内のコンピューター雑誌に付録として収録した初のOSです。

ネットワーク周りの修正も大きく行われました。TCP/IPおよびIPX/SPXのスタックを書き換えることで、NetBIOS over TCP/IP(NetBT)やWINSクライアントをサポートしています。エンドユーザーに好評だったのは、Windows 95から実装したVFATによるロングファイルネームのサポートでしょう。拡張子を含めて255バイトまでのファイル名を利用可能になり、以前から制限されていた8.3文字から解放されました(図07~08)。

図07 1994年9月にリリースされたWindows NT 3.5

図008 インストール時の進捗状況はWindows 95と同じく、メッセージが表示されるようになりました

1995年5月には小数点第2位を繰り上げたWindows NT 3.51をリリースしています。PowerPC(AppleやIBM、Motorolaの提携で開発されたRISC系プロセッサ)版のリリースや、PCMCIA(ノート型コンピューターによるカード型拡張インターフェース)のサポートなどが行われました。同年にリリースされるWindows 95に合わせて、APIの共通化やコモンコントロールの対応、NTFSにはファイル圧縮機能を加えました(図09~10)。

図09 3.x系最後のWindows NTとなったWindows NT 3.51。Service Pack 5までリリースされました

図10 ネットワーク機能もこの頃にはこなれており、動作も安定しています

この頃はシングルバイナリではなかったため、日本語版Windows NT 3.1は英語版から半年遅れの1994年1月25日にリリースされています。同年7月の時点で、50万本の売り上げを発表していましたが、Windows 3.1が1995年8月の時点で1億本を突破していることを踏まえますと、商業的に成功したとは言い難いOSです。

しかし、Windows 3.1の流れを汲(く)むWindows 9x系は2000年9月にリリースされたWindows Meで終止符を打ち、ご存じのとおりWindows NT系は最新のWindows 8にまで受け継がれています。これだけでもCutler氏を筆頭にした開発チームの設計思想や、Paul Maritz(ポール・マリッツ)氏のかじ取りが素晴らしいものだったのか、想見できるのではないでしょうか(図11)。

図11 クライアントWindows OSの主なリリースタイミング(米国リリース日を元に作成)

Windows NT 3.1完成後の開発チームは、大半のメンバーがJames "Jim" Allchin(ジェームス・オールチン)氏のCairo(カイロ)開発プロジェクトに参加し、Cutler氏も悩んだ末にAllchin氏の部下に入ることを決意。前述したDaytona(Windows NT 3.5)の開発に携わりました。その後もWindows XP Professional x64 Editionなど64ビットOSの開発に携わり、Windows AzureやXbox Oneの核部分に関与するなど、同氏の望みどおりOSの世界で活躍しています(図12~14)。

図12 Windows NT 3.1のスプラッシュスクリーン

図13 Windows NT 3.5のスプラッシュスクリーン

図14 Windows NT 3.51のスプラッシュスクリーン。この時点で256色のビットマップが用意されました

「Windows NT 3.x」の紹介は以上です。ナビゲーターは阿久津良和でした。次回もお楽しみに。

阿久津良和(Cactus

本稿は拙著「Windowsの時代は終わったのか?」を基に大幅な加筆修正を加え、公開しています。

参考文献

・A behind-the-scenes look at the development of Apple's Lisa(BYTE)
・Apple II(柴田文彦/毎日コミュニケーションズ)
・DIGITAL RETRO(ゴードン・ライング/トランスワールドジャパン)
History of OpenVMS
History of Windows
・IT業界の開拓者たち(脇英世/ソフトバンクパブリッシング)
・MS-DOSエンサイクロペディア Volume1(マイクロソフトプレス/アスキー)
OS/2の歩みを振り返る(元麻布春男の週刊PCホットライン)
・PC WAVE 1998年7月号臨時増刊 さらば愛しのDOS/V(電波実験社)
・Red Hat Linux 7.0 入門ガイド
Windows Vista開発史(Paul Thurrott/日経BPITpro/)
Windowsの歴史(横山哲也)
・Windowsプログラミングの極意(Raymond Chen/アスキー)
・Windows入門(脇英世/岩波新書)
History of OpenVMS(日本HP)
MSDN(Microsoft)
Wikipedia
・エニアック―世界最初のコンピュータ開発秘話(スコット・マッカートニー/パーソナルメディア)
・コンピュータ帝国の興亡(ローバート・X・クリンジリー/アスキー出版局)
・パーソナルコンピュータを創ってきた人々(脇英世/SOFTBANK BOOKS)
・パソコン創世記(富田倫生/青空文庫)
・ビルゲイツの野望(脇英世/講談社)
・月刊アスキー別冊 蘇るPC-9801伝説(アスキー)
・新・電子立国 第05回 「ソフトウェア帝国の誕生/NHK」
・闘うプログラマー 上下巻(G・パスカル・ザカリー/日経BP出版センター)
・僕らのパソコン30年史(SE編集部/翔泳社)
・遊撃手(日本マイコン教育センター)