トップ よくある質問 作者ブログトップ お問い合わせ・ご注文

UNIX初期の歴史再検証 --- Part8

 次は、リッチーとトンプソンの共著である、"The UNIX Time-Sharing System"で、http://cm.bell-labs.co/who/dmr/cacm.htmlにあります。
これは、Abstractの末尾に書かれているように、1978年8月のベル研技術報告集であるBell System Technical Journalに掲載されたものです。
これはそのままUNIX バージョン7のマニュアルの補助資料として添付されています。
ただし、バージョン7のために書かれたわけではなく、時期的にもバージョン7の半年ほど前に書かれたものです。

 Abstractの末尾に書かれているように、これは、74年6月のACMの論文集に掲載されたものが元になる論文であり、http://dl.acm.org/citation.cfm?id=361061で読むことができます。
時期的に見て、だいたいバージョン5に関する内容でしょうが、バージョン5のために書かれたものではありません。
さらにこの元は、1973年のACMの研究会の発表で、報告集がhttp://dl.acm.org/citation.cfm?id=800009.808045&coll=DL&dl=GUIDE&CFID=520852802&CFTOKEN=32387465にて一応購入できますが、これは1ページのアブストラクトであり、本文は読めないあるいは当初から存在しなかったようです。
 また、これらとは別に、バージョン6のマニュアルに添付されている補助資料となっているバージョンがあり、書かれている数値などに差があります。

 まずは、最も新しい1978年版から見て行きます。

・There have been four versions of the Unix time-sharing system. The earliest (circa 1969-70) ran on the Digital Equipment Corporation PDP-7 and -9 computers. The second version ran on the unprotected PDP-11/20 computer. The third incorporated multiprogramming and ran on the PDP-11/34, /40, /45, /60, and /70 computers; it is the one described in the previously published version of this paper, and is also the most widely used today. This paper describes only the fourth, current system that runs on the PDP-11/70 and the Interdata 8/32 computers.
UNIXには4つのバージョンがある。
  バージョン1:PDP-7とPDP-9の上で動く
  バージョン2:PDP-11/20上で動く
  バージョン3:PDP-11/23,40,45,60,70の上で動く
  バージョン4:PDP-11/70とInterdata 8/32の上で動く

 いきなり問題となる文章が書かれています。この内容は前回の表で整理したものと一致しません。
また、最初のバージョンがPDP-9の上で動いていることになっているほか、PDP-11/23,60などのこれまで出てこなかった機種名が動作対象になっています。
 この論文はACMから刊行されている、査読を通過したものであり、一般的には信頼性が高いものと思われます。
「IT業界の開拓者たち」の記述も、これをそのまま用いたものとみられます。

 しかしながら、これは公式マニュアルと矛盾する内容であり、解釈を要します。
いくつかの点に絞って考えてみます。

疑問1:PDP-9の上で最初のUNIXが動作したのか
  これについては、"The UNIX Time-Sharing System"の1974年版, バージョン6付属版のすべてに同じ記述があります。
従って、誤記等ではないであろうとみられます。となると、以下の可能性があります。
  ・この論文はトンプソンが共著者に含まれており、リッチーだけが書いたものではない。リッチーはPDP-9上での動作を確認していないが、本論文の共著者であるトンプソンは動作確認をしていた
  ・実際には動作していないが、多分動くだろうと考えていた

 まず、前者の可能性は低いだろうと思います。
もし、実際にPDP-9上で動作していたならば、いずれかの時点でリッチーがそのことを知るはずです。
2000年代までにリッチーがUNIXについて記述したどんな文献にも、PDP-9でUNIXが動いたという記述はありません。
またベル研内にPDP-9があったという話も聞いたことがありません。

 後者の可能性について考えてみます。
Gordon Bell他著の"Computing Engineering"のP153,P154には
The basic logic and hardware for the PDP-9 (Figure 25) were the same as that used in the PDP-7.

The major technology advance of the PDP-9 over the PDP-7 was in memory.

