OS-9

Source: Wikipedia, the free encyclopedia.

OS-9
CLI in all versions, some platforms support a GUI
LicenseProprietary
Official websitewww.microware.com

OS-9 is a family of

Microware LP
.

The OS-9 family was popular for general-purpose computing and remains in use in commercial

ARM, MIPS, SH4, etc.) version written in C
, originally known as OS-9000.

History

The first version ("OS-9 Level One"), which dates back to 1979–1980, was written in

GUI
on some platforms.

In 1983, OS-9/6809 was ported to

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 supports it directly; compilers and assemblers support 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 runs on

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 [jp
], and many others.

tape backup controllers in VAX
installations.

The best known hardware (due to its low price and broad distribution) was the

MC68008 processor.[2]

OS-9 was also ported to the

Commodore SP-9000
or SuperPET, which had a 6809 in addition to the 6502 of the base 8032 model, as well as 64 KB more. The Toronto PET Users Group sponsored a HW/SW project which included a daughter board with an MMU as well as the OS-9 distribution disks. With two processors, 96 KB, a 25×80 screen and serial, parallel and IEEE-488 ports and many peripherals this was one of the most capable OS-9 systems available.

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

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,[3]
although a judge ruled that there would be little chance for confusion between the two. Some Macintosh users who are unaware of Microware's lesser known OS-9 have posted to the comp.os.os9 newsgroup not realizing 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.

On February 21, 2013, Microware LP (a partnership formed by Freestation of Japan, Microsys Electronics of Germany and RTSI LLC of the USA) announced that they signed an Asset Purchase Agreement to buy the rights to the names Microware, OS-9 and all assets from

RadiSys
.

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:

  • The kernel is written entirely in assembly language (OS-9/68K version only) and C (portable version to other architectures) using simple internal data structures, reducing flexibility and improvement scope while improving determinability required for real-time operating systems.
  • Performance was also affected for some operations, but assembly language helped with the speed issue.
  • Systems without a memory management unit (MMU) have no memory protection against illegal access, nor per-process memory protection, while systems with an MMU can have memory protection enabled. The module controlling the MMU can be included or omitted by the system integrator to enable or disable memory protection. This allows OS-9 to run on older systems which do not include an MMU.
  • Older versions of OS-9 do not support
    POSIX threads
    , while all OS-9 supported processors support POSIX threads.
  • No
    Core 2 Duo, when Linux
    is running on the other core doing general purpose tasks).

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

  • Kernel – Contains task switching, memory allocation, and most non-I/O calls
  • IOMAN – Handles I/O calls to various file managers and drivers.
  • File managers basic set:
    • SCF, Serial files (serial devices)
    • RBF, Random block (disk devices)
    • SBF, Sequential block (tape Devices)
    • NFM, NULL devices (USB and other devices)
    • MFM, Message
    • PCF, PC FAT files
    • PIPEMAN, Pipe manager
    • Modman - Memory module directories
  • SSM – System security (MMU handling)
  • Cache – Cache handling,
  • VectXXX – Vector / PIC handler
  • FPU –
    Floating point emulation
  • Align – Address alignment fault handler

Commands

The following list of commands is supported by the OS-9 shell.

Shell built-in commands

  • chd
  • chx
  • kill
  • w
  • wait
  • setenv
  • unsetenv
  • setpr
  • logout
  • profile
  • ex
  • -e
  • -ne
  • -p
  • -p=<str>
  • -np
  • -t
  • -nt
  • -v
  • -nv
  • -x
  • -nx

Utilities for operating system functions

System management utilities

General utilities

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

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 similar to the use of PATH environment variable
under UNIX). The other is the current data directory.

Another difference is that in OS-9, grandparent directories can be indicated by repeating periods three or more times, without any intervening slashes (a feature also found in

TC
). For example, ..../file in OS-9, is similar to ../../../file in Unix. But . and .., with just one or two periods, each work the same in both OS-9 and Unix.

OS-9 has had a modular design from the beginning, influenced by notions of the designers of the

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 alternative 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.

Status

OS-9 has faded from popular use, though Microware LP does still support it and it does run on modern architectures such as ARM and x86. The compiler provided, Ultra C/C++, supports

C++98. Ultra C++ does provide limited support for C++ templates. It is also supported by popular SSL/TLS libraries such as wolfSSL
.

References

  1. ^ Oliver, Roger; Sadler, Chris (October 1982). "Positron 9000". Personal Computer World. pp. 128–129, 131–134, 222. Retrieved 2024-04-26.
  2. Argus Specialist Publications
    . pp. 80–86.
  3. ^ Smith, Tony (1999-09-03). "OS-9 developer sues Apple over MacOS 9". The Register UK. Situation Publishing. Retrieved 2014-06-01.
  4. ^ CoCoFEST
  5. ^ "NA Training Book 2.4" (PDF). industrial.omron.eu/NA. Archived (PDF) from the original on 2022-10-09. Retrieved 2019-03-16.

Further reading

External links

This page is based on the copyrighted Wikipedia article: OS-9. Articles is available under the CC BY-SA 3.0 license; additional terms may apply.Privacy Policy