Windows NT系
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Windows NT系(ウィンドウズ エヌティけい)は、Windows NTのアーキテクチャに基づいて製作されたオペレーティングシステムの総称。現在のWindowsの主流系統となっており、Windows 9x系とは全く異なった構造をしている。9x系とは分けて考える時に、NT系と定義する。
広義の「Windows NT」として、Windows NT系という言葉が用いられる。Windows 95の成功以降、原則的にマイクロソフトは製品名にバージョン番号を用いなくなっているが、Windows 2000はNT 5.0、Windows XPはNT 5.1、Windows Server 2003はNT 5.2、Windows VistaはNT 6.0に当たる。
目次 |
[編集] バージョンの変遷
以下のオペレーティングシステムが、NT系に該当する。なお、日本版の発売年を併記する。
- Microsoft Windows NT - Windows NT 3.1~4.0までの詳しい記事は左のリンク先を参照のこと
- Microsoft Windows 2000(2000年) - 識別名は「Windows NT 5.0」
- Microsoft Windows XP(2001年) - 識別名は「Windows NT 5.1」
- Microsoft Windows Server 2003(2003年) - 識別名は「Windows NT 5.2」。Windows XPのServer版
- Microsoft Windows Vista(2006年) - 識別名は「Windows NT 6.0」
[編集] クライアント向け製品とサーバー向け製品の呼称
Windows NT系の製品の特徴として、大きく分けてクライアント向けの製品とサーバー向けの製品の2種類存在する。
Windows NTには同バージョン製品で『クライアント向けの「Workstation」』と『サーバ向けの「Server」』の2種類がラインナップされている。
Windows 2000 以降はクライアント向け製品を「Workstation」から「Professional」に呼称変更し、Windows XPにおいてもその路線を継承した。また、Windows XPにおいては家庭などでの使用を前提とした「Home Edition」を新たにラインナップに追加した。その一方でWindows XPには「Server」に相当する製品は存在せず、Windows Server 2003として異なるラインナップの位置付けに改まっている。
[編集] 歴史
マイクロソフトはMS-DOSの後継OSとしてOS/2をIBMと共同開発していたが、契約関係・開発の進め方等においてIBM側としばしば対立した。そのためビル・ゲイツは方針を転換し、後継OSを自社オリジナルのWindowsにすることに決意する。しかし、初期のWindowsは見た目はGUIではあったが、内部的にはMS-DOSを土台とし、また16bitのメモリの壁、マルチタスクの不完全さ、ネットワーク機能の欠落など、課題が山積していた。
ビル・ゲイツは土台を一から作り直すことを決断し、そのプロジェクトマネージャーを社外に探し、ディジタル・イクイップメント・コーポレーション (DEC) にいたデヴィッド・カトラーを抜擢した。カトラーはDECのVAXマシン用の名OSのVMSの開発者として名を上げていた。カトラーは大量のストックオプションでマイクロソフトに1988年にヘッドハンティングされて開発チームを率い、1993年に最初のNTのリリースを果たした(当時のWindows 3.1に合わせて、NTも最初からver3.1とされた)。カトラーによれば、VMSの次のOSであるから、Windows NT (WNT)であるという。(略語のそれぞれがアルファベットの次の文字となっている)[1]
NTは極めてコンパクトなマイクロカーネル(IA-32用で728KB)を採用し、サブシステムの概念を導入し、Win32、OS/2、POSIXをユーザ空間に配置している。サブシステムで致命的な問題が起きてもいわゆる「クラッシュ」と呼ばれるシステム全体の破綻を起こさない、当時のPCで動作するOSとしては画期的なシステムであった。しかしこの構造は、当時のPCには負荷が大きく、結果として重いOSと評されることになる。殊にバージョン3.1リリース時には標準的なPC環境よりも遙かに過大なメモリを必要とした為「メモリ・イーター(Memory eater:直訳すれば「メモリーを喰らう者」。「メモリーを浪費するやつ」という揶揄的表現)」との不名誉な呼ばれ方をされたこともあった。
当初は重いOSにPC側の性能がついていかず、デスクトップ用の業務用OSの後継にしようというマイクロソフトの目論みは失敗した。 しかし、NT 3.1, 3.5に続いて発表した NT 3.51において、時をほぼ同じくしてリリースしたWindows 95をクライアントとしたサーバOSとしての性格を強調するマーケティングを行い、NetWareの牙城であったネットワーク・オペレーティング・システム(略称:NOS)の市場に足場を確保することに成功した。
バージョンアップを重ねる際にマイクロカーネル・アーキテクチャを一部放棄し、Win32サブシステムやグラフィクス・デバイス・ドライバの論理層などをカーネル空間に展開してスループットを向上するなど、重いオペレーティングシステムという汚名を払拭する為のいくつもの改修が行われた。UNIXでnfsの一部をカーネルに移転してスループットを向上させる技術を参考に、ファイルサーバーとしての性能向上を図った。OSI参照モデルに倣ったプロトコル・スタックを廃し、BSDの単純かつ高性能なプロトコル・スタックを模倣したWinsock2と新しいプロトコル・スタックの搭載は、ネットワーク性能を大幅に向上させた[2]。日々進歩するUNIXやBSDは、マイクロソフト社にとって欠かせぬ教材であったとも言えよう。あわせてNTに本格的に対応した新バージョンのVisual C++がリリースされ、サードパーティやソフトハウスがNT向けアプリケーションの開発を本格的に行えるようになった。
その後もマイクロソフトは、デスクトップ用の業務用OSの後継としても売り込みを図るが、一部のITプロフェッショナルを除いては市場に浸透せず、NT 4.0に続いて、2000年にリリースしたWindows 2000に於いて、やっとデスクトップOSとしても市場に認められることとなった。Windows 2000が認められたのは、Windows 9x シリーズのプラグアンドプレイやACPIなどの電源管理機能、USBへの対応などユーザビリティの高い機能を実装した事と、この頃にはハードウェア性能がNT系OSの重さが問題とされない(つまり重たくない)レベルにまで向上していた事によると考えられる。
Windows 2000は、業務用のデスクトップOSとして歓迎されたが、一般家庭向けの市場(コンシューマ市場)でNT系OSが普及するのは、次のWindows XPを待たねばならなかった。すでに、NT開発プロジェクトの開始から、10年以上が経過していた。
[編集] 動作プラットフォーム
基本的にWindowsシリーズはx86アーキテクチャ向けのOSだが、Windows NTについては当初から他のプロセッサアーキテクチャでの動作を考慮してカーネルの移植性が高い設計となっている。 NT 3.1と3.5では、x86版(PC-9800シリーズ用含む)の他、MIPS Rシリーズ版とAlpha版がリリースされた。 これらはARC (Advanced RISC Computing) アーキテクチャのワークステーションで動作するもので、x86版においてもBOOT.INIの記法や「システムパーティション」「ブートパーティション」といった起動関係の用語などに影響を与えている。 また、NT 3.51と4.0ではPowerPC版もリリースされ、PowerPCを搭載したIBMのThinkPad Power Seriesでも動作した。 しかしインテル・アーキテクチャ系以外のCPUの商業的失敗により、Windows 2000の製品版以降は再びインテル・アーキテクチャ系のみに戻っている。Windows 2000においてもAlpha版の開発は行われたが、発売には至らなかった。
後にMicrosoftがXbox 360でPowerPCを採用した際、搭載されるOSはPowerPC版Windows NTの資産を利用したのではないかとの憶測が流れたが、Microsoftはこれを否定し、x86を採用したXbox初代のOSを新たにPowerPCに移植したものであるとしている。[1]
[編集] セキュリティ
Windows NTのコアであるNT Executiveは、セキュリティに対して非常に厳しい設計が行われている。カーネルから提供されるオブジェクトは基本的にセキュリティ記述子を伴っており、利用するユーザーによってアクセス権を細かく設定されている。XPユーザーではあまり見かけないであろうが、それ以前のバージョンのNT系列OSではファイルにアクセス権を非常にこと細かに設定できる。XPではエクスプローラーからではなく、コマンドプロンプトからCACLSコマンドでアクセス権を設定する。なお、簡易ファイル共有を停止する事により、2000以前のセキュリティ設定タブが利用可能になる。
下位基盤として頑強なセキュリティを持つNTだが、Windows 95のシェルや機能を移植された際に、それらのセキュリティの存在を無視した実装を行った為に、ユーザーは管理者(Administrator)でログオンしていないと作業しづらいといった問題が生じた。限定された権限での動作を考慮していないアプリケーションの問題、また移植されたNT 4.0ではデバイスドライバのインストールがユーザー権限では行えなかった等、不都合が多々あった。
このような経緯から、Windows NT系列、特に2000からXPにかけては、ユーザーはAdministrator権限を持ちっぱなしでログオンしていることがほとんどである。これはUNIXでいえばrootでログオンしっぱなしの状態である。これは非常に深刻な脆弱性をもたらす。なぜなら、あらゆるオブジェクトにアクセス可能であり、たとえばシステムファイルの書き換えを阻むものは何もない。これによりワーム他ウイルスが侵入する隙を作ってしまい、たかだかメールに添付してある実行ファイルを開いてしまっただけで、悲惨な結果を招くことがある。この様な問題に対しては、新しいユーザーを作り、そのユーザーにはPower UserないしUser権限のみを与えるという方法がある。新しいソフトウェアをインストールできないといった問題が生じる事もあるが、NT本来の頑強なセキュリティを利用できるというメリットに比べればさほど大きな問題は無い。XPでは必要に応じてログオフすることなくAdministratorとしてログオンしなおせる他、デバイスドライバのインストールは特権を持つシステムプロセスが代行してくれる。
なお、NT Executiveはオブジェクトを作成する際に、セキュリティ記述子にNULLを指定する事ができる。これはWindows NT系OSの最大のセキュリティホールである。なぜなら、セキュリティ記述子が無いオブジェクトは誰でもアクセスできる。たとえば名前付イベントオブジェクトであれば、誰でもそのイベントを叩いてイベントを発生させる事ができる。名前付パイプなどであれば、勝手にオープンして勝手なデータを流し込むといった事ができる。
[編集] サブシステム
Windows NT系列はマイクロカーネルの考えを取り入れて設計された。システム序列下位より、ハードウェアの違いを吸収するためのHAL、その上位にOSカーネルNT Excectiveがあり、更にその上にサブシステムが作られた。
[編集] Win32サブシステム
Windows NT系の基本的なサブシステムである。
[編集] Win64サブシステム
Windows XP、Windows Server 2003の64bit版では、Win64サブシステムが基本となる。Win32サブシステムはWin32 on Win64機能を用いて実装される。
[編集] Win16サブシステム
従来のMS-DOS/Windows 3.1系列のソフトウェアを動作させるためのサブシステムであり、WOW(Win16 on Win32)機能により互換性を保つようになっている。
Vistaでは英語版相当の機能は提供されているが、日本語版独自の機能は提供されていない。[2]
厳密に言うとサブシステムの本体は仮想8086モード、286プロテクトモード、386プロテクトモードをハンドリングする仮想マシンモニタNTVDM(NT Virtual DOS Machine)で、WOWはNTVDMがトラップしたWin16ライブラリ呼び出しをWin32 APIに呼び変えを行うグループログラムである。NTVDMは16bit DOSシステムコールとWin16 APIを動作させる為に特化しており、例えばVESA BIOSなどはサポートしていない。この事が初期のDOS+WindowsユーザーからNTへの乗り換えへの壁となった。
[編集] OS/2サブシステム
初期のOS/2プログラムを動作させるためのサブシステムである。セキュリティ面からこのサブシステムは停止することが望ましいとされる。Windows XPおよびWindows Server 2003以降ではサポートされていない。[3]
[編集] POSIXサブシステム
POSIX互換のサービスを提供するためのサブシステムである。米国政府に納入するためにこのサブシステムを実装しなければならなかったとされ、あまり積極的に利用はされなかった。OS/2サブシステムと同じく、Windows XPおよびWindows Server 2003以降ではサポートされていない。Services for UNIXに含まれるInterix(旧名OpenNT)という置き換え版が存在する。
[編集] Windowsサービス
NT系列のOSは全部、従来のWindows 9x系には見られない「サービス」という概念[3]を採用している。基本的にはUNIXのデーモンと、それらをコントロールする体系(RC)を統合したものである。サブシステムと似ているが、必ずしもカーネルと密に連携を取る必要はない点が異なっており、マイクロカーネルにおけるサーバープログラムも含まれている。サーバープログラム、クライアントプログラム、セキュリティ管理、プロトコルスタック、デバイスドライバー、ファイルシステム、仮想マシンマネージャ等は全部サービスとして構成されており、動的な「インストール、アンインストール、起動、停止」などの制御が行える。WindowsNT 4.0から追加されたプラグアンドプレイはサービスが動的に構成できる事を利用している。
サービスとしてシステムに組み込まれているモジュール群は標準状態で100を超える。ただしそのうち常時稼動しているサービスは20~30個であり、全部のサービスが常に起動している訳ではない。
運用上必要なサービスを精査して管理することは、セキュリティを向上させ、リソースの無駄を排除し、システムのパフォーマンスを高めるなどメリットがある。
サービスの管理をWindows NT 4.0までは「コントロールパネル」で、Windows 2000以降では「サービスマネージャ」によって行える。また、Windows 2000以降では、services.mscを実行するとサービスマネージャのフロントエンドを呼び出すことができる。
NT 4.0までは、NTサービスという名称であり、Windows 2000以降から、Windowsサービスに名称変更となった。
[編集] デバイスドライバ
NT4.0まではWindows NTカーネルモードドライバが使われ、Windows 2000以降はWindows Driver Model(WDM)が使われている。WDMはWindows 98やWindows Meでも同じソースコードでドライバが開発できるように作られている。
[編集] 脚注
- ↑ NTの意味も参照されたし。
- ↑ NT 3.1のTCP/IPネットワーク能力は、9600bpsのモデム程度であった。
- ↑ つまり、ここでの「サービス」は一般用語としてのそれとは違う意味である。以下の一連の文脈は全部この意味である点に注意。