Version 7 Unix
Version 7 UnixまたはSeventh Edition Unixは、UNIXオペレーティングシステムにおける初期の重要なリリースのひとつ。Version 7とかV7とも呼ばれる。ベル研究所が1979年にリリースし、ベル研究所による最後のリリースであった。AT&TはV7が普及するのを待って、1980年代初期にUNIXの有料化を行った。V7 はディジタル・イクイップメント・コーポレーションのPDP-11ミニコンピュータ向けに開発されたが、他のプラットフォームにも移植された。
概要
ベル研究所からのUNIXのバージョンは、そのユーザーズマニュアルの版によって識別されていた。ベル研究所が外部に対して広くリリースを行った最初のバージョンは第6版であった。 1979年にリリースされたSeventh Editionは、初めて商業的にライセンスされたSixth Editionの後継である。 ベル研究所内の Research Unix の系統は Version 8 Unix に引き継がれているが、実際にはV8は4.1BSD を導入して開発された。そして第10版まで開発した後、Plan 9 の開発に集中するようになった。
V7は最初の真に移植可能なUNIXであり、様々な移植が行われた。当時はミニコンピュータ全盛期であり、16ビットのマイクロプロセッサも登場しつつあった。そういった様々なアーキテクチャにリリースから数年で移植が行われている。サン・マイクロシステムズの最初のワークステーションでは(MC68010ベース)、Unisoft社が移植した V7 が動作した。最初のXENIXは V7 の拡張であり、Intel 8086 向けである。Onyx Systems は Zilog Z8000 に移植している。VAXに移植された V7 は UNIX/32V と呼ばれ、BSD系Unixの直接の先祖にあたる。ウーロンゴン大学のチームはミニコンピュータ Interdata 7/32 に V7 を移植した。これをInterdataと同社を買収したPerkinElmer が Edition VII として製品化し販売。世界初のUNIXの商用製品とされている。
DECは、修正を加えた V7 を V7M (Mはmodifiedを意味した)としてPDP-11向けに配布した。V7MはDECのUに Engineering Group (UEG)の開発によるもので、テキストとデータの分離、ハードウェアエラー対応、数々のデバイスドライバなどが加えられている。多数のテープ装置やディスク装置を接続した環境で問題なく動作できるようにすることにも力が注がれた。V7Mは品質が高く評価されていた。UEGが後に Ultrix 開発部門へと発展していったのである。
高性能とエレガントな単純さを兼ね備えていたため、多くの古くからのUnixユーザーによって、V7はUnix開発の頂点であると記憶されており、前後のどのUnixより優れており「最後の真のUnix」であるとされている。。 しかし、リリースされた時点では、大きく拡張された機能のためにV6に比較してパフォーマンスが低下していた。 しかしこの問題は、主にユーザーコミュニティーによって修正されることとなった。
V7のシステムコールは約50個しかなかった。後のUnixやUnix系システムは数多くのシステムコールを追加し続けた。
フリーソフトウェアとしてのリリース
2002年、カルデラ社はパーミッシブなBSDライセンスで V7 をリリースした。
V7のブートイメージはこちらでダウンロードでき、SIMHなどPC上のPDP-11エミュレータ上で実行可能である。
Nordier & Associates はx86への移植版を今も活発に開発している。2012年現在のバージョンは 0.8a で、インストーラのスクリプトを含むブート可能CDイメージが用意されている。
ポール・アレンは、V7を実行するPDP-11/70を含む数台の歴史的なコンピューターシステムを、アクセス可能な状態で公開している。
Version 7 の新機能
Version 7 で登場した新機能として、以下のものがある。
以下は、Research UnixとしてはV7で初めて提供されたが、より古いバージョンがPWB/UNIXに含まれていた。
- 新コマンド: Bourne Shell、at、awk、calendar、f77、fortune、tar(従来の tp というコマンドの置換)、touch
- 新しいネットワークサポート: uucp、Datakit
- 新システムコール: access、acct、alarm、chroot(ディストリビューションの準備で評価用に使用)、exece、ioctl、lseek(従来は24ビットのオフセットだった)、umask、utime
- 新ライブラリ関数: stdioルーチン群、malloc、getenv、popen/system
- 環境変数
- シェルスクリプト先頭行の "#!" で、実行すべきシェルコマンドを指定する方式
- システムの間接アドレッシングを利用した1ファイルで1GBを超える最大ファイル容量のサポート
多重化ファイル
短期間しか提供されなかった機能には、パイプに次ぐプロセス間通信方法である多重化ファイルがある。 プロセスはmpxシステムコールにより特別なファイルを作成することができ、他のプロセスはこのファイルを開くことで「チャネル」をファイルディスクリプターとして取り扱えるようになり、これを通じて多重化ファイルを作成したプロセスと通信することができた。 mpxファイルは実験的なものとされ、デフォルトのカーネルでは有効化されていなかった。 また、後のバージョンでは削除され、BSD socketやCB UNIXのIPC (System Vのもの)が代わりに提供された(しかし、mpxファイルは、4.1BSDには存在したままだった)。