Berkeley Time-Sharing System
The Berkeley Time-Sharing System was a very influential time-sharing operating system for an enhanced SDS 930 (effectively the prototype of the later SDS 940; the changes (below) prevented a user process from doing anything which could interfere with another process, or with the operation of the overall system).
It was produced by Project GENIE at Berkeley; it was primarily written by L. Peter Deutsch, Butler Lampson, and Chuck Thacker. It later became a product for SDS; it was also updated by Ann Hardy at Tymshare and named TYMCOM (later TYMCOM-IX).
It had a substantial influence on the early design of UNIX; Ken Thompson had worked on it while he was at Berkeley, and was very familiar with it, and some aspects of UNIX (e.g. the split between fork() and exec()) copy how the Berkeley system operated. It was also one of the influences on TENEX.
The changes to the 930 were:
- Addition of two additional operating modes for the CPU, "user" and "monitor" (or "executive") to the base "normal" mode (in which the machine operated almost exactly as a normal 930); the machine started in normal mode (the only way to enter normal mode), and a special instruction (the only visible 'non-normality' in normal mode) could switch to monitor mode.
- Instructions were divided into two classes, ordinary and "privileged" (such as halt and I/O instructions); "An attempt to execute a privileged instruction while in user mode will result in the execution of a NOP instruction and, subsequently, a trap".
- Some reserved instructions were used by the system as 'system programmed operators' (SYSPOPs). (Half of the SYSPOPs were allocated to the user, and half to the system.)
- The user's address space was divided into 8 segments (each 2K words long), each of which could be disabled, or independently relocated to any location in main memory (either for normal read/write access, or read-only).
- In monitor mode, instructions with the sign bit (normally unused) set used instead user address mapping for that instruction.
In other words, much the same changes as were made to other machines in that era to allow time-sharing at the object code level.
Supposedly, it featured a limited version of PCLSRing. From Mark Emmer:
- From what I read of the PCLSRing feature, it would be the equivalent of SYSPOPs (System Programmed Operators) in the 940 system. That is, system calls appeared to be atomic while also being interruptible. During an interrupt, the PC would point to the original SYSPOP, perhaps with altered registers for things like counts and memory pointers, reflecting incremental progress with the system call. The user PC would never point to an address within the monitor. On interrupt return, the SYSPOP would be restarted in user space.