Unix Programming - Operating-System Comparisons - OS/2
OS/2 began life as an
IBM development project
called ADOS (‘Advanced DOS’), one of three competitors to
become DOS 4. At that time, IBM and
Microsoft were
formally collaborating to develop a next-generation operating system
for the PC. OS/2 1.0 was first released in 1987 for the 286, but was
unsuccessful. The 2.0 version for the 386 came out in 1992, but by
that time the
IBM/Microsoft alliance had already fractured.
Microsoft went in a different (and more lucrative) direction with
Windows3.0. OS/2 attracted a loyal minority following, but never
attracted a critical mass of developers and users. It remained third
in the desktop market, behind the Macintosh, until being subsumed into
IBM's Java
initiative after 1996. The last released version was 4.0 in
1996. Early versions found their way into embedded systems and still,
as of mid-2003, run inside many of the world's automated teller
machines.
Like Unix, OS/2 was built to be preemptively multitasking and
would not run on a machine without an MMU (early versions simulated an
MMU using the 286's memory segmentation). Unlike Unix, OS/2 was never
built to be a multiuser system. Process-spawning was relatively
cheap, but IPC was difficult and brittle. Networking was initially
focused on LAN protocols, but a TCP/IP stack was added in later
versions. There were no programs analogous to Unix service daemons,
so OS/2 never handled multi-function networking very well.
OS/2 had both a CLI and GUI. Most of the positive legendry
around OS/2 was about the Workplace Shell (WPS), the OS/2 desktop.
Some of this technology was licensed from the developers of the
AmigaOS Workbench,[29]
a pioneering GUI desktop that still as of 2003 has a loyal fan
base in Europe. This is the one area of the design in which OS/2
achieved a level of capability which Unix arguably has not yet
matched. The WPS was a clean, powerful, object-oriented design with
understandable behavior and good extensibility. Years later it would
become a model for Linux's GNOME project.
The class-hierarchy design of WPS was one of OS/2's unifying
ideas. The other was multithreading. OS/2 programmers used threading
heavily as a partial substitute for IPC between peer processes.
No tradition of cooperating program toolkits developed.
OS/2 had the internal boundaries one would expect in a
single-user OS. Running processes were protected from each other, and
kernel space was protected from user space, but there were no per-user
privilege groups. This meant the file system had no protection against
malicious code. Another consequence was that there was no analog of a
home directory; application data tended to be scattered all over the
system.
A further consequence of the lack of multiuser capability was
that there could be no privilege distinctions in userspace. Thus,
developers tended to trust only kernel code. Many system tasks
that in Unix would be handled by user-space daemons were jammed
into the kernel or the WPS. Both bloated as a result.
OS/2 had a text vs. binary mode (that is, a mode in which CR/LF
was read as a single end-of-line, versus one in which no such
interpretation was performed), but no other file record structure. It
supported file attributes, which were used for desktop persistence
after the manner of the Macintosh. System databases were mostly in
binary formats.
The preferred UI style was through the WPS. User interfaces
tended to be ergonomically better than Windows, though not up to
Macintosh standards (OS/2's most active period was relatively early in
the history of MacOS Classic). Like Unix and Windows, OS/2's user
interface was themed around multiple, independent per-task groups of
windows, rather than capturing the desktop for the running
application.
The intended audience for OS/2 was business and nontechnical
end users, implying a low tolerance for interface complexity. It was
used both as a client operating system and as a file and print
server.
In the early 1990s, developers in the OS/2 community began to
migrate to a Unix-inspired environment called EMX that emulated
POSIX interfaces.
Ports of Unix software started routinely showing up under OS/2 in the
latter half of the 1990s.
Anyone could download EMX, which included the GNU Compiler
Collection and other open-source development tools.
IBM intermittently gave
away copies of the system documentation in the OS/2 developer's
toolkit, which was posted on many BBSs and FTP sites. Because of
this, the “Hobbes” FTP archive of user-developed OS/2
software had already grown to over a gigabyte in size by 1995. A very
vigorous tradition of small tools, exploratory programming, and
shareware developed and retained a loyal following for some years
after OS/2 itself was clearly headed for the dustbin of
history.
After the release of Windows 95 the OS/2 community, feeling
beleaguered by Microsoft and encouraged by
IBM, became increasingly
interested in Java. After the Netscape source code release in early
1998, the direction of migration changed (rather suddenly), toward
Linux.
OS/2 is interesting as a case study in how far a multitasking
but single-user operating-system design can be pushed. Most of the
observations in this case study would apply well to other operating
systems of the same general type, notably
AmigaOS[30] and GEM.[31] A wealth of OS/2
material is still available on the Web in 2003, including some
good histories.[32]
[an error occurred while processing this directive]
|