Difference between revisions of "PWB/UNIX"

From Computer History Wiki
Jump to: navigation, search
(More overview, and 1.0 kernel change details)
(PWB 1.0: more accurate)
Line 10: Line 10:
  
 
* the exec() [[system call]] was changed to temporarily hold its arguments in [[swapping|swap]] space, rather than doing so in [[disk]] [[buffer]]s; this allowed use of much larger argument lists to exec() (V6 had limited the number of [[process]]es allowed to be in an exec() call simultaneously, to prevent [[deadlock]]s)
 
* the exec() [[system call]] was changed to temporarily hold its arguments in [[swapping|swap]] space, rather than doing so in [[disk]] [[buffer]]s; this allowed use of much larger argument lists to exec() (V6 had limited the number of [[process]]es allowed to be in an exec() call simultaneously, to prevent [[deadlock]]s)
* improved support for '[[UNIX V6 internals#exec() and pure-text images|pure texts]]' (shared copies of read-only [[object code|executable binaries]])
+
* improved locking on use of '[[UNIX V6 internals#exec() and pure-text images|pure texts]]' (shared copies of read-only [[object code|executable binaries]])
 
* a new system call, ustat() (one of 4 functions which shared the new pwbsys() system call), which allowed the amount of free space in a given [[file system]] to be discovered (to prevent un-noticed file truncation when a file system was full)
 
* a new system call, ustat() (one of 4 functions which shared the new pwbsys() system call), which allowed the amount of free space in a given [[file system]] to be discovered (to prevent un-noticed file truncation when a file system was full)
 
* another new system call, udata (also in pwbsys(), along with calls to retrieve the system's name, and modify file times), which was used to hold the user's name and home [[directory]] in the process' '[[UNIX V6 internals#rsav, qsav and ssav|user segment]]'
 
* another new system call, udata (also in pwbsys(), along with calls to retrieve the system's name, and modify file times), which was used to hold the user's name and home [[directory]] in the process' '[[UNIX V6 internals#rsav, qsav and ssav|user segment]]'
 
* the access(), tell(), and setpgrp() system calls
 
* the access(), tell(), and setpgrp() system calls
 +
 +
(Note: it is not clear if the first two changes were done by the PWB project, or if they were done by Research personnel, as part of their program of continuous system improvement, after V6 was released, but before PWB copied the system; V6 was released in May 1975, but PWB 1.0, the code examined for this list, was released on July 1, 1977.)
  
 
===User-visible compatability===
 
===User-visible compatability===

Revision as of 16:38, 11 March 2021

PWB/UNIX (usually called just 'PWB; the acronym is from its formal name, the 'Programmer's Workbench')) was a variant of early UNIX (initially V6 Unix) inside Bell Labs, with minor changes to the kernel make it more suitable for use in a production environment (e.g. better response to resource shortages). Of more consequence were those found in the applications: both major new ones such as 'make' and the Source Code Control System, and also changes to the shell (both functionality improvement for use in shell programming, and also increased efficiency - the PWB machines had large user communities, and were heavily loaded; extensive use was made of shell programs).

The effort started in mid-1973 after a suggestion by M. L. Ivie, with its first PDP-11/45 later that year. The intent was to provide a good environment for large programming projects, which were producing software for other, larger computers. Those machines were usually batch processing systems, so extensive remote job entry sub-systems were developed to interact with them (including handling the output). The PWB machines themselves provided tools for the programmers of each project to manage their source code, and collaborate with other individuals in the project.

By October, 1977 it ran on a group of seven PDP-11/45's and PDP-11/70's in a computing center of the Business Information Systems Program (BISP) group at Bell. It rapidly spread inside Bell, so by that point there were about 10 other PWB sites (some with more than one system) at Bell Labs, and a half-dozen more inside Bell System; others outside (including MIT) also ran it.

PWB 1.0

The first major version of PWB, 'PWB 1.0', was, as indicated above, a V6 variant. The operating system itself had only minor modifications:

  • the exec() system call was changed to temporarily hold its arguments in swap space, rather than doing so in disk buffers; this allowed use of much larger argument lists to exec() (V6 had limited the number of processes allowed to be in an exec() call simultaneously, to prevent deadlocks)
  • improved locking on use of 'pure texts' (shared copies of read-only executable binaries)
  • a new system call, ustat() (one of 4 functions which shared the new pwbsys() system call), which allowed the amount of free space in a given file system to be discovered (to prevent un-noticed file truncation when a file system was full)
  • another new system call, udata (also in pwbsys(), along with calls to retrieve the system's name, and modify file times), which was used to hold the user's name and home directory in the process' 'user segment'
  • the access(), tell(), and setpgrp() system calls

(Note: it is not clear if the first two changes were done by the PWB project, or if they were done by Research personnel, as part of their program of continuous system improvement, after V6 was released, but before PWB copied the system; V6 was released in May 1975, but PWB 1.0, the code examined for this list, was released on July 1, 1977.)

User-visible compatability

PWB supports all the standard V6 system calls. Most V6 applications will run without object code modification on PWB 1.0.

PWB 2.0

The next major version of PWB, 'PWB 2.0', was a Unix Seventh Edition variant. This version is apparently no longer extant, and nothing is known of it.

Further reading

  • T. A. Dolotta, R.C. Haight, J. R. Mashey, The Programmer's Workbench, Bell System Technical Journal, Vol. 57, No. 6, July-August 1978

External links