os9 and linux

System Development (devel@vrml.k12.la.us)
Wed, 12 Jun 1996 11:20:37 -0500 (CDT)


I would like to congratulate the developers of linux on the
spectacular job that they have done. In my opinion, linux is worth
far more than any commercial unix.

Since the kernel list has been discussing future trends in
the development of linux, i would like to discuss an operating system
that has impressed me greatly. although it is fundamentally different
from linux, i would like to hear what you guys think of it, if you
have had experience with it, etc. I am talking about Microware's
Real Time OS-9 Operating System. It has some unique design strategies.
Although many are fundamentally different from Linux, they may give you
some ideas.

When I started working with computers, I used an os-9 l2 based coco 3
(6809). OS-9 impressed me a great deal. My system had 512k of memory,
no hard drive, and ran at 2 MHZ. Despite the limited resources, OS-9
was a multi-tasking multi-user system, running a basic windowing system.
Relative to modern systems, os-9/6809 was slow, but not as slow as you
might think. OS-9 accomplished this through a very intelligent design
strategy. OS-9 was similar to unix in several ways, but by no means
compatible.
The universal unix solution is the file. Devices are referenced as
files, the /proc file system, etc. In OS-9 the basic solution was the memory
module. The operating system was designed as a hierarchy of interacting
modules. Through a sophisticated organization scheme, OS-9 was designed for
extraordinary performance and functionality on minimal hardware. OS-9 setup
a basic division of labor: kernel - manager - driver - descriptor. All
io was performed through a descriptor. Even files were accessed relative
to a filesystem descriptor. Here are a couple of command line examples:

echo test1 > /p # redirect to the printer
echo test2 > /d2/sys/file # redirect to drive /d2, directory sys, file file
echo test3 > /w5 # redirect to window 5
echo test4 > /t1 # redirect to serial port 1, my modem
echo test5 > /sys/file # redirect to file on default defive, shortcut
echo test6 > file # redirect to file in currect dir, shortcut

Each of these ios reference a device descriptor(implicitly or explicitly).
Each descriptor was a data module of about 500 or so bytes, containing
device default parameters. Each desc contained a reference to a driver,
which which fell under certain io managers. IO Managers included
sequential char file(SCF), pipe managers, and random block file
(RBF). The managers acted as an interface between the io portion of the
kernel and low level device drivers.
Application programs were also in the form of module(s). Once
an application module was loaded it could be executed any number of times
in seperate address spaces. The system kept an in-memory module directory.
It contained info about every module in the system, running or not.
Each module had a link count associated with it. When the link count
dropped to zero, it was unloaded and memory was freed.

Microware has done much in the last decade since level 2 was
released. They have os-9 running on 680x0, intel 386+, and i believe
ppc. It goes by other names, such as os-9000 and os68k. They now
have support for tcp/ip, nfs, xwindows, and more. It has remained
real-time, microkernel oriented, and highly-priced.

I was impressed when Linux began to support modules, although
this is very different from the tao of os-9. I realize that the design
strategy b/t linux and os-9 is soo different, little could be crossed
between the two. However, with all the talk of reorganizing the
linux drivers in a logical fasion, i felt that os-9 design philosophy
might be interesting to some.