- WindowsのGUIはOSそのものではなく、OSを操作するための外殻です。
- もともとWindows 3.1はMS-DOSの上で動くグラフィカルシェルにすぎず、ファイル管理やハードウェア制御はMS-DOSが担っていました。
- その後、Windows NT系以降はGUIとカーネルが一体の独立したOSとして設計されましたが、GUIはカーネルとは別の層として存在しています。
- Linuxではこの分離が設計上の前提であり、デスクトップ環境を交換してもカーネルは変わりません。
1. 「名ばかりOS」
SNSなどで「OSを作った」という人が実際に作っているのを見てみると、ウィンドウを表示するGUIアプリケーションの場合があります。
これをWindowsというOSの上で動作しているので、「OS」と呼ぶのは違和感があります。
あえていうなら、デスクトップ環境というべきです。
この誤解の背景には、Windowsが長年にわたって「見える部分=OS」という印象を与えてきたことがあると思います。
Windows 3.1の時代にGUIがOSと一体のものとして普及し、その感覚が現代まで引き継がれています1。
ただ、GUIはOSを操作するための外殻であって、OSそのものではありません。
1.1. Windows 3.1はMS-DOSのグラフィカルシェルだった
1992年にリリースされたWindows 3.1は、単体で起動できるOSではありませんでした2。
MS-DOSという文字ベースのOSを起動した後、WINというコマンドを入力して初めて立ち上がる、GUIの「外殻」にすぎません3。
構造を整理すると次のようになります。
MS-DOS(OS本体)
└── Windows 3.1(グラフィカルシェル)
└── Windowsアプリケーション
Code language: CSS (css)
MS-DOSがなければWindows 3.1は動きません。
ファイルシステムの管理も、プロセスの制御も、ハードウェアへのアクセスも、すべてMS-DOSが担っていました。
Windows 3.1はその上に乗り、マウスで操作できる画面を提供しただけです。
1.2. Windows 95以降に起きた変化
Windows 95では、ユーザーの目には「WindowsがOSとして起動する」ように見えるようになりました。
まだ内部にはDOS互換の部分が残っていましたが、それは隠蔽されました4。
GUIとOSの境界が見えにくくなったのはこの頃からです。
Windows NT系列(NT 4.0、2000、XP以降)になると、構造はより明確になります。
DOSへの依存がなくなり、カーネルからGUIまでを含む完全な独立OSとして設計し直されました5。
ただし、その場合でも、GUIはカーネルとは別の層として存在しています。
つまり、世代ごとの立ち位置は次の通りです。
| バージョン | 位置づけ |
|---|---|
| Windows 1.0〜3.x | MS-DOS上のグラフィカルシェル |
| Windows 95・98・Me | DOSベースだが実質的にOSとして振る舞う |
| Windows NT系(XP以降) | 独立した完全なOS |
現代のWindowsでも、標準シェルであるExplorer.exe(Windows Explorer)を別のシェルに差し替えることが技術的には可能です。
たとえば、MicrosoftはShell Launcherという機能を提供しており、キオスク端末などの特殊用途で利用されます6。
2. OSの本体はどこにあるか
画面に見えているものはGUIであってOSではないとすると、OSは何なのでしょう。
OSが実際に担っている機能は、主にカーネル、ファイルシステム、APIの3つに整理できます。
カーネルはCPUやメモリ、デバイスなどハードウェア資源を管理する中核部分です。
プロセスのスケジューリング、メモリの割り当て、デバイスドライバの制御などを担います。
ファイルシステムはデータをディスク上でどう管理するかを定義します。
Windows NTはNTFS、Linuxはext4などを使います7。
APIはアプリケーションプログラミングインターフェースの略で、アプリケーションがOSの機能を呼び出すための窓口です。
ファイルの読み書き、ネットワーク通信、メモリの確保などをアプリ側から行えるのは、このAPIが存在するからです。
これらはハードウェアに近いレベルで動いています。
2.1. Linuxでは「層の分離」が当たり前(デスクトップ環境)
ちなみに、Linuxの世界では、OSとGUIの分離は設計上の前提になっています。
Linuxカーネル(OS本体)
└── X Window System(表示システム)
└── GNOMEやKDEなどのデスクトップ環境
└── アプリケーション
デスクトップ環境はカーネルとは独立したユーザー空間のソフトウェアであり、交換可能な部品として扱われています。
たとえば、GNOMEをKDEに替えると、ウィンドウなどの見た目は変わりますが、カーネルは変わりません8。
- Windows 3.1は発売から2ヶ月で約300万本を売り上げました。MS-DOSが必要なGUIシェルでありながら「コンピューターの顔」として広く認識されたことが、「見える部分=OS」という印象の根拠になっています。 – Computer History Museum – April 6: Microsoft Releases Windows 3.1
- 正確なリリース日は1992年4月6日です。また、Windows 3.1は16ビットアーキテクチャを採用した最後のWindowsでもあり、Windows 95以降は32ビットに移行しました。 – Windows 3.1 – Wikipedia
- Windows 3.1のインストール時、AUTOEXEC.BATの末尾にWINコマンドを記述すれば起動時に自動でGUIが立ち上がるよう設定できました。ただしこの場合も、MS-DOSが先に起動してからWINを呼び出すという構造は変わりません。Windows 95ではこの自動起動の仕組みが統合され、ユーザーからDOSの存在が見えにくくなりました。 – MS-DOS 7 – Wikipedia
- Windows 95はMS-DOS 7.0を内部に含んでいます。MSDOS.SYSの設定を変更することで、GUIを起動せずMS-DOSのコマンドラインだけで動作させることが技術的には可能でした。Windows 98ではMS-DOS 7.1に更新され、FAT32のサポートが追加されています。 – MS-DOS 7 – Wikipedia
- Windows NTの設計を主導したのはDave Cutlerです。DEC(Digital Equipment Corporation)でVMSオペレーティングシステムを開発した後、1988年にMicrosoftに移籍しました。現在のWindowsはすべてNTカーネルを基盤としています。 – Dave Cutler – Wikipedia
- Shell Launcher Overview – Microsoft Learn
- NTFSはWindows NT 3.1(1993年)で初めて導入されました。FAT系のファイルシステムと異なり、アクセス権限の管理やジャーナリング機能を持つことが特徴です。 – Dave Cutler – Wikipedia
- X Window SystemはMITのProject Athenaの一環として1984年に開発されました。Bob ScheiflerとJim Gettysが中心となり、ネットワーク越しにGUIを表示できる仕組みとして設計されています。現在の標準プロトコルであるX11は1987年9月に確定しました。 – X Window System – Wikipedia