OS-9

From Wikipedia, the free encyclopedia - View original article

OS-9
Company / developerMicroware (now owned by RadiSys Corporation)
Programmed inC, Assembly language
OS familyUnix-like
Working stateCurrent
Source modelProprietary
Initial release1979
Latest stable release5.2 / Q1 2012
Marketing targethigh-performance, high-availability real-time software solution for advanced industrial automation & control, medical instrumentation, aerospace and transportation systems
Available language(s)English
Available programming languages(s)C, Pascal, COBOL, BASIC, a Forth variant, a Unix emulating shell, etc.
Supported platformsMotorola 6809, Motorola 680x0 CPUs, ColdFire, SuperH, ARM/XScale, MIPS, PowerPC, Intel x86 architecture
Kernel typeReal-time kernel
Default user interfaceCLI in all versions, some platforms support a GUI
LicenseProprietary
Official websitewww.radisys.com
 
Jump to: navigation, search
OS-9
Company / developerMicroware (now owned by RadiSys Corporation)
Programmed inC, Assembly language
OS familyUnix-like
Working stateCurrent
Source modelProprietary
Initial release1979
Latest stable release5.2 / Q1 2012
Marketing targethigh-performance, high-availability real-time software solution for advanced industrial automation & control, medical instrumentation, aerospace and transportation systems
Available language(s)English
Available programming languages(s)C, Pascal, COBOL, BASIC, a Forth variant, a Unix emulating shell, etc.
Supported platformsMotorola 6809, Motorola 680x0 CPUs, ColdFire, SuperH, ARM/XScale, MIPS, PowerPC, Intel x86 architecture
Kernel typeReal-time kernel
Default user interfaceCLI in all versions, some platforms support a GUI
LicenseProprietary
Official websitewww.radisys.com

OS-9 is a family of real-time, process-based, multitasking, multi-user, Unix-like operating systems, developed in the 1980s, originally by Microware Systems Corporation for the Motorola 6809 microprocessor. It is currently owned by RadiSys Corporation.

The OS-9 family was popular for general-purpose computing and remains in use in commercial embedded systems and amongst hobbyists. Today, OS-9 is a product name used by both a Motorola 68000-series machine language OS and a portable (PowerPC, x86, etc.) version written in C, originally known as OS-9000.

Contents

History

The first version ("OS-9 Level One"), which dates back to 1979–80, was written in assembly language for the Motorola 6809 CPU, and provided a single 64 KB address space in which all processes ran. It was developed as a supporting operating system for the BASIC09 project, contracted for by Motorola as part of the 6809 development. A later 6809 version ("Level Two") takes advantage of memory mapping hardware, supported up to 2 MB of memory (ca 1980) in most implementations, and included a GUI on some platforms.

In 1983, OS-9/6809 was ported to Motorola 68000 assembly language and extended (called OS-9/68K); and a still later (1989) version was rewritten mostly in C for further portability. The portable version was initially called OS-9000 and was released for 80386 PC systems around 1989, then ported to PowerPC around 1995. These later versions lack the memory mapping facilities of OS-9/6809 Level Two simply because they do not need them. They used a single flat address space that all processes share; memory mapping hardware, if present, is mostly used to ensure that processes access only that memory they have the right to access. The 680x0 and 80386 (and later) MPUs all directly support far more than 1 MB of memory in any case.

As a consequence of early pervasive design decisions taking advantage of the easily used reentrant object code capabilities of the 6809 processor, programs intended for OS-9 are required to be reentrant; compilers produce reentrant code automatically and assemblers for OS-9 offer considerable support for it. OS-9 also uses position independent code and data because the 6809 also supported it directly; compilers and assemblers supported position independence. The OS-9 kernel loads programs (including shared code), and allocates data, wherever sufficient free space is available in the memory map. This allows the entire OS and all applications to be placed in ROM or Flash memory, and eases memory management requirements when programs are loaded into RAM and run. Programs, device drivers, and I/O managers under OS-9 are all 'modules' and can be dynamically loaded and unloaded (subject to link counts) as needed.

