TSS (operating system)

Last updated
TSS
IBM logo.svg
Developer IBM
Working stateDiscontinued
Source model Source available
Initial release1967;57 years ago (1967)
Available in English
Platforms System/360 Model 67, System/370 models with DAT
Default
user interface
Command-line interface
License TSS/360: free
TSS/370: Proprietary
IBM System/360 Model 67-2. This is the computer model on which TSS/360 would have run IBM360-67AtUmichWithMikeAlexander.jpg
IBM System/360 Model 67-2. This is the computer model on which TSS/360 would have run

The IBM Time Sharing System TSS/360 is a discontinued early time-sharing operating system designed exclusively for a special model of the System/360 line of mainframes, the Model 67. Made available on a trial basis to a limited set of customers in 1967, it was never officially released as a supported product by IBM. TSS pioneered a number of novel features, some of which later appeared in more popular systems such as MVS. TSS was migrated to System/370 and 303x systems, but despite its many advances and novel capabilities, TSS failed to meet expectations and was eventually canceled. The Resident Supervisor of TSS/370 was used as the basis for a port of UNIX to the IBM mainframe. [1] TSS/360 also inspired the development of the TSS/8 operating system. [2]

Contents

Novel characteristics

TSS/360 was one of the first implementations of tightly coupled symmetric multiprocessing. A pair of Model 67 mainframes shared a common physical memory space, and ran a single copy of the kernel (and application) code. An I/O operation launched by one processor could end and cause an interrupt in the other. The Model 67 used a standard 360 instruction called Test and Set to implement locks on code critical sections.

It also implemented virtual memory and virtual machines using position-independent code. [3]

TSS/360 included an early implementation of a "Table Driven Scheduler"  a user-configured table whose columns were parameters such as current priority, working set size, and number of timeslices used to date. The kernel would refer to this table when calculating the new priority of a thread. This later appeared in systems as diverse as Honeywell CP-V and IBM z/OS.

As was standard with operating system software at the time, TSS/360 customers (such as General Motors Research Laboratories) were given full access to the entire source of the operating system code and development tools. User-developed improvements and patches were frequently incorporated into the official source code.

User interface

TSS provides users a command-line interface. [4] Users interact with the command system. The command format consists of Command_Name[ operands]. The command name is one to eight characters without imbedded blanks. The operands are optional depending on the command, and must be separated from the command name by at least one blank. Multiple operands should be separated by TAB characters or commas. Command lines can be continued by typing a hyphen ("-") at the end of the line to be continued and typing the continuation at the beginning of the next line. Multiple commands can be written on a line by separating them with semicolons (";"). Comments are allowed in command lines, separated from the command with a semicolon and included in single quotes ("'"). Operands can be either positional or keyword, with the format "keyword=value".

System commands are divided into seven categories:

Position-independent code

TSS provided an early implementation of position-independent code, the ability to have different processes run a single copy of an executable possibly mapped to a different virtual addresses in each process.

Each procedure may have a read-only public CSECT, a writable private Prototype Section (PSECT) and a writable save area, typically located in the PSECT. Address constants of external procedures and entry points must be located in the PSECT, since the dynamic loader [5] will not place a routine at the same virtual address in every process. A program that follows Type I linkage conventions is generally responsible at entry for saving its registers in the save area pointed to by register 13, retrieving the address of its PSECT from word 19 of the save area, chaining the save area to a new save area and putting the address of the new save area in register 13. A caller that follows Type I linkage conventions loads a V-constant for the routine into General Register 15 (GR15) and copies an R-constant for the routine's PSECT into the 19th word of the save area pointed to be GR13 prior to calling that routines. [6] [7]

When the dynamic loader loads a program, it makes a copy of the PSECT and relocates the adcons to reflect the virtual addresses assigned within the current process, therefore each user of the program has a unique copy of the PSECT.

The Dynamic Loader does not load program pages or resolve address constants until the first page fault.

Criticism

TSS/360 suffered from performance and reliability problems and lack of compatibility with OS/360, although those issues were eventually addressed. IBM attempted to develop TSS on a very aggressive schedule with a large staff of programmers to compete with Multics. By 1967, it had become evident that TSS/360 was suffering from the same kinds of delays as OS/360. In February 1968, at the time of SHARE 30, there were eighteen S/360-67 sites attempting to run TSS. During the conference, IBM announced via "blue letter" that TSS/360 was being decommitted  a great blow to the time-sharing community. This decision was temporarily reversed, and TSS/360 was not officially canceled until 1971. However, TSS/360 continued to be quietly available for a time to existing TSS/360 customers, as an interim measure.

After TSS/360 was canceled, IBM put its primary efforts into the Time Sharing Option (TSO), a time-sharing monitor for OS/360. Several other groups developed less ambitious, more successful time sharing systems for the S/360-67, notably CP-67 at IBM's Cambridge Scientific Center, an early virtual machine monitor which evolved into VM/370, MTS at the University of Michigan, and ORVYL at Stanford University. IBM also provided the TSS/370 PRPQ as a migration path for existing TSS/360 customers, which went through multiple releases.

