Programmer's Note

コード読み書きの備忘録。

PDP-7時代のUNIXファイルシステム

D.M.Ritchieさんの1979年の講演をもとにした論文 "The Evolution of Unix Time-sharing System"を読了。

前に読んだACMの論文*1UNIXの主な機能と考え方の紹介だったが、 こちらの方は歴史的な経緯も含めて、UNIX OSがどう機能的に発展したかが分かる。非常に面白かった。

UNIXの最初のバージョンはPDP-7で書かれ、その後PDP-11に移植され大きく発展した。 最初のPDP-7時代はファイルシステムにしてもプロセス管理にしても、ぜんぜん荒削りだった。

この論文読んで分かったのは、

  • すべてはファイルシステムのアイディアから始まった
  • ファイルシステムの基本型は、Thompson, R.H.Canady, Richieの3人議論してできた
  • Richieはデバイスファイルのアイディアに貢献した

というところ。とはいえ、なによりThompsonさんがOS作りたくてうずうずしてて、色々試していたことがやっぱすべてかと。 なんと最初はMulticsファイルシステムのパフォーマンスのシミュレーションをしていた。(この時期はBell LabがMulticsから手を引くと決まってたが、Ritchie、Thompsonらは最後まで触ってたメンバーだった)

一方、会社(Bell Lab)にはOS作るために新しいマシン購入の申請をするが、すべて却下される。 そして、ころがってるPDP-7を見つけて、その上でファイルシステムを実装するのである。

PDP-7時代のファイルシステムの構造はほぼ完成系だったが、 いくつかの点で原始的な感じだった。

  • Path名が使えなった(常にカレントディレクトリベース)
  • OS実行中はディレクトリ構成、デバイスファイルは変更できなかった(ディスクの再構築が必要)
  • ディスクをマウントする考え方もなかった

あとマシン(PDP-7)の制約上、I/Oアクセス時にプロセスを止めざるをえなかった。 プロセス管理ももっと単純で、マルチプロセスはできなった。(同時に走るプロセスは一個)。メモリ上に存在するのは、ShellとShellが起動したプロセスの2つのみ。

という風に、(プアなPDP-7環境ゆえの制約もあり)最初期のUNIXファイルシステムの実験場のようにも思えて、アイディアが出てきた時点で、とにかく手に入る環境で作り始めてしまって、使って改善してった感じだ。