|
Unix Programming - Operating-System Comparisons - VM/CMS
VM/CMS is IBM's
other
mainframe operating
system. Historically speaking, it is Unix's uncle: the common
ancestor is the CTSS
system, developed at MIT around 1963 and running on the IBM 7094
mainframe. The group that developed CTSS then went on to write
Multics, the immediate ancestor of Unix. IBM established a group in
Cambridge to write a timesharing system for the IBM 360/40, a modified
360 with (for the first time on an IBM system) a paging
MMU.[39] The MIT
and IBM programmers continued to interact for many years thereafter,
and the new system got a user interface that was very CTSS-like,
complete with a shell named EXEC and a large supply of utilities
analogous to those used on Multics and later on Unix.
In another sense, VM/CMS and Unix are funhouse mirror images of
one another. The unifying idea of the system, provided by the VM
component, is virtual machines, each of which looks exactly like the
underlying physical machine. They are preemptively multitasked, and
run either the single-user operating system CMS or a complete
multitasking operating system (typically MVS, Linux, or another
instance of VM itself). Virtual machines correspond to Unix
processes, daemons, and emulators, and communication between them is
accomplished by connecting the virtual card punch of one machine to
the virtual card reader of another. In addition, a layered tools
environment called CMS Pipelines is provided within CMS, directly
modeled on Unix's pipes but architecturally extended to support
multiple inputs and outputs.
When communication between them has not been explicitly set up,
virtual machines are completely isolated from each other. The
operating system has the same high reliability, scalability, and
security as MVS, and has far greater flexibility and is much easier to
use. In addition, the kernel-like portions of CMS do not need to be
trusted by the VM component, which is maintained completely
separately.
Although CMS is record-oriented, the records are essentially
equivalent to the lines that Unix textual tools use. Databases are
much better integrated into CMS Pipelines than is typically the case
on Unix, where most databases are quite separate from the operating
system. In recent years, CMS has been augmented to fully support the
Single Unix Specification.
The UI style of CMS is interactive and conversational, very
unlike MVS but like VMS and Unix. A full-screen editor called XEDIT
is heavily used.
VM/CMS predates the client/server distinction, and is nowadays
used almost entirely as a server operating system with emulated IBM
terminals. Before Windows came to dominate the desktop so completely,
VM/CMS provided word-processing services and email both internally to
IBM and between mainframe customer sites — indeed, many VM systems
were installed exclusively to run those applications because of VM's
ready scalability to tens of thousands of users.
A scripting language called Rexx supports programming in a style
not unlike shell, awk, Perl or Python. Consequently, casual
programming (especially by system administrators) is very important on
VM/CMS. Free cycles permitting, admins often prefer to run production
MVS in a virtual machine rather than directly on the bare iron, so
that CMS is also available and its flexibility can be taken advantage
of. (There are CMS tools that permit access to MVS
file systems.)
There are even striking parallels between the history of VM/CMS
within IBM and Unix within Digital Equipment Corporation (which made
the hardware that Unix first ran on). It took IBM years to understand
the strategic importance of its unofficial timesharing system, and
during that time a community of VM/CMS programmers arose that was
closely analogous in behavior to the early Unix community. They
shared ideas, shared discoveries about the system, and above all
shared source code for utilities. No matter how often IBM tried to
declare VM/CMS dead, the community — which included IBM's own
MVS system developers! — insisted on keeping it alive. VM/CMS
even went through the same cycle of de facto open source to closed
source back to open source, though not as thoroughly as Unix
did.
What VM/CMS lacks, however, is any real analog to C. Both VM
and CMS were written in assembler and have remained so implemented.
The nearest equivalent to C was various cut-down versions of PL/I that
IBM used for systems programming, but did not share with its
customers. Therefore, the operating system remains trapped on its
original architectural line, though it has grown and expanded as the
360 architecture became the 370 series, the XA series, and finally the
current z/Series.
Since the year 2000, IBM has been promoting VM/CMS on mainframes
to an unprecedented degree — as ways to host thousands of
virtual Linux machines at once.
[an error occurred while processing this directive]
|
|