Difference between revisions of "PWB/UNIX"

From Computer History Wiki
Jump to: navigation, search
(clarify PWB-specific kernel stuff)
(tweaks)
Line 1: Line 1:
'''PWB/UNIX''' (usually called just ''''PWB'''; the acronym is from its formal name, the 'Programmer's Workbench')) was a variant of early [[UNIX]] (initially [[UNIX Sixth Edition|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 [[application]]s: both major new ones such as 'make' and the [[Source Code Control System]], and also changes to the [[command processor|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).
+
'''PWB/UNIX''' (usually called just ''''PWB'''; the acronym is from its formal name, the 'Programmer's Workbench')) was a variant of early [[UNIX]] (initially [[UNIX Sixth Edition|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 changes found in the [[application]]s: both major new ones such as 'make' and the [[Source Code Control System]], and also changes to the [[command processor|shell]]. The latter included both functionality improvement, mostly for use in [[shell programming]]; and also increased efficiency there - 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|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.
+
The effort started in mid-1973 after a suggestion by M. L. Ivie, acquiring 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|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 their 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.
+
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, with a user community of over 1,000 people. It had rapidly spread inside Bell, so by that point there were about 10 other PWB sites (some with more than one system) in Bell Labs, and a half-dozen more inside the Bell System; others outside also ran it.
  
 
==PWB 1.0==
 
==PWB 1.0==
Line 14: Line 14:
 
===Other kernel changes===
 
===Other kernel changes===
  
The kernel includes a number of other changes compared to V6, but it is not clear if they were done by the PWB project, or if they were done by Research personnel for their own use, 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.) The first two changes in the list would have been visible to users; the rest were purely internal.
+
The kernel includes a number of other changes, compared to V6, but it is not clear if they were done by the PWB project, or if they were done by Research personnel for their own use, 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.) The first two changes in the list would have been visible to users; the rest were purely internal. The major changes were:
  
* the access(), tell(), and setpgrp() system calls
+
* the access(), tell(), alarm(), pause() and setpgrp() system calls (these seem to have been removed from V6; as the entries in sysent.c are there, but blank)
 
* 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 locking on use of '[[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]])

Revision as of 02:32, 15 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 changes found in the applications: both major new ones such as 'make' and the Source Code Control System, and also changes to the shell. The latter included both functionality improvement, mostly for use in shell programming; and also increased efficiency there - 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, acquiring 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 their 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, with a user community of over 1,000 people. It had rapidly spread inside Bell, so by that point there were about 10 other PWB sites (some with more than one system) in Bell Labs, and a half-dozen more inside the Bell System; others outside 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:

  • 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'

Other kernel changes

The kernel includes a number of other changes, compared to V6, but it is not clear if they were done by the PWB project, or if they were done by Research personnel for their own use, 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.) The first two changes in the list would have been visible to users; the rest were purely internal. The major changes were:

  • the access(), tell(), alarm(), pause() and setpgrp() system calls (these seem to have been removed from V6; as the entries in sysent.c are there, but blank)
  • 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)
  • changes to the logic for swapping processes in and out

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