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系システムは数多くのシステムコールを追加し続けた。 Research UNIXシステムのVersion 7では、約50のシステムコールが提供されていたが、4.4BSDは約110、SVR4は約120のシステムコールを提供した。正確なシステムコールの数は、オペレーティングシステムのバージョンによって異なる。より最近のシステムは、おどろくほど多くのシステムコールを提供している。Linux 5.15は449であり、FreeBSD 8.0は450以上である。 2002年、カルデラ社はパーミッシブなBSDライセンスで V7 をリリースした。 V7のブートイメージはこちらでダウンロードでき、SIMH（英語版）などPC上のPDP-11エミュレータ上で実行可能である。 Nordier & Associates はx86への移植版を今も活発に開発している。2012年現在のバージョンは 0.8a で、インストーラのスクリプトを含むブート可能CDイメージが用意されている。 ポール・アレンは、V7を実行するPDP-11/70を含む数台の歴史的なコンピューターシステムを、アクセス可能な状態で公開している。 Version 7 で登場した新機能として、以下のものがある。 プログラミングツール: lex、yacc、lint、makeなど デニス・リッチーによる従来のPDP-11専用のCコンパイラーに加え、pcc 以下は、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には存在したままだった)。 ^ Timar, Ted (1994年5月30日). “A very brief look at Unix history” (英語). www.faqs.org. 2008年5月16日閲覧。 ^ Salus, Peter H. (2005). The Daemon, the Gnu and the Penguin. Groklaw. http://www.groklaw.net/article.php?story=20050502114023686  ^ Stevens, W Richard. Rago, Stephen A. Advanced Programming in the UNIX Environment, 3rd Edition. 2013. p. 21 ^ Caldera releases original unices under BSD license ^ https://www.nordier.com/#v7x86 UNIX v7/x86 ^ mpx(2) – Version 7 Unix Programmer's Manual ^ mkconf(1) – Version 7 Unix Programmer's Manual ^ Leffler, Samuel J.; Fabry, Robert S.; Joy, William N.; Lapsley, Phil; Miller, Steve; Torek, Chris (1986). An Advanced 4.3 BSD Interprocess Communication Tutorial (Technical report). Computer Systems Research Group, University of California, Berkeley. ^ Ritchie, Dennis M. (1984). “A Stream Input-Output System”. AT&T Bell Laboratories Technical Journal (AT&T) 63 (8): 1897–1910. doi:10.1002/j.1538-7305.1984.tb00071.x.  Version 6 Unix Ancient UNIX マニュアル ベル研究所 ブラウジング可能なソースコード PDP Unix Preservation Society