See also

Related Research Articles

<span class="mw-page-title-main">MVS</span> Operating system for IBM mainframes

Multiple Virtual Storage, more commonly called MVS, is the most commonly used operating system on the System/370, System/390 and IBM Z IBM mainframe computers. IBM developed MVS, along with OS/VS1 and SVS, as a successor to OS/360. It is unrelated to IBM's other mainframe operating system lines, e.g., VSE, VM, TPF.

<span class="mw-page-title-main">IBM System/360</span> IBM mainframe computer family (1964–1977)

The IBM System/360 (S/360) is a family of mainframe computer systems that was announced by IBM on April 7, 1964, and delivered between 1965 and 1978. It was the first family of computers designed to cover both commercial and scientific applications and a complete range of applications from small to large. The design distinguished between architecture and implementation, allowing IBM to release a suite of compatible designs at different prices. All but the only partially compatible Model 44 and the most expensive systems use microcode to implement the instruction set, featuring 8-bit byte addressing and binary, decimal and hexadecimal floating-point calculations.

<span class="mw-page-title-main">History of operating systems</span> Aspect of computing history

Computer operating systems (OSes) provide a set of functions needed and used by most application programs on a computer, and the links needed to control and synchronize computer hardware. On the first computers, with no operating system, every program needed the full hardware specification to run correctly and perform standard tasks, and its own drivers for peripheral devices like printers and punched paper card readers. The growing complexity of hardware and application programs eventually made operating systems a necessity for everyday use.

<span class="mw-page-title-main">System call</span> Way for programs to access kernel services

In computing, a system call is the programmatic way in which a computer program requests a service from the operating system on which it is executed. This may include hardware-related services, creation and execution of new processes, and communication with integral kernel services such as process scheduling. System calls provide an essential interface between a process and the operating system.

<span class="mw-page-title-main">Michigan Terminal System</span> Mainframe operating system

The Michigan Terminal System (MTS) is one of the first time-sharing computer operating systems. Created in 1967 at the University of Michigan for use on IBM S/360-67, S/370 and compatible mainframe computers, it was developed and used by a consortium of eight universities in the United States, Canada, and the United Kingdom over a period of 33 years.

<span class="mw-page-title-main">Conversational Monitor System</span> Operating system

The Conversational Monitor System is a simple interactive single-user operating system. CMS was originally developed as part of IBM's CP/CMS operating system, which went into production use in 1967. CMS is part of IBM's VM family, which runs on IBM mainframe computers. VM was first announced in 1972, and is still in use today as z/VM.

<span class="mw-page-title-main">VM (operating system)</span> Family of IBM operating systems

VM is a family of IBM virtual machine operating systems used on IBM mainframes System/370, System/390, zSeries, System z and compatible systems, including the Hercules emulator for personal computers.

<span class="mw-page-title-main">CP/CMS</span> IBM operating system specializing in virtualization

CP/CMS is a discontinued time-sharing operating system of the late 1960s and early 1970s. It is known for its excellent performance and advanced features. Among its three versions, CP-40/CMS was an important 'one-off' research system that established the CP/CMS virtual machine architecture. It was followed by CP-67/CMS, a reimplementation of CP-40/CMS for the IBM System/360-67, and the primary focus of this article. Finally, CP-370/CMS was a reimplementation of CP-67/CMS for the System/370. While it was never released as such, it became the foundation of IBM's VM/370 operating system, announced in 1972.

Job Control Language (JCL) is a name for scripting languages used on IBM mainframe operating systems to instruct the system on how to run a batch job or start a subsystem. The purpose of JCL is to say which programs to run, using which files or devices for input or output, and at times to also indicate under what conditions to skip a step. Parameters in the JCL can also provide accounting information for tracking the resources used by a job as well as which machine the job should run on.

In computing, position-independent code (PIC) or position-independent executable (PIE) is a body of machine code that, being placed somewhere in the primary memory, executes properly regardless of its absolute address. PIC is commonly used for shared libraries, so that the same library code can be loaded at a location in each program's address space where it does not overlap with other memory in use by, for example, other shared libraries. PIC was also used on older computer systems that lacked an MMU, so that the operating system could keep applications away from each other even within the single address space of an MMU-less system.

A hypervisor, also known as a virtual machine monitor (VMM) or virtualizer, is a type of computer software, firmware or hardware that creates and runs virtual machines. A computer on which a hypervisor runs one or more virtual machines is called a host machine, and each virtual machine is called a guest machine. The hypervisor presents the guest operating systems with a virtual operating platform and manages the execution of the guest operating systems. Unlike an emulator, the guest executes most instructions on the native hardware. Multiple instances of a variety of operating systems may share the virtualized hardware resources: for example, Linux, Windows, and macOS instances can all run on a single physical x86 machine. This contrasts with operating-system–level virtualization, where all instances must share a single kernel, though the guest operating systems can differ in user space, such as different Linux distributions with the same kernel.

