HN 日本語サマリー

← 一覧へ戻る
科学・技術

MS-DOS 2.0への道

The Road to MS-DOS 2.0 (nemanjatrifunovic.substack.com)

92 pointsby whobre41 コメント

要約

この記事は、MS-DOS 2.0がUNIXライクな機能を取り入れ、単一タスクのCP/Mクローンから進化していく過程を解説しています。当初はUNIXをベースにしたXENIX開発を目指していましたが、マイクロプロセッサの制約から断念。IBM PCの登場により、CP/MライクなOSが必要となり、86-DOSをベースにしたPC-DOS/MS-DOSが誕生しました。MS-DOS 2.0では、Paul Allenの主導により、階層型ファイルシステム、動的ロード可能ドライバ、バックグラウンドプリントスプーリングなどの機能が追加され、UNIXの影響を受けつつも、PCの制約内で実用的なOSへと進化しました。

全文翻訳

MS-DOS 2.0への道 UNIXへの小さな一歩 Nemanja Trifunovic 2026年8月8日 共有 MS-DOSは望まれぬ子供でした。Tim Patersonがその前身である86-DOSを開発したのは、彼が経営していたSeattle Computer Products (SCP) がすでにリリースしていた8086ベースのCPUボードに、どうしても何らかのオペレーティングシステムが必要だったからです。彼は「まともな」マルチタスクシステムを作りたかったのですが、Z80用に学校のプロジェクトとして似たようなものを作った経験があったので、その方法を知っていました。しかし、システムは迅速に必要とされたため、彼と上司は、最小限のメモリを搭載したIntel 8080ベースのコンピューター用に1974年に開発されたミニマルなオペレーティングシステムであるDigital ResearchのCP/Mに似た、「手早く簡単な」もので始めることに同意しました。 Microsoftの創設者であるPaul AllenとBill Gatesも、16ビットマイクロプロセッサの準備を進めていました。驚くことではありませんが、彼らは16ビットミニコンピューターで人気があったUNIXに賭けることにしました。UNIXはAT&TのBell Labsによって1970年代初頭に開発され、大学に自由に配布されていました。1980年2月、MicrosoftはWestern Electric (AT&Tの製造部門) からUNIX V7のソースコードをライセンスしました。名前はライセンスされなかったため、1980年8月25日、MicrosoftはXENIXという独自のUNIXベースの製品を発表しました。 当初、AllenとGatesは、UNIXのポータビリティと柔軟性により、XENIXが16ビットマイクロコンピューターの標準オペレーティングシステムになると確信していました。実際にUNIXのソースコードを手に入れると、それが現在の世代のマイクロプロセッサ、特にIntel 8086にはうまく適合しないことが判明しました。さらに悪いことに、それはメモリを大量に消費しました。Ken Thompsonが1969年にPDP-7ミニコンピューターで最初のバージョンを開発して以来、それは大きく成長していました。すぐに、MicrosoftはUNIXコンサルティングを専門とする小規模企業であるSCOと提携し、XENIXをターゲットプラットフォームに移植する作業のほとんどを引き継ぐことになりました。 IBMがIntel 8088ベースのパーソナルコンピューターを開発する計画を発表し、それがわずか16KBのRAMで始まることがわかったとき、XENIXをそのような制約のある環境に押し込むことは不可能であることが明らかでした。好き嫌いは別として、IBMはCP/Mのようなものを必要としており、Digital Researchからそれをライセンスする試みが失敗した後、彼らはMicrosoftに戻りました。Microsoftは、SCPから86-DOSを買収しました。オペレーティングシステムはIBM PC用に調整され、ある程度磨かれ、PC-DOSと改名され、1981年8月にリリースされました。Microsoftは、MS-DOSという名前で他の顧客に販売する権利を保持しました。 しかし、シングルタスクのCP/Mクローンが新世代のパーソナルコンピューターには不十分であるという、 nagging feeling がありました。Digital Researchは1981年9月にマルチユーザー、マルチタスクのMP/M-86をリリースし、1982年初頭にシングルユーザーのマルチタスクConcurrent CP/Mを発表しました。これに対応して、Microsoftはオペレーティングシステムの階層的なアプローチを考案しました。一番下にシングルユーザー/シングルタスクのMS-DOS、一番上にマルチユーザー/マルチタスクのXENIX、そしてその中間にXEDOSと呼ばれるものがありました。これはXENIXのシングルユーザーバージョンです。この「アップワードコンパチブルなオペレーティングシステムのピラミッド」は、1982年1月のByte Magazineの編集記事で発表されました。 XEDOSは単なるマーケティングの策略以上のものだったようです。MicrosoftとSCOは、XENIXから機能を削除して当時のPCで利用できるようにしようとしましたが、ほとんど成功しませんでした。Paul Allenは2011年の著書「Idea Man」の中で次のように書いています。「スケールダウンされたUNIXでさえ、8086チップには要求が多すぎた」と。 1982年7月のByte誌では、MS-DOSとCP/M-86を比較する記事の第2部で、2つの主要な16ビットオペレーティングシステムの将来の見通しなどが分析されました。CP/M-86の道は明らかでした。次世代のConcurrent CP/M-86が3月にWest Coast Computer Faireで紹介されていました。Microsoftに関しては、その代表者はXEDOSに言及せずにMS-DOS 2.0について話していました。計画は、XEDOSをスケールダウンするのではなく、新しい機能と「Xenixから派生した多数のユーティリティ」でMS-DOSを拡張することであることが明らかでした。MS-DOSからXENIXへの上り道は明確ではありませんでした。 計画の変更は1982年初頭のいつか、IBMが次期IBM PC XTモデルにバンドルされる新しいバージョンのDOSを要求した後、起こりました。XTはオリジナルのPCからの控えめな段階的な改善であり、IBMはMS-DOS 2.0が同様に制限された範囲を持つことを期待していることを明確に伝えていました。彼らが本当に望んでいたのは、新しい内蔵ハードディスクをサポートすることだけでした。オペレーティングシステムを小さく保つことは、IBMにとって新しい機能を追加することよりもはるかに重要でした。Bill Gatesは喜んで応じましたが、Paul Allenはそれを許しませんでした。主要なDOS開発者であるMark ZbikowskiとAaron Reynoldsと協議した後、AllenはMS-DOSを関連性を保つために不可欠だと感じた機能をサポートするためにクリーンな書き直しが必要だと確信するようになりました。 最初で最も重要な機能は、ハードディスクをより適切にサポートするためにFATファイルシステムを拡張することでした。Allenは、フラットファイルシステムを、ルートディレクトリとネストされたサブディレクトリを持つ、UNIXに似た階層構造に置き換えることを望んでいました。これはディスク上のファイルを整理する方法です。その結果の1つとして、CP/MライクなFile Control Blocks(互換性のために保持されていましたが)の代わりにファイルハンドラが導入されることになります。 2番目の機能は、動的にロード可能なドライバでした。MS DOS 1.xは、すべてのハードウェアにアクセスするためにモノリシックなBIOSモジュールを使用していました。新しい周辺機器を含むあらゆる変更には、BIOSの再コンパイルまたは少なくともパッチ適用が必要でした。MS-DOS 2.0では、BIOSは変更なしでインストール可能なドライバを読み取るように拡張される予定でした。設定ファイルが導入され、BIOSがインストール済みドライバを指すようになり、必要に応じてロードされるようになります。 3番目の主要な機能は、バックグラウンドプリントスプーリングの限定的なサポートでした。そのアイデアは、バックグラウンドで実行され、プリンター出力を引き継ぐ小さなユーティリティを提供することでした。これにより、アプリケーションはプリンターにデータを送信している間ブロックされる必要がなくなります。UNIXやMP/Mで実装されているような完全なマルチタスクは、MS-DOS 2.0では考慮されませんでした。 さらに、XENIXから直接インスパイアされたfind、more、sort、fcなどの機能や、chdirやmkdirなど、新しい階層ファイルシステムをサポートするために必要なユーティリティが多数追加されました。何らかの形式のI/Oリダイレクションも含まれる予定でしたが、MS-DOSのシングルタスク性を考えると、メモリ内パイプは明らかにありませんでした。 IBMはAllenの野心的な計画に満足していませんでした。 しかし、すぐにIBMはDOS 2.0を既存のユーザーベースを混乱させないように、DOS 1.1で使用されていた約8000バイトにできるだけ近づけることにコミットしていることが明らかになりました。私たちの新しいDOSがメモリを食いすぎると、IBMは小さなPCシステムが一部の人気のあるアプリケーションのためにスペースを使い果たすことを恐れていました。そして彼らは、たとえより多くのお金を得ているとしても、仕様を超えていく請負業者に慣れていませんでした。 Paul Allen: Idea Man Bill Gatesは、彼が内部的に「顧客」と呼んでいたIBMを怒らせることに非常に消極的でした。Boca Ratonからの苦情を受けた後、彼は恐怖におののくMark Zbikowskiの前で、Paul Allen(IBMを「あの馬鹿ども」と呼んでいた)と激しい口論になりました。最終的に、Gatesは折れ、Allenのチームが望む機能を実装することを許可しましたが、納期を守ることが条件でした。 MS DOS 2.0チームはわずか6人で構成されていました。Paul Allen、Mark Zbikowski、Aaron Reynolds、Nancy Panners、Chris Peters、Mani Ulloa2。MS-DOS 1.0の開発者(Tim PatersonとBob O'Rear)はどちらも2.0の開発には関与していませんでした。 MS-DOS 2.0の最初のバージョンは、1983年3月8日にIBM PC XTにPC-DOS 2.0としてバンドルされて出荷されました。MS DOS 1.0よりもはるかに多い約20KBのRAMを必要としたため、両方のバージョンはしばらくの間同時に販売され続けました。 書き直しの規模を理解するために、MS-DOSのGitHubリポジトリにあるMS-DOS 1.25と2.0のソースを比較できます。残念ながら、一部のユーティリティ(chkdskやsysなど)は1.25ではバイナリ形式のみで利用可能ですが、2.0ではソースコードも利用可能であるため、比較は完全に単純ではありません。とはいえ、1.25のソースツリーには、アセンブラ(ASM.ASM)、hex2bin(HEX2BIN.ASM)、Z80から8086へのトランスレータ(TRANS.ASM)などのツールを含む7つのファイルしか見つかりません。Entir