Talk:CB-UNIX

From Computer History Wiki
Revision as of 18:55, 19 May 2023 by Jnc (talk | contribs) (First-hand data on the origins of CB-UNIX: PWB Release 1 was V6)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Connection with SCCS group

The TUHS CB-UNIX readme says "Bill Snider and Hal Pierson were really instrumental in taking UNIX from research and applying it to SCCS (Switching Control Center System). I worked with them when I first hired on. When we first used UNIX on an 11/20 with core memory it was written in assembler (1974)" - which I find confusing as SCCS seems to be in Holmdel? I suspect the connections between SCCS (which eventually did USG UNIX) and the Columbus group are more intertwined than it sounds. Jnc (talk) 20:23, 2 October 2021 (CEST)

SCCS didn't do USG UNIX. See below. Jnc (talk) 15:08, 4 October 2021 (CEST)

First-hand data on the origins of CB-UNIX

A recent (03 Oct 2021) note about the origins of CB-UNIX from Dale DeJager, who was head of the group in Columbus which did CB-UNIX:

The Switching Control Center System (SCCS) was the first project outside of the patent office and research to use the UNIX system. (Note the possible confusion of acronyms: this SCCS is not the Source Code Control System SCCS.) The project was started in 1972/73. I hired into Bell Labs in August of 1973. Hal Pierson and Bill Snider were already working on the project. The supervisor on the project was John Carran. At that time it was running the assembler version of UNIX on the 11/20 with core memory, but was moved to the C-based system as soon as it was available from research. (The beta version of SCCS based on the assembler version of UNIX was deployed to NJ Bell in New Brusnwick, NJ, I believe.) The purpose of the system was to collect all the TTY data that came from a set of 10 to 20 ESS (Electronic Switching System) machines, scan the data and alert a centralized team when something was wrong. The system also allowed centralized staff to control the console of the remote ESSs. This avoided having to staff all the offices 24/7 in the unlikely event that something would go wrong with an ESS.
In the fall of 1974 the all of the SCCS team which was based in Holmdel, NJ at the time, was transferred to Columbus Ohio.
One of the main issues that SCCS initially had with UNIX was the need to collect async TTY data in an efficient manner on a limited machine like the PDP 11/20. Hal and Bill solved this problem by creating a special character device in UNIX called a multiplexor. (The multiplexor also allowed DMA into user space.) Think of this as something like a socket interface. A user program could attach serial TTY interfaces to the multiplexor and then read a single multiplexor interface that would return data from any of the interfaces attached to it, along with a tag that indicated which interface the data came from. Hal also implemented some basic P/V and post/block semaphores in the system.
Aside: Hal also implemented the first file system check routine that was written in C. It replaced an obtuse assembler version from research which simply prompted with an inode number and count.. Bill implemented line disciplines. We also implemented terminal types to allow applications to be independent of specific control sequences for various CRT displays. (This was separate from, but similar to the termcap library that came slightly later (from UCB?)).
In 1974/75 I worked on a the process in the SCCS that was called the Alerter using some of the IPC features. (It scanned all the data from the ESSs looking for problems and alerted the operators when something was amiss.) I gradually became much more involved in supporting the UNIX system for the SCCS until this was my full-time job as a Member of Technical Staff in Columbus.
Other OSSs (Operating Support Systems -- to support operations of the Bell System network) began to be developed in Columbus and these systems started with the UNIX modifications that were added for SCCS. Rather than have each OSS have its own UNIX person or persons, the CB-OSG (Columbus Operating Systems Group) was formed in January of 1977. I was named the supervisor of that group in January of 1979.
The CB-OSG produced and supported multiple releases of CB-UNIX for OSSs, primarily, but not exclusively based in Columbus. CB/UNIX was always based on the C version of UNIX and initially ran on the PDP-11, but was also supported on the VAX product line as it became available from DEC.
Significant enhancements in the kernel of CB-UNIX included: IPC (shared memory, messages, semaphores and extended signals), multiplexed character devices, line disciplines, terminal types, automatic power-fail restart, named pipes, enhanced scheduler and process locking. In user space there were also a number of enhancements including a new /etc/init process that implemented run levels allowing different sets of processes to be started and stopped and enhancements to UUCP for better control of various modems. I recall going to USENIX meetings in the 1978-1981 time frame, and being frustrated in conversations with Dave Yost (RAND?) and Bill Joy by AT&T's policies that prevented us from sharing these technologies.
The CB-UNIX group was disbanded in 1981 when CB-UNIX 2.3 was released and it was determined that needed features for OSSs would be incorporated in UNIX 4.0. This was consistent with the reorganization within Bell Labs to support UNIX from the UNIX lab in NJ. Prior to this time it was recommended (by the MOPS committee) that the OSSs adopt UNIX/RT (based on MERT), but this never really caught on due to the overhead of MERT and the need to move to a new system.
The Switching Control Center System Department never funded the USG. As I recall the USG was formed in MH to support UNIX for use within Bell Labs and the supervisor of that group was Joe Maranzano and the Department Head was Berkeley Tague.

Jnc (talk) 15:08, 4 October 2021 (CEST)

And some more from Dale DeJager, from here (Jan 16, 1984):

I was the supervisor of the group in Columbus for a number of years that was responsible for the development of CB-UNIX. The system was derived from the UNIX operating system that was used in the SCCS (Switching Control Center System), which incidentally was the first application of UNIX outside of research. (UNIX was running on an 11/20, at the time, without memory management and we deployed the first version of SCCS in New Jersey Bell in New Brunswick, NJ.) The SCCS version of UNIX had a number of unique features for the times: semaphores and line disciplines (in 1974!) for example. Hal Pearson was responsible for semaphores, and Bill Snider for line disciplines.
Messages and shared memory were first added to CB-UNIX in about 1975 or 1976. Shared memory was called MAUS (pronounced moss, standing for Multiple Access User Space) and was derived from an earlier version done by R. J. Purdue. CB-UNIX became rather widely accepted within BTL as a base for turnkey Operations Systems - many of which have been described in the BSTJ. Note that CB-UNIX was not a derivative of UNIX/RT, but of Version 6 and Version 7. PWB UNIX was also a derivative of Version 7. USG UNIX was originally a derivative of Version 6 and 7 with some CB-UNIX facilities added. Eventaully a decision was made to consoldate to two versions of UNIX: UNIX/TS and UNIX/RT. RT was a derivative of MERT, and TS a derivative of PWB UNIX. RT was to be used by Operations Systems, but was never too widely accepted. Eventually, UNIX/TS was augmented to have many of the features present in CB-UNIX (this was done by Roger Faulkner at Indian Hill, BTL. This, in turn, became the base for UNIX 4.0, which was never released externally. While this augmentation was going on, UNIX/TS was being changed into UNIX 3.0 which was release externally as SYSTEM III.
In more recent history, CB-UNIX has been eliminated entirely in favor of UNIX 5.0. (one reason is because it never ran on anything other than the 11/70)

One known error (this is why historians are wary of human memories :-): PWB/UNIX was actually a derivative of Version 6 - no question. Jnc (talk) 17:09, 7 March 2023 (CET)

At least, PWB Release 1 was. The PWB group may have been working with an earlier version at first. Jnc (talk) 19:55, 19 May 2023 (CEST)