という記述があります。
このようにPDP-9はPDP-7とほとんど同じものであったようです。
PDP-11であればPDP-11/**のように機種番号で区別されていた程度の違いです。
このことから、トンプソンは、PDP-9でも微修正で動くと考えていたのではないでしょうか。
同様に、この論文で言うバージョン3に対する対応機種として記述されているPDP-11/23, 60なども、自分たちで動作確認はしていないが、その気になれば微修正で動かせるだろうと思っていたのではないでしょうか。

 要は、PDP-9で本当に動いたのではなく
・PDP-7, PDP-9系列のコンピュータで動くべく開発されている
といった程度ではないでしょうか。
 この推測を明示的に裏付ける資料はありません。
しかしながら、PDP-9上で動作することを記述したものは、一次文献内にはこの資料しかないことも事実です。

2021年5月18日追記。PDP-9で動かしたことはなかったのではないかという推測は間違っていました。
The UNIX Heritage Societyのメーリングリストの2002年8月18日になされた"PDP-9?"と題する投稿があり、

we all know that UNIX first ran on the PDP-7 and then on the PDP-11/20, but does anyone know anything about PDP-9 UNIX? it's mentioned in "The UNIX Time-Sharing System" in the V7 manual: "The earliest [version of UNIX] (circa 1969-70) ran on the Digital Equipment Corporation PDP-7 and -9 computers."
という疑問が出されました。これに対し、2002年8月20日にリッチーが返信し、
The 7, 9, 15 were very compatible. I think the -15 had some scheme for using an index register, which the earlier ones didn't have, but it was otherwise pretty much identical in IS architecture. There was very little rewriting to try Unix out on the -9 and -15; perhaps just some tweaks in the disk device commands. I don't think the system actually ran on either for more than a few hours. Ken was just playing around. The -15 may have had an electrically different bus, but I'm reasonably sure it was not a Unibus. All of them used IOT instructions, not memory-mapped IO registers. Both of the machines we tried were being used by other groups and we couldn't squat on them as with the PDP-7. I recall that the -15's main job was controlling a step-and-repeat camera that exposed LSI masks.
と回答しています。
つまり、短時間ではあったが、借り物のPDP-9で動作した。更に、PDP-15でも動作した。 ということです。
https://wiki.tuhs.org/doku.php?id=systems:pdp7_unixにも同様のことが書かれています。

なお、WikipadiaのResearch UNIXの英語版では、対応機種からPDP-9が2006/11/2 18:24のバージョン以降では外されています。
PDP-9での操作について疑問を持つ人が過去にいたということです。

疑問2:バージョン番号が公式マニュアルと異なる
 これについては、先に挙げた、公式マニュアルの記載と明確に異なります。
しかしながら、そもそもバージョンとは何かということをはっきりさせておく必要があります。
 公式マニュアルから作成した表での、バージョン1からバージョン7までは、実はマニュアルでは単にEditionとしか記述されていません。
あくまでもマニュアルの版を表すものであり、ソフトウエアーとしてのUNIXのバージョンを表すものではありません。
これをバージョンと呼んでいるのは、後の時代の分類にすぎません。

 UNIX開発当初に書かれた文献で、UNIXのバージョンによる識別について明確に記述したものは、この論文以外にありません。
 http://cm.bell-labs.co/who/dmr/spacetravel.htmlには"the first version of UNIX"という記述がありますが、これとて、単に、「最初のUNIX」という程度の意味合いにすぎず、それ以降のバージョンをどのように識別するかという内容で書かれているわけではありません。
 この当時にあって、UNIXのバージョンに関して明確な規定はなく、マニュアルは単に適当なタイミングでその時点での機能を記載したにすぎず、ソフトウエアーとしての区切りを表すものではない可能性があります。

 とすれば、対応するハードの違いに合わせて、

 バージョン1:PDP-7系統
 バージョン2:PDP-11/20
 バージョン3:PDP-11/45系統の保護機能付きPDP-11
 バージョン4:InterdataなどのPDP-11系統以外に移植可能なもの

という形で、この論文内で便宜的に分類しただけとも考えられます。

 実際、http://cm.bell-labs.co/who/dmr/retro.htmlには、

One problem in discussing the capabilities and deficiencies of UNIX is that there no unique version of the system. It has evolved continuously both in time, as new functions are added and old problems repaired, and in space, as various organizations add features intended to meet their own needs.

と書かれています。
つまり、当時には、明確にバージョン管理されておらずに、時間的に連続に変化しており、ベル研外部でもそれぞれの用途に合わせて書き換えられていたということです。

 このように、この論文内におけるバージョンとは、単にこの時点で著者が便宜的に分類したに過ぎないものであると見らます。
ただ、同様の記述が"The UNIX Time-Sharing System" 1974年版バージョン6付属の文書に書かれていることから、この分類はある程度意味をなすものと見られていたのでしょう。

 この論文内の分類と、公式マニュアルを元にして作った表とを対応させると
論文内のバージョン  公式マニュアルのバージョン
バージョン1バージョン0
バージョン2バージョン1,2
バージョン3バージョン3,4,5,6
バージョン4バージョン7
となります。

 このように、この論文でのバージョンは、公式マニュアルのEditionを元にして付けたバージョンとは異なるものです。
 現在、初期のUNIXの分類においては、公式マニュアルのEditionをバージョンとするものが一般的で、本ブログもそれに従います。

 このあたりの事情を理解していればよいのですが、2種類のバージョンを混在させている記述が結構あります。
最初に挙げた、「IT業界の開拓者たち」では、

 UNIX第1版はPDP-7、PDP-9用で、UNIX第2版はPDP-11/20用、UNIX第3版はPDP-11/34/40/45/60/70用、 UNIX第4版はPDP-11/70用である。UNIXがゲームやワープロなどの趣味的な色彩を払拭し、OSとしての完成度を見せ始めるのは、UNIX第5版を経て1976年のUNIX第6版あたりになってからである。

と書かれています。
ここでいう「UNIX第4版」までの分類は、"The UNIX Time-Sharing System"に基づくものであり、「OSとしての完成度を見せ始めるのは・・・」の部分は公式マニュアルベースの分類です。
2種類のバージョン概念が混在してしまっていることがわかります。
"The UNIX Time-Sharing System"のバージョン概念を用いるならば、ここは、

 UNIX第1版はPDP-7用で、UNIX第2版はPDP-11/20用、UNIX第3版はPDP-11/34/40/45/60/70用、 UNIX第4版はPDP-11/70用である。UNIXがゲームやワープロなどの趣味的な色彩を払拭し、OSとしての完成度を見せ始めるのは、UNIX第3版の末期あたりになってからである。

と書かねばなりません。
 この「IT業界の開拓者たち」はHello!PCとPC Userという雑誌上での連載を単行本化したものがベースになっており、東京電機大学の脇英世教授が書かれたものです。
この人は他にも多くの書籍を出しており、大変多産な方のようです。
ただ、内容には、このUNIXに関する箇所以外にも、調査不足な箇所があります。
文献調査を行ってはいるようですが、複数の文献を突き合わせて考えることはしていないようです。
そんなことをしていたら多くの書籍を書くことはできないでしょうし、本業は別にある方ですから、その合間に書くとなれば制約もあるでしょうけれど、記述内容が不正確な場合があることには留意が必要です。

 このほかにも、"A Quarter century of UNIX"のP145(日本語版ではP155)にも同様の混乱が見られます。
その箇所には出典の記載なしに、いきなり
1st: PDP-7
3rd: PDP11; 11/20

・ PDP-11/45

6th: PDP-11/70
7th: PDP-11; Interdata 8/32
という記述が出てきます。
これは"The UNIX Time-Sharing System"の記述とも異なり、作者が、"The UNIX Time-Sharing System"に基づく分類と、マニュアルのエディションを元にした分類との差に気が付きながらも、深く考えずに、意図的につじつま合わせをしようとしているようにも取れなくはありません。

 このあたりが、私が"A Quarter century of UNIX"の信頼性に疑問を抱く一つの理由でもあります。

 なお、"The UNIX Time-Sharing System"の冒頭には、

Unix is a general-purpose, multi-user, interactive operating system for the larger Digital Equipment Corporation PDP-11 and the Interdata 8/32 computers.

という記述があります。
対応機種として、"PDP-11"という漠然とした記述がありますが、これは全てのPDP-11に対応するというわけではなく、最新のPDP-11であるPDP-11/70という意味だろうと思います。



前回へ      次回へ