OS-9/6809 ran on Motorola EXORbus systems using the Motorola 6809, SS-50 Bus and SS-50C bus systems from companies such as SWTPC, Tano, Gimix, Midwest Scientific, and Smoke Signal Broadcasting, STD-bus 6809 systems from several suppliers, personal computers such as the Fujitsu FM-11, FM-8, FM-7 and FM-77, Hitachi MB-S1, and many others.

System Industries, a third-party provider of DEC compatible equipment, used a 68B09E processor running OS9 in its QIC (quarter inch cartridge) tape backup controllers in VAX installations.

The best known hardware (due to its low price and broad distribution) was the TRS-80 Color Computer (CoCo) and its clones such as the British Dragon series. Even on the CoCo, a quite minimalist hardware platform, it was possible under OS-9/6809 Level One to have more than one interactive user running concurrently (for example, one on the console keyboard, another in the background, and perhaps a third interactively via a serial connection) as well as several other non-interactive processes. A second processor implementation for the BBC Micro was produced by Cumana. It included on-board RAM, SASI hard disk interface and a MC68008 processor.[1]

On a computer like an SS-50, machines which had more memory (for example, those from Gimix, Southwest Technical Products, etc.), and I/O controllers that did not load the CPU as did the CoCo, multiple users were common, even with only 64 KB of RAM (i.e., Level One). With hardware supporting memory management circuits (that is, address translation) and OS-9 Level 2, GUI use was successfully routine, even on the minimal resourced CoCo. This was several years prior to successful GUIs on the 16-bit IBM PC class machines, and many years prior to properly working multi-tasking, multi-user, access-controlled operating systems on IBM PC type machines or on any of Apple's machines.[citation needed]

OS-9's multi-user and multi-tasking capabilities make it usable as a general-purpose interactive computer system. Many third-party interactive applications have been written for it, such as the Dynacalc spreadsheet, the VED text formatter, and the Stylograph and Screditor-3 WYSIWYG word processors. TSC's nroff emulating formatter was ported to OS-9 by MicroWay, as well.

In mid 1980s, OS-9 was selected for the CD-i operating system. Around the same time, Microsoft approached Microware for acquisition of the company primarily because it was attracted by CD-RTOS, the CD-i operating system. The negotiation failed and no deal was made; Microware decided to remain independent.

In late 1980s, Microware released OS-9000, a more portable version of the operating system. The vast majority of the operating system kernel was rewritten in C leaving a handful of hardware-dependent parts in assembly language. A few "more advanced features" were added such as tree-like kernel module name space. OS-9000 was initially ported to the Motorola 680x0 family CPUs, Intel 80386, and PowerPC. The OS-9000/680x0 was a marketing failure and withdrawn very quickly, probably because few customers wanted to try the fatter and slower operating system over the existing OS-9/680x0 proven record of stability. That the Motorola 680x0 family and VME board computer system vendors were nearing their end of life might have affected the unpopularity of OS-9000/680x0. Microware later started calling all of its operating systems — including what had been originally called OS-9000 — simply OS-9, and started shifting its business interest towards portable consumer device markets such as cellphones, car navigation, and multimedia.

In late 1980s and early 1990s, the Character Generators computers used in Broadcast Systems used OS-9 and OS-9000 extensively. The now defunct Pesa Electronica used OS-9 on their CGs such as CG 4722 and CG4733.

Name conflicts and court decisions

In 1999, nineteen years after the first release of OS-9, Apple Computer released Mac OS 9. Microware sued Apple that year for trademark infringement, although a judge ruled that there would be little chance for confusion between the two. Some Macintosh users who are unaware of Microware's relatively unknown OS-9 have posted to the news://comp.os.os9 newsgroup; not realising what OS-9 is.