The IBM Basic assembly language and successors is a series of assembly languages and assemblers made for the IBM System/360 mainframe system and its successors through the IBM Z.

VP/CSS was a time-sharing operating system developed by National CSS. It began life in 1968 as a copy of IBM's CP/CMS, which at the time was distributed to IBM customers at no charge, in source code form, without support, as part of the IBM Type-III Library. Through extensive in-house development, in what today would be termed a software fork, National CSS took VP/CSS in a different direction from CP/CMS. Although the two systems would eventually share many capabilities, their technical implementations diverged in substantive ways.

<span class="mw-page-title-main">IBM System/360 Model 67</span> 1967 IBM mainframe model with virtual memory and 32-bit addressing

The IBM System/360 Model 67 (S/360-67) was an important IBM mainframe model in the late 1960s. Unlike the rest of the S/360 series, it included features to facilitate time-sharing applications, notably a Dynamic Address Translation unit, the "DAT box", to support virtual memory, 32-bit addressing and the 2846 Channel Controller to allow sharing channels between processors. The S/360-67 was otherwise compatible with the rest of the S/360 series.

This article covers the History of CP/CMS — the historical context in which the IBM time-sharing virtual machine operating system was built.

<span class="mw-page-title-main">OS/VS1</span> IBM operating system

Operating System/Virtual Storage 1, or OS/VS1, is a discontinued IBM mainframe computer operating system designed to be run on IBM System/370 hardware. It was the successor to the Multiprogramming with a Fixed number of Tasks (MFT) option of System/360's operating system OS/360. OS/VS1, in comparison to its predecessor, supported virtual memory. OS/VS1 was generally available during the 1970s and 1980s, and it is no longer supported by IBM.

A Supervisor Call instruction (SVC) is a hardware instruction used by the System/360 family of IBM mainframe computers up to contemporary zSeries, the Amdahl 470V/5, 470V/6, 470V/7, 470V/8, 580, 5880, 5990M, and 5990A, and others; Univac 90/60, 90/70 and 90/80, and possibly others; the Fujitsu M180 (UP) and M200 (MP), and others; and is also used in the Hercules open source mainframe emulation software. It causes an interrupt to request a service from the operating system. The system routine providing the service is called an SVC routine. SVC is a system call.

The history of IBM mainframe operating systems is significant within the history of mainframe operating systems, because of IBM's long-standing position as the world's largest hardware supplier of mainframe computers. IBM mainframes run operating systems supplied by IBM and by third parties.

<span class="mw-page-title-main">OS/360 and successors</span> Operating system for IBM S/360 and later mainframes

OS/360, officially known as IBM System/360 Operating System, is a discontinued batch processing operating system developed by IBM for their then-new System/360 mainframe computer, announced in 1964; it was influenced by the earlier IBSYS/IBJOB and Input/Output Control System (IOCS) packages for the IBM 7090/7094 and even more so by the PR155 Operating System for the IBM 1410/7010 processors. It was one of the earliest operating systems to require the computer hardware to include at least one direct access storage device.

References

  1. Felton, W. A.; Miller, G. L.; Milner, J. M. (October 1984). "The UNIX System : A UNIX System Implementation for System/370". AT&T Bell Laboratories Technical Journal. 63 (8): 1751–1767. doi:10.1002/j.1538-7305.1984.tb00063.x. S2CID   7425099.
  2. C. Gordon Bell; J. Craig Mudge; John E. McNamara (12 May 2014). Computer Engineering: A DEC View of Hardware Systems Design. Elsevier Science. p. 180. ISBN   978-1-4832-2110-6. TSS/8 was designed at Carnegie-Mellon University with graduate student Adrian van de Goor, in reaction to the cost, performance, reliability, and complexity of IBM's TSS/360 (for their Model 67). Although the TSS/360 was not marketed, it eventually worked and contributed some ideas and trained thousands for IBM. At Carnegie-Mellon (CMU), a TSS/8 operated until 1974 when the special swapping disk expired. The cost per user or per job tended to be about 1/20 of the TSS/360 system CMU ran.
  3. Levine, John R. (2000) [October 1999]. "Chapter 8: Loading and overlays". Linkers and Loaders. The Morgan Kaufmann Series in Software Engineering and Programming (1 ed.). San Francisco, USA: Morgan Kaufmann. ISBN   1-55860-496-0. OCLC   42413382. ISBN   978-1-55860-496-4. Code: Errata:
  4. IBM Corporation (August 1976). Time Sharing System Command System User's Guide (GC28-2001-9) (PDF). Retrieved May 2, 2015.
  5. IBM System/360 Time Sharing System Dynamic Loader (PDF) (Fourth ed.). September 1971. GY28-2031-3.
  6. IBM Corporation (April 1976). IBM Time Sharing System Assembler Programmer's Guide (GC28-2032-6) (PDF). pp. 132–147. Retrieved December 25, 2021.
  7. IBM Corporation (1966). IBM System/360 Model 67 Time Sharing System Preliminary Technical Summary (C20-1647-0) (PDF). pp. 47–50. Retrieved December 25, 2021.

Further reading