PDP-7時代のUNIXファイルシステム
D.M.Ritchieさんの1979年の講演をもとにした論文 "The Evolution of Unix Time-sharing System"を読了。
前に読んだACMの論文*1 はUNIXの主な機能と考え方の紹介だったが、 こちらの方は歴史的な経緯も含めて、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はファイルシステムの実験場のようにも思えて、アイディアが出てきた時点で、とにかく手に入る環境で作り始めてしまって、使って改善してった感じだ。