In 2001, RadiSys purchased Microware to acquire the Intel IXP-1200 network processor resources. This acquisition infused Microware with capital and allowed Microware to continue OS-9 development and support. As of 2012, OS-9 is still supported by RadiSys and Microware.

Technology

Modern and archaic design

OS-9 (especially the 68K version and thereafter) clearly distinguishes itself from the prior generation of embedded operating systems in many aspects.

When compared with more modern operating systems.

Task scheduling

OS-9’s real-time kernel allows multiple independent applications to execute simultaneously through task switching and inter-process communication facilities. All OS-9 programs run as processes containing at least one lightweight process (thread) but may contain an effectively unlimited number of threads. Within a process, these lightweight processes share memory, I/O paths, and other resources in accordance with the POSIX threads specification and API. OS-9 schedules the threads using a fixed-priority preemptive scheduling algorithm with round-robin scheduling within each priority. Time slicing is supported. The priority levels can be divided into a range that supports aging and a higher-priority range that uses strict priority scheduling. Each process can access any system resource by issuing the appropriate OS-9 service request. At every scheduling point, OS-9 compares the priority of the thread at the head of the active queue to the priority of the current thread. It context switches to the thread on the active queue if its priority is higher than the current processes’ priority. Aging artificially increases the effective priority of threads in the active queue as time passes. At defined intervals, time slicing returns the current thread to the active queue behind other threads at the same priority.

Kernel modules

Comparisons with Unix

OS-9's notion of processes and I/O paths is quite similar to that of Unix in nearly all respects, but there are some significant differences. Firstly, the file system is not a single tree, but instead is a forest with each tree corresponding to a device. Second, OS-9 does not have a Unix-style fork() system call—instead it has a system call which creates a process running a specified program, performing much the same function as a fork-exec or a spawn. Additionally, OS-9 processes keep track of two "current directories" rather than just one; the "current execution directory" is where it will by default look first to load programs to run (which is of course similar to the use of PATH environment variable under UNIX). The other is the current data directory. OS-9 has had a modular design from the beginning, influenced by notions of the designers of the 6809 and how they expected software would be distributed in the future (see the three-part series of articles in Jan-Mar 1979 Byte by Terry Ritter, et al. of Motorola who designed the CPU).

The module structure requires more explanation:
  • OS-9 keeps a "module directory", a memory-resident list of all modules that are in memory either by having been loaded, or by having been found in ROM during an initial scan at boot time.
  • When one types a command to the OS-9 shell, it will look first in the current module directory for a module of the specified name and will use it (and increase its link count) if found, or it will look on disk for an appropriately named file if not.
  • In OS-9/6809 and OS-9/68000, the module directory is flat, but OS-9000 made the module directory tree-structured. The OS-9000 shell looks in one's alternate module directory for a MODPATH environment variable, analogous to the PATH variable in all versions, indicating the sequence of module directories in which to look for pre-loaded modules.
  • Modules are not only used to hold programs, but can also be created on the fly to hold data, and are the way in which OS-9 supports shared memory.

OS-9/non-68000 supports POSIX threads. A single process can start any number of threads. This rivalry went far enough that the OS-9 version 2.4 manual had this entry describing UNIX in the Glossary of Appendix C of "Using Professional OS-9":

 UNIX: An operating system similar to OS-9, but with less functionality and special features designed to soak up excess memory, disk space and CPU time on large, expensive computers. 

This entry was removed in the version 3.0 manual.

The OS-9 shell had an easter egg in its command history function, invoked by CTRL-A. Upon a fresh boot, the command history was supposedly empty, but if the user typed a single space followed by a backspace, then hit CTRL-A, the names of the authors would be displayed: 'by K. Kaplan, L. Crane, R. Doggett'.

Status

OS-9 has faded from popular use, though RadiSys does still support it and it does run on modern architectures such as ARM and x86.

References

  1. ^ Vogler, Jon (1987-06). "Down to Business: Cumana / The upgrade". A & B Computing (Argus Specialist Publications): pp. 80–86.

External links