[comp.realtime] Summary of opinions and info on realtime kernels

sung@ceco.ceco.com (Sung Han) (06/04/91)

A While ago, I solicited responses from people on their experiences with three
real-time kernels for 680x0-based processor boards, namely pSOS+, VRTX, and
VxWorks.  And by request, I'm posting this summary of the responses I've
received, along with my (humble) personal observations on these kernels. 

A word of caution: if you believe in objectivity, don't bother reading this
article, because the material here is entirely subjective.


/*---------------------------------------------------------------------------*/
/*                                                                           */
/*         ############ D I S C L A I M E R S #############                  */
/*         ############ D I S C L A I M E R S #############                  */
/*         ############ D I S C L A I M E R S #############                  */
/*                                                                           */
/*   1)  All opinions expressed here are solely those of the individual      */
/*       respondents, and do not necessarily reflect those of their          */
/*       employers.  This goes for myself also.                              */
/*									     */
/*   2)	If there are factual errors in the following material, I will        */
/*	welcome corrections; however, flames on subjective matters will be   */
/*	ignored.                                                             */
/*                                                                           */
/*   3)	I have no affiliation with any of the vendors listed in this post.   */
/*                                                                           */
/*---------------------------------------------------------------------------*/



I also received performance data on the three kernels, plus LynxOS, courtesy
of the people at the Superconducting Supercollider Lab in Texas.  I've inserted
the results later in this article. 

In addition, I've received some responses that suggested alternatives to the
three kernels that I requested info on.  These responses are listed later.

Here then are the responses, minus names.  I've edited parts of the responses
for clarity (apologies to the authors).

And REMEMBER! please don't associate these responses with me, or my 
organization - they're simply other peoples' opinions, which I'm reprinting.



-------------------------------------------------------------------------------

vxWorks is a solid product; it does what they (Wind River Systems)
say. It has an especially strong communications layer, wide and deep
and rich. Three years ago I compared vxWorks and VRTX and chose
vxWorks because of its superior networking. A colleague conducted a
similar procurement within the last year and told me that vxWorks is
still superior to VRTX on communications. This comm support is
*essential* if you intend to build a modern distributed RT system. If
you are building a standalone embedded application the vxWorks RT
kernel is fine, arguably even excellent, but there are a number of
other RT kernels available that would probably do about as well
overall. *All* RT applications here are distributed, so vxWorks is
being chosen again and again...

-------------------------------------------------------------------------------

Hi.

I went through a similar process about one year ago. I considered pSOS+,
VRTX, VxWorks, and a message-passing OS called Unison.
I ended up favoring VxWorks by a large margin. My main reasons:

1) Wind River was very quick and efficient when I asked for a demo version
  (30 days etc.) The others just seemed confused.

2) VxWorks is the most complete package. The kernel is just a small part of
   the larger system, which Wind River realizes more than anybody. Things
   like the ram disk driver and run-time loader are really great for my 
   application.

3) VxWorks networking is very solid, and certainly more mature than any
   competitor's. Their I/O system in general is very well set up 
   (network, serial, and RT-11 (ram-disk) devices all mapped into the file
   name space).

4) Building different systems, boot PROMS, etc. is well planned out and
   relatively easy. This is paying off now that we are moving to stand-alone
   oepration.

Until version 5.0, VxWorks did not really have "source-level" debugging,
just "symbolic" (assembly-level) debugging, but this should be improved with
VxGDB in 5.0.

Good luck,

-------------------------------------------------------------------------------

I haven't used any other commercial real-time OS., but I'm quite happy
with VxWorks.  Using the Unix development environment and downloading
over ethernet is quite nice.  We went thru an unpleasnt time where the
remote source level debugger wouldn't work with operating system
updates, and we had to get a new version from Sun Consulting.  Now that
VxWorks uses gdb as a base, everthing seems to work quite well.
We tie our real-time system to workstations using Remote Procedure Calls and
sockets, which seem to work just as advertised.

The technical support is reasonably good, and the product seems fairly bug
free.

-------------------------------------------------------------------------------

I have been working with VRTX32 (without Velocity) for a little over two years
now.  I have found it to be reliable and reasonably well documented; the only
bug I ever found in it was fixed in the latest release.

On balance, I would say we have had good luck with VRTX, but I haven't had
much experience with other Real Time OS's so I can't say whether the others
are as easy to use or not.

-------------------------------------------------------------------------------

I have been using VRTX/ Velocity for the past 2 years. The RTSource
debugger is very good, but the rest of their stuff I have found to be
"buggy" (esp. the TCP/IP package) and difficult to install. Ready
Systems' support is disgusting, unless you get friendly with a good FAE
(who are meant to do pre-sales only).

-------------------------------------------------------------------------------

We have recently done an evaluation of the same products.  We got on-sight
demos of each, then got evaluation copies of each system except Uniflex.
Uniflex is a Unix "work-a-like".  I would think it should be compared with
LynxOS.  The other three are considered hard real time.

Without making any criticism's about the systems, you will find that they
(pSOS, VRTX32, VxWorks) all provide a fast real time kernel, UNIX compatible
sockets, and a standard ANSI run time library.  All are downloadable, and
ROM-able systems.  Development is done on a host system with code cross
compiled for the target and downloaded.  VRTX and VxWorks have a user
shell that can be used to invoke functions for debugging.  In addition,
VRTX and VxWorks provide NFS facilities to the target.

All the systems could be hosted on SUN.  pSOS+ could also be hosted on HP.
Its debugger uses X Window which is nice for exporting the display to any
workstation on your network.  The XRAY+ debugger is very useful.

We had three people on the evaluation.  I actually worked primarily with the
pSOS+ software.  Incidentally, I'll tell you up front that pSOS+ is the one we
choose.  The decision was based on the fact that pSOS+ is hosted on more
workstations, and targeted on more targets than the others.  

The debugger seems a bit more sophisticated.  For instance, it is a board
level debugger (as is with VRTX), that can break on any task in the system.
VxWorks bebugs one task at a time.  When it breaks, the others continue to
run.  Come to think of it, that may also be the case with VRTX.

The SCG interface (on HP) is X Window.  We have successfully exported this
screen to other X Window displays.  I.E., The debugger runs on one machine
and displays on an X terminal.  This is useful in the following context.
We have a number of HP's to run the development software.  Then, we can
actually log into those machines and run the display to another terminal.
This allows more users.

VxWorks is probably a bit easier to start up since it comes installed (as
I understand it).  pSOS+ and VRTX each took some work from the factory to
understand how to use what you are given.

I think pSOS+ has the best documentation, then probably VRTX and VxWorks.
Of course, I can't say that I have spent much time with the latter two.

From the performance tests that we ran, they all seem comparable.  We devised
a series of tests, and implemented it accross the three platforms.  Then
measurements were made using the same hardware in each case.



###############################################################################

/*
 *
 * The following responses were pointers to other real-time systems:
 *
 */

###############################################################################


-------------------------------------------------------------------------------

You've mentioned VRTX, pSOS, and VxWorks -- What about PDOS?  
You are missing a great operating system that provides full native and
cross development, posix file system, networking, tape and hard
disk support, and good customer support.  PDOS can also claim excellent
real-time response with 0 interrupt latency on high level interrupts.

[PDOS is marketed by Eyring; contact either the author of this response, at

    rick@Eyring.COM  uunet!lanai!rick
    
    or try the following person:

    Walt C. Jones
    Director of Marketing & Sales
    Eyring
    1455 West 820 North
    Provo, Utah 84601
    (801) 375-2434
    
S.H.]

-------------------------------------------------------------------------------

I would suggest using OS-9 for realtime application on 680x0 CPU's. It is
availible from MicroWare. There are ports of it for several variants around
too. (such as Signetics 68070 - a suped up 68000 clone)(also, for Mac's, 
Amiga's, and Atari ST's, as well as some 680x0 boxes designed just for OS-9)

[I saw a demo of OS/9 on a new MVME165/Motorola 68040 port, and it looked quite
 nice actually.  It provides all necessary development tools on the target
 system, including a C compiler, source debugger, etc., along with a full
 Unix-like file system.  Plus there's a pretty good OS-9 user's group too.
 
 Contact Microware at the following address:
 
     MicroWare Systems Corporation
     1900 N.W. 114th Street
     Des Moines, Iowa 50322
     (515) 224-1929

S.H.]

-------------------------------------------------------------------------------

You should also check out Precise/MPX from:

              Precise Software Technologies Inc
              Suite 308, The Mallorn Centre
              301 Moodie Dr.
              NEPEAN, Ontario Canada
              K2H 9C4

              Tel:    (613) 596-2251
              Fax:    (613) 596-6713

Precise/MPX is a commercial product based on the Harmony
Realtime, Multitasking, Multiprocessing Operating System, an
ongoing (8 years) research project at the National Research
Council of Canada. Precise/MPX has been ported to Intel 80x86 and
Motorola 680x0 and 88K microprocessor families. The host
development tools are available on the PC AT, Sun 3, Data General
Aviion, Apple Macintosh and others.

I can supply technical details about Harmony, via email or
regular mail (we have a Harmony bibliography, technical
description and short manual set available for free). For
questions of availability for particular host/target
configurations, pricing and licensing contact Jeremy James,
President of Precise Software at the above address or phone
number.

Hope this helps.

[Author of response is:
    Stephen MacKay  <mackay@iit.nrc.ca>
    Harmony Research Project
    Software Engineering Lab.
    Inst. for Information Technology
    National Research Council
S.H.]

-------------------------------------------------------------------------------

I'm a bit biased since I work on the following product, but I thought you might
like to know about REAL/IX:

Modcomp's REAL/IX is a fully preemtive, low-latency, realtime UNIX operating
system (System V.3).  It conforms to AT&T's System V Interface Definition
(SVID) and passes the System V Verification Suite (SVVS).  It runs on a 68030
based VME system (with SCSI)  (Motorola 147 & 141 cards).  Features include:

o FULLY Preemptive Kernel (no pre-emption windows)
o FAST context switch time (Best Case context switch time: approx. 30 microsec)
o Directly Connected Interrupts
o Loosely Connected Interrupts
o Low Interrupt Latency (Maximum Interrupt latency: approx. 100 microsec)
o Event Driven Priority Scheduler
o Flexible Task Control
o Shared Memory Facilities
o Preallocation of Resources
o Process lock in Memory
o High Performance File System
o Asynchronous I/O
o Priority Based I/O
o Direct I/O
o High Resolution Timers
o Fast Interprocess Communications
o Fast Process Synchronization
o Common Event Notification
o User Extensible System Services and Interrupt Handlers

There's also a book about REAL/IX:

REAL-TIME UNIX SYSTEMS
Design and Application Guide
Furht, Grostick, Gluch, Rabbat, Parker, McRoberts
Kluwer Academic Publishers

It describes REAL/IX in detail, and even includes two case studies.

[If you'd like to inquire about REAL/IX, contact the author of this response 
 (Steve R. Pietrowicz) at:
 
     uunet!modcomp!rlxdev!srp
 or  ...!uunet!modcomp!srp
 
S.H.]

-------------------------------------------------------------------------------

LynxOS is UNIX System V (with BSD extensions).  LynxOS is realtime.  It
contains no ATT code.  It is POSIX compliant.  It was selected as the
runtime system for the NASA space station.  You can buy it to run in an
embedded system, e.g., a Motorola MVME 147 board.  Or you can buy it to do
C development, e.g., on a 386 or 486 PC.  Or you can do both, e.g., do your
development on the 147 board as well as run your real-time application on
the 147 board.  I believe it supports everything you asked for, and more.
You should call them and find out.  They're hot!

[Actually, as I understand it, Lynx may not be appropriate for 'hard' realtime
 systems, as the Unix compatibility exacts a performance penalty.  The 
 performance results shown later support this.  However, this is not meant to
 knock LynxOS; it still looks like a fine system, if Unix is what you'd like 
 in a real-time system.  You might also look at Uniflex, described later.
 
 Lynx's address is:

    Lynx Real-Time Systems, Inc.
    16780 Lark Ave
    Los Angeles, CA 95030
    (408) 354-7770
    
S.H.]

-------------------------------------------------------------------------------

I like PolyFORTH. 
[this was the entire text of the message - I don't know much about this
particular system - S.H.]

-------------------------------------------------------------------------------

[Another alternative may be Uniflex, a Unix-like hybrid system.  It manages two
parallel lists of tasks - a realtime list, and a Unix list.  The realtime
tasks always have priority over the Unix tasks.  Most of the development tools
(compiler, etc.) reside on the target, and are variants of GNU tools.  That's
about all I know about Uniflex - their address is:

    UniFLEX Computing Ltd.
    111 Providence Road
    Chapel Hill, NC 27514
    (919) 493-1451
    sales: (800) 486-1000

S.H.]


###############################################################################


As I mentioned, the people at the SSC Project ran a series of performance tests
on pSOS+, VRTX, and VxWorks, along with LynxOs.  I've printed some excerpts
below.  Thanks to Mike Allen and Carl Kalbfleich for sharing this data.

[taken from the paper "Overview of Real-Time Kernels at the Superconducting
Super Collider Laboratory"]
[The platform used for the tests was an MVME147S-1 VME-based, single board
computer with a 25MHz 68030 cpu]


    Throughput measurements are tabulated in Table 1 and what follows is a briefdescription of each test as it appears in the table.
    
  1) Create/Delete Task: This test measure the time it takes to create and
     delete a task.  A task deletes itself as soon as it is created.  the 
     created task has a higher priority than its creator, so the time quoted
     actually includes a create, start, delete, and two context switches.
  2) Ping Suspend/Resume Task: A low priority task resumes a suspended high
     priority task.  The high priority task immediately suspends itself.  This
     measurement includes two task context switches and the time it takes to
     suspend and resume a task.  There is no facility to suspend and resume a
     task on LynxOS apart from signals.  So this test was not performed under
     LynxOs.
  3) Suspend/Resume Task: This is identical to the previous test except that a
     high priority task suspends and resumes a suspended lower priority task so
     that there is no context switching.
  4) Ping Semaphore: Two tasks of the same priority communicate with each other 
     through semaphores.  Task A creates a semaphore, gets the semaphore then
     creates Task B which blocks when it attempts to get the semaphore.  Task A
     then releases the semaphore which immediately unblocks Task B.  Task A then
     attempts to get the semaphore which causes it to block until Task B 
     releases it.  The two tasks then alternate ownership of the semaphore
     thereby causing conbtext switches.  In our version of VxWorks, two separate
     semaphores are required because round-robin scheduling is not supported.
     [this was version 4.0.2 of VxWorks; round-robin mode, whileit may be
     possible in version 5.0.1, is still difficult to implement - S.H.]
  5) Getting/Releasing Semaphore: The time reporterd includes the time it takes
     to get and immediately release a semaphore within the same task context.
  6) Queue Fill, Drain, Fill Urgent:  We first time how long it takes to fill
     a queue with messages and then we tim how long it takes to drain the queue.
     Finally we repeat the two tests with priority messages i.e. messages are
     sent to the head of the queue.  VxWorks 4.0.2 does not support message 
     queues but ring buffers with semaphores gives the functionality of a 
     message queue. [VxWorks 5.0 now has message queues - S.H.]  LynxOS uses
     SystV message queues with priority messages handled differently.
  7) Queue Fill/Drain: A single task sends a message to a queue which the task
     immediately receives on the same queue.  There is no task switch nor are 
     there any pending queue operations.  The next test consists of two tasks
     with two queues.  The two tasks alternate execution by sending to the
     queue that the other is blocked waiting to receive from.  The total time
     now includes context switches, queue pends and sending plus receiving a
     message.
  8) Allocating/Deallocating Memory: We measure the time it takes to allocate a 
     number of buffers from a memory partition and the time it takes to return
     those buffers to the partition.
     
  9) Real-Time Response: We quantify the real-time response of the kernels by
     measuring the interrupt service response and the interrupt task response.
     The interrupt service response is the time it takes to execute the first
     instruction of an interrupt service routine (ISR) from when the interrupt
     occurrs.  The Task response is the time it takes for a user task to resume 
     excution from when the interrupt occurrs.


[ Note: there are two entries in the below table for pSOS+.  This is because
the pSOS+ programming interface comes in two forms: through a C Interface
Library (CILxxx.s), and through a Kernel Jump Module (KJMxxx.s).  Without going 
into specifics, suffice it to say that the standard pSOS+ distribution includes 
the KJM package, and this was the original configuration tested.   The CIL
package is faster, but it is not yet available, although I understand that SCG
will come out with it very soon. - S.H.]   
  

[Each column lists the average time for each test, in microseconds.  The
asterisk(*) marks the fastest kernel for each test.  Note that the message
queue times were fastest with VxWorks, but remember that these were not TRUE
message queues that were tested for VxWorks - S.H.]

                             pSOS+    pSOS+    VRTX32     LynxOS    VxWorks  
                             CILxxx   KJMxxx
Create/Delete Task           ---      591       371*       ---       1423
Ping Suspend                 114*     128       142        ---        177
Suspend Resume                71       83        87        ---         69*
Ping Semaphore               193*     219       239        397        232
Get/Release Semaphore         55       63        55         74         33*
Queue Fill                    38       46        26        140         20*
Queue Drain                   36       43        29        132         22*
Queue Fill Urgent             38       47        27*       170         72
Queue Fill/Drain              76       91        59        278         44*
Alternate Qs Fill/Drain      210*     238       252        867        371
Alloc Memory                  29       40        27*        57         68
Dealloc Memory                29*      38        33         20         83

Interrupt Service Response   ---        6         6         13          6
Interrupt Task Response      ---      163       169        175        125



[the following displays the range of times for the above tests.  Originally
this data was in the same chart as above, but I've split them because of space
restriuctions.  Anyway, they might provide an indication of the determinism of
these systems.  pSOS+ with the CIL interface is not included here - S.H.]

                        pSOS+(KJM)      VRTX32        LynxOS        VxWorks  
                        min/max/avg   min/max/avg   min/max/avg   min/max/avg
Create/Delete Task      540/600/591   370/380/371       ---      1378/1446/1423
Ping Suspend            120/130/128   140/150/142       ---       174/182/177
Suspend Resume           80/ 90/ 83    80/ 90/ 87       ---        68/ 74/ 69
Ping Semaphore          210/220/219   230/250/239   390/400/397   228/234/232
Get/Release Semaphore    63/ 64/ 63    55/ 56/ 55    73/ 76/ 74    33/ 34/ 33
Queue Fill               40/ 50/ 46    20/ 30/ 26   136/146/140    19/ 21/ 20
Queue Drain              40/ 50/ 43    20/ 40/ 29   126/136/132    21/ 25/ 22
Queue Fill Urgent        40/ 50/ 47    20/ 30/ 27   166/175/170    70/ 76/ 72
Queue Fill/Drain         90/ 93/ 91    50/ 70/ 59   280/290/278    43/ 48/ 44
Alt., Qs Fill/Drain     230/240/238   250/260/252   860/900/867   366/376/371
Alloc Memory             40/ 40/ 40    20/ 30/ 27    34/ 79/ 57    67/ 71/ 68
Dealloc Memory           30/ 40/ 38    30/ 40/ 33    20/ 21/ 20    82/ 86 /83

Interr. Svc Response      6/  6/ 6      6/  6/  6    13/ 88/ 13     6/ 56/ 6
Interr. Task Response   100/169/163   179/343/169   163/262/175   119/319/125



###############################################################################

Now for my personal observations on these kernels:

I evaluated pSOS+, VRTX Velocity, and VxWorks 5.0 each for about 30 days.  I
was mainly interested in the suitability of these systems for a networked
realtime system.  What I found was that while these systems were remarkably
similar, each one still had a character all its own.  I will therefore try to
point out the differences among them, instead of dwelling on the similarities.

Each system that I got for evaluation consisted of at least the following:

    1) a realtime kernel
    2) a board-level monitor/debugger
    3) a source-level remote debugger
    4) a networking module
    5) a compiler package

VRTX Velocity and VxWorks also include a target shell.
Notes on the above systems follow.


pSOS+:
------

    pSOS+ is the follow-on to the venerable pSOS kernel, from Software
Components Group.  The review package included the pSOS+ kernel, pROBE+ 
board-level monitor/debugger, and the pNA+ Network manager.  Also included was
a compiler package from Microtec, and XRAY+, which is a joint Microtec/SCG
product.

    The pSOS+ kernel is highly flexible, and its feature set is competitive
with the others.  However, the approach used to interface pSOS+ components to
user code is different from the other systems.  While the other systems link
the user code with the system code to resolve referneces, all of SCG's
components are called through software traps, which vector directly into the
pSOS+ kernel.  The kernel then determines which pSOS+ component to call to
service the request.  And while this provides position independence and
eliminates the need to link user code with pSOS+ routines, it also creates some 
overhead, since every call to a pSOS+ system component means a service trap.
This is reflected in the performance figures provided later.  Note, however,
that this applies to the KJMxxx.s (Kernel Jump Module) interface; an 
alternative interface, CILxxx.s (C Interface Library), apparently provides a
better way of calling pSOS+ system modules, and provided a better showing in
the same tests.

    The pSOS+ kernel's messaging facility allows up to four long words of user
data to be passed between tasks.  VRTX only allows a single word, which usually
means that memory has to be allocated in order to send any meaningful data
through messages (the length of VxWorks messages is unlimited).  Also, event
flags in pSOS+ can be directed either at a specific task, or be global.  Events 
in VRTX are always global, and VxWorks doies not have event flags.  pSOS+ also
allows each task to have an asynchronous signal handler.  This signal facility
is not entirely like Unix signals however, as the signal handler will not be
called until the user task makes a pSOS+ system call.

    The pNA+ networking package worked flawlessly, providing full Berkely 4.3 
sockets support.  The competing network packages provide similar functionality,
but only pNA+ has a socket-sharing mechanism, which can be convenient if
you're dealing with numerous independent connections on a single board.

    The XRAY+ source level debugger proved to be a versatile, reliable
debugger.  Its user interface was a bit awkward, however.  The debugging format
used is IEEE695; this format is fully supported by the accompanied MRI compiler
tools package, but I've heard of compatibility problems in using IEEE695 output
from other compilers.

    SCG has just announced the pNFS package.  This provides NFS and RPC support,
and is available in conjunction with their pHILE+ file management system.

    SCG also offers pSOS+/M, which is a multiprocessor version of the pSOS+
kernel.  It provides (nearly) seamless usage of standard pSOS+ calls over
multiple processors connected through various types of media, including
backplane and ethernet.


VRTX Velocity:
-------------- 

    VRTX Velocity is a combination of target software components and host-based
tools.  The target software evaluated consisted of the VRTX32 kernel, RTScope
board-level monitor/debugger, TNX TCP/IP Network manager, RTL runtime C
library, and RTShell target shell.  The host-based tools included the RTSource
remote source debugger, Hyperlink ethernet downloader/command center, and an
Oasys Compiler tools package.  The host side of the Velocity package runs only
on Sun3/Sun4 workstations in SunView.

    VRTX Velocity offers two approaches to development.  One is where tftp is
used to load the system software and RTshell at boot time using TFTP.  The
shell then can be used to load software onto the board off a network through
NFS.  An incremental linking loader is provided, which accepts standard Unix
format relocatable object files.  The shell allows funtions to be called, and
can evaluate most C expressions.  The alternative approach is to manually
download system software to the target board using Hyperlink, an intelligent
downloading program.  Hyperlink can also be used to launch other Velocity
programs, such as RTScope and RTSource.

    The VRTX32 kernel provides a unique approach to identifying tasks.  Each
task has a numeric ID, from 0..255.  They cannot have names, which are allowed
in pSOS+ and VxWorks.  If more tasks are needed, there can be multiple tasks
with an ID of zero, up to 16K of them.  These tasks are referred to as
'anonymous' tasks, and they usually cannot be directly referenced by other
tasks.  For instance, they cannot be deleted by ID, since an ID of zero used in 
system calls usually refers to the caller.  Fortunately, VRTX32 allows tasks to 
be referenced by priority groups, so this is one way to deal with anonymous
tasks.
    
    The VRTX kernel has some features which are lacking in the other kernels;
specifically, it provides character I/O operations at the kernel level, and it
provides mailboxes, which are similar to single-slot message queues.  However,
it is also lacking in other areas - for instance, there are no built-in time/
calendar functions, aside from a tick counter (this is also true with VxWorks);
in addition, when creating a new task, there is no easy way to pass parameters
to it.  Also, creation of tasks is always a single-step process; i.e., create
the task, and if its priority is higher than the caller, pre-empt the caller
and run the task.  This is different from pSOS+, where task creation is
a two-step process - i.e., create, then activate.  VxWorks allows the use of
either approach.  Also, there is the odd restriction that once a message queue
is created, it cannot be deleted.  Ready Systems claims that this is to
prevent fragmentation of system memory.  Finally, unlike pSOS+ and VxWorks,
VRTX32 lacks asynchronous signal handling.

    The RTScope board level monitor/debugger is highly flexible, and provides
two modes of operation: command mode and task mode.  In command mode, all user
tasks are halted, interrupts are disabled, and the standard suite of memory
operations and task control commands can be used.  In tasking mode, RTScope
runs as a task, alongside user tasks, with interrupts enabled.  The system can
therefore be monitored in action without impeding on user tasks.  Note that 
commands which infringe on normal system operations cannot be used in this mode 
- e.g., memory patching, task suspension, task creation, etc., are not
available.  Also, RTScope, unlike pROBE+, will not automatically halt all tasks 
if a single task crashes (usually).  The other user tasks will continue to run
normally, if possible (although whether this is a safe practice may be 
questionable).

    RTSource is a good, user-friendly source debugger.  It was easier to use
than XRAY+; however, reliability seemed to be inferior, as it would more easily 
get lost in the code.  RTSource also uses a proprietary debugging format, so
the Oasys compiler tools have to be used.  Ready Systems currently supports
version 1.8.3 of the compiler and rev 5.07 of the assembler/linker; however,
we use the Oasys tools in house here, and we're currently up to revs 1.8.5 and
5.11, so Ready Systems is several months behind in their support of the latest
Oasys revisions.

    Also available from Ready Systems is MPV, a multiprocessing version of the
VRTX kernel, which is similar in approach to pSOS+/M.  Also available is the
IFX manager, along with NFS and RPC support.  In addition, unique to Ready
Systems is the availability of VRTX Designer, which is a CASE tool for real-time
system design.  It uses known VRTX timing data to project the performance of
user designs and spot potential bottlenecks.  These products were not evaluated.

    VRTX Velocity provides automated scripts to build eproms, applications, or
even makefiles.  The scripts are interactive, and the user chooses from a list
what components he/she wants to include in the target.  The appropriate
makefile is then created that builds both the VRTX system software and the
user application.

    Installing VRTX Velocity is a mighty task, especially for the beginner.  It
required a kernel mod on the host workstation, and I had to spend some time
with the Field Application Engineer to get parts of Velocity working.  In
addition, RTShell doesn't like workstations that don't have a local disk
attached.  But aside form these problems, VRTX Velocity is a sophistaced,
highly integrated development environment.


VxWorks:
--------

    The current version of VxWorks is 5.0.1a, from Wind River Systems.  It
includes the WIND kernel, a target shell, a TCP/IP networking manager, an
extensive C runtime library, and the GNU compiler toolkit.  The GNU tools
include the C compiler, assembler, linker, and VxGDB, which is the GNU
debugger modified by WRS to work in the realtime environement.

    VxWorks, like VRTX, normally boots by loading its system code off the
network.  Whereas VRTX uses TFTP to do this, VxWorks uses rsh on a host 
workstation.

    As an interesting note, prior to version 4.0, VxWorks utilized the VRTX
kernel from Ready Systems.  Eventually however, WRS packaged their own WIND 
kernel in VxWorks.
    
    The WIND kernel provides comparable functionality to the other kernels.
However, it lacks true roundrobin scheduling, and event flags are absent.  In
addition, the WIND kernel does not offer any real-time clock functions, only a
tick counter.  On the other hand, its semaphore support is excellent - binary, 
counting, and mutual exclusion semaphores (with priority inversion) are
included.  Both pSOS+ and VRTX offer only counting semaphores.  Likewise,
pipes are absent in both pSOS+ and VRTX32, but they're present in VxWorks. 
VxWorks also features Unix-style signals, which are truly asynchronous - i.e.,
a task will stop whatever it's doing at the moment, and service the signal.

    WIND insists on routing interrupt routines through its kernel; however,
this can be bypassed.  Handling interrupts yourself should not be a problem
with any of these kernels; however, VxWorks tries to convince the user to let
it handle interrupts, and thus provides several interrupt-related commands in
the kernel.

    Unlike pSOS+ and VRTX, there is no separate mulitprocessing version of the
WIND kernel.  However, WRS does provide a loosely coupled backplane protocol
where boards on the same bus can communicate via a socket interface.

   VxWorks does not have a true board-level monitor/debugger like pSOS+ or
RTScope.  It does however have a target shell that is a cross between the
board level debugger and the RTShell type of shell.  It provides an incremental
linking loader that accepts Unix object files, and it provides all of the
memory & task oriented examine/modify commands provided in the board debuggers.
In addition, it also offers extensive symbolic disassembly and  debugging
facilities.

    The level of networking support provided by VxWorks is excellent.  NFS and
RPC support is of course included; in addition, rsh, telnet, and ftp are
available to and from the target.

    Unique to VxWorks is the availability of a source license.  You may have
already heard about the person who posted in this group on how he ported
VxWorks over to SunOS.

    The VxGDB debugger has its origins in the Unix GNU GDB debugger.  People
have mixed opinions about GNU tools, but I found VxGDB to be a serviceable, if
somewhat unremarkable debugger.  It's not a windowed, SunView application like
XRAY+ and RTSource are, so it lacks their flash and glamour.  In addition, it's 
more of a single threaded debugger, so it's more difficult to use when
debugging several tasks in one system.

    One area in which VxWorks suffers seriously is documentation.  The basic
documentation is a single programmer's guide, which is very skimpy and does not 
offer enough solid information to build and use a VxWorks based system.  The
necessary functions are listed, but without parameters or error codes.  WRS
does also provide Unix-style online man pages; however, these are no better
than their Unix counterparts, and provide only a minimum of information.  After 
dealing with the excellent documentation that came with pSOS+ and VRTX
Velocity, the VxWorks documentation was a real disappointment.



Conclusions:
============

    Draw whatever conclusions you will - the fact is that all three systems are
competitive; otherwise, the vendors would not be where they are today (in
business, that is).  However, each of them has its strenghts and weakensses.

 o  pSOS+ is a solid, reliable system, and with the CILxxx interface its
    performance is tops among the three kernels.  However, with the currently
    distributed KJMxxx interface, its components utilize the software trap
    interface and performance suffers as a result.  Also, the level of manual
    configuration work required of the user is quite high.  In addition, it
    should be noted that Software Components has been slow in bringing out
    products in support of new technology - e.g., they've only now announced
    NFS & RPC support.
    
 o  VRTX Velocity is a sophisticated development environment, and provides
    an unmatched level of flexibility, automation and ease of use.  However,
    its complexity can be daunting at times, especially to the beginner.  Also,
    VRTX32 is a decent kernel, but it falls short of pSOS+ and WIND in terms of
    both features and performance.  Finally, sources both on and off the net
    confirm the somewhat buggy nature of VRTX Velocity components.

 o  VxWorks enjoys a good reputation among its customers.  Its networking
    support is clearly superior, and it has a flexible kernel, with strong
    interprocess communication facilities.  It also provides the most
    similarity to Unix of all three systems, without sacrificing performance.
    On the down side, however, its remote source level debugging facility is
    not as sophisticated as the competition, and its documentation leaves much
    to be desired.  In addition, VxWorks is conspicuously void in the area ofa
    multiprocessor kernel, which the others provide.  Finally, I have to wonder 
    about the level of support that would be available for the GNU tools.
 
 
Again, remember that I have no affiliation with any of the above companies, and
the opinions I express are mine alone and do not necessarily reflect those
of my organization.


###############################################################################

If you have any factual questions about these products, don't ask me; go 
straight for the horse's mouth.

    Software Components Group
    1731 Technology Drive
    San Jose, CA 95110
    (408) 437-0700
    
    Ready Systems
    470 Potrero Avenue
    P.O. Box 60217
    Sunnyvale, CA 94086
    (408)736-2600
    
    Wind River Systems
    [I'm not sure of their California address, as I think they've moved; so
     here's their Boston sales office - S.H.]
    Paul Kusiak, Sales Rep
    77 North Washington Street
    Boston, MA 02114
    (617) 367-6567
    

Informed discussions on the relative merits of these systems will be welcome.
Biased flames, however, will be redirected to /dev/null.
    
-- 
! Sung Han @ Commonwealth Edison Corp., Chicago, Illinois
!
! sung@ceco.ceco.com, or
! uunet!ceco.ceco.com!sung

antu@field.fi (Antero Markkula / Systems) (06/06/91)

Here comes some additional (subjective) information on realtime kernels.

There is an excellent concept for people, who want to make distributed 
applications using 68k / 88k -based VME/VSB processor boards.
This concept is Motorola Computer Systems's VMEexec.

The realtime kernel currently used (but not limited to)  is SCG:s pSOS+ ,
multiprocessing version.  Program development is done using Motorola Delta
series Unix computers or AT micros (Philips).  Downloading is done through
ethernet or/and VMEbus. Ethernet targets can be shared by several programmers
without shutting power down from the Unix computer several times every day,
when different boards are tested, which is the case if targets reside in host.
68k and 88k systems can be mixed in an application.

User interface is Xwindows, debugger is XRAY's special version with remote
debug / monitoring capability.
SCG's pPROBE is a valuable addition to the testing environment.
Tools to build applications are menu driven and fast to use.  Tasks can be
boot resident and also loaded dynamically.  There is also a makefile generator
mkmk for easy integration of own C programs.

The realtime application can communicate with Unix V using SVIDlib library.
Communication can transparently happen both using VMEbus and ethernet.
SVIDlib also makes it possible to port Unix applications to the realtime world.
The realtime applications can be prommed, or booted from Unix or local disk,
or finally from ethernet.  Ethernet support includes TCP/IP portable streams.

Standardisation

VITA (VMEbus Trade Association) has provided a document called ORKID (Open
Realtime Kernel Interface Definition), which is similar to SVID, but proposed
for a realtime standard.  ORKID defines the following (kernel independent):

	1. Task control
	2. Queues for multiple task priority management
	3. Semaphores
	4. Clock and timer controls
	5. Memory allocation facilities
	6. Hardware interrupt support facilities
	7. Event flags
	8. Expections handling mechanisms
	9. General system administration functions.

	Moving from a single processor system is very straightforward; 
	basically You have to flag the necessary local objects to global.

The POSIX committee for realtime extensions - P.1003.4 - also assigned the
ORKID members with document to the P.1003.13 - Realtime Applications Study
Group.

So, POSIX and ORKID integration means faster standardisation process.

The VMEexec targets range from about 2 MIPS MVME107 (68010) to the new
32 MIPS MVME187 (88100) SBC.

To summarize, why VMEexec is a good solution for realtime applications:

	- based to standards (SVID, ORKID/POSIX, X11, TCP/IP, VMEbus)
	- economical development environment (Mot. Delta or Philips AT)
	- fast design cycle
	- supports from single cpu embedded applications to large multiprocessor
	  distributed unix / embedded applications (from small machine control
	  					    to huge aircraft simulators)

DISCLAIMER: These opinions are my own - even if they may be shared with many
	    others !


Antero Markkula                                      E-Mail: antu@field.FI
Department manager/Systems, Field Inc.               Telex : 122022 field sf
                                                     Fax   : +358 0 798853
                                                     Phone : +358 0 757 1011
"We are what we are and it's never enough" - Chris de Burgh


-- 
Antero Markkula                                      E-Mail: antu@field.FI
Department manager/Systems, Field Inc.               Telex : 122022 field sf
                                                     Fax   : +358 0 798853
                                                     Phone : +358 0 757 1011

glenn@ready.eng.ready.com (Glenn Kasten) (06/08/91)

The following article was written by Theresa Rickman of Ready Systems.
I am posting it to the news on her behalf.  This should keep the kernel
wars going :-)

Glenn Kasten
Ready Systems 470 Potrero Ave. Sunnyvale CA 94086 
glenn@ready.com (408) 522-7357 

********************************************************

To :  Sung Han and comp.realtime
From : Theresa Rickman 
       Ready Systems 
	chambers@ready.com
 
I am a field engineer for Ready Systems.  I would like to add the
following corrections/information to your comparision : 
 
     1) Ready systems does have support for multiple platforms.  
You suggest that the only host we run off of is SUN 3/4. We also
support  PC/DOS, VAX/VMS, DECstation/Ultrix and will soon be
supporting HP as well. Each platform has source-level debugging
and most of the  suite of Velocity tools available.  The compiler
supported on the all of the platforms is the Microtec compiler. 
On the SUN you may use either the Microtec or the Oasys compiler.
All the target components are available on all platforms. 
Ethernet downloading is not provided as part of the PC platform.
 
     2) You seemed to emphasize the "Kernel Jump Interface" that
PSOS has. Ready Systems also has a kernel jump interface, and as
has this interface since 1981.  This allows you to target VRTX
from any language/host/compiler.  You can run tasks written in
different languages on the same processor, and use VRTX to
communicate between them.  All of our components (ie, TNX, MPV,
RTSCOPE, IFX) are also language independent.  The only thing that
ties you to C or a particular compiler is the host-resident
tools.  If you want to use our source-level debugger and ethernet
download tool, you will have to run on host enviroment we
support.  However, there is nothing preventing you from using
VRTX from another host enviroment and using thier source-level
debug tools.  We also have ARTX, which is a kernel for ADA
applications, and 5 Ada vendors currently targeting their
compilers to support this runtime (Verdix, Alsys, Tartan,
Meridian, and SD). 
      
     3) You also emphasized that PSOS has global and local event
flags. I as far as I know, PSOS only has local (I am referencing
THEIR sales training material, Jan 1991) and that there is no
reason you can't make a global event flag local to a task anyway. 
You CAN pass parameters to a task, this is provided as a c-source
application example, that you CAN implement timers  with VRTX,
this is also provided as a C-source example.  It's just not a
part of the kernel because not everybody needs it.  

     4) also, there is no reason you can't run rtshell from a
station that does not have a local disk.  It is described in the
documentation how to do this.  The example is perhaps not as
clear as it could be, but the information is there, and it does
work.
 
     5) Mailboxes are NOT SINGLE SLOT MESSAGE QUEUES.  Mailboxes
are located in user memory which allows you to define dynamic
per-record semaphores.  Thus, by simply allocating a lock
variable as part of a record you now have per-record locking for
that array. This is an extremely powerful feature which both PSOS
and VXworks lacks.  

     6) RTsource will allow you dedicate a window to each task in
the system.  You have the flexibility to halt either one or all
of the tasks in the system.  You can also look at structures and
local variables for a task while the task is running.  You can
also modify memory (at the source code level) while the system is
running.  Each window is tied to a particular target, and a
particular task.  Thus, you can use one RTSource session to talk
to several different processor boards which can be located in one
chassis, or spread across chassis.  You only need one Ethernet
connection into the chassis to source-level debug all of the
boards in the chassis.  You can set a breakpoint on one processor
and ask RTSource to stop all of the processors when that one
processor hits its breakpoint. (This is also an extremely
powerful feature which I believe neither VXWorks or PSOS has.)

     7) You're right, RTsource is currently sunview.  However, we
will have XWindows/Motif by the end of the year.

     8) One closing important point.  Ready systems has committed
to protecting our customer's investment in our product.  Even
code which customers wrote as early as 1981 is still upwardly
compatible.  Our customers never lost their software investment. 
PSOS's customers had to completely rewrite their code when PSOS
went to PSOS to PSOS+, and so did VXWorks's customers when they
went from 4.x to 5.0.  Our next generation software, which we
have been working on the past 3 years, is already upwardly
compatible.  We are committed to never cutting our customers off.

 
If you have any questions or would like more information on our
products, please don't hesitate to call me. 


     Sincerely,

          Theresa L. Rickman
          Ready Systems
          7855 Walker Drive
          Greenbelt, MD 20770

          301-345-8700
	  chambers@ready.com
 
-- 
Glenn Kasten
Ready Systems 470 Potrero Ave. Sunnyvale CA 94086 
glenn@ready.com (408) 522-7357 

sung@ceco.ceco.com (Sung Han) (06/11/91)

Gotta keep the wars going...

In article <1991Jun7.181339.25325@ready.eng.ready.com> glenn@ready.eng.ready.com (Glenn Kasten) writes:

Ready Sys> The following article was written by Theresa Rickman of Ready
Ready Sys> Systems.
Ready Sys> ...
Ready Sys>      3) You also emphasized that PSOS has global and local event
Ready Sys> flags. I as far as I know, PSOS only has local (I am referencing
Ready Sys> THEIR sales training material, Jan 1991) and that there is no
Ready Sys> reason you can't make a global event flag local to a task anyway.

Okay, my mistake - what I meant to say was that in pSOS/pSOS+, one can broadcast
a message - i.e., you can wake up all the tasks that are waiting at a message
queue by sending a single message, instead of having to send one message per
task.


Ready Sys> You CAN pass parameters to a task, this is provided as a c-source
Ready Sys> application example 

I was told by a FAE to use a message queue to send parameters to a newly-created
task - but this seems rather kludgy to me.  I see no good reason why I shouldn't
be able to pass parameters to a task when I create it.


Ready Sys> that you CAN implement timers  with VRTX, this is also provided as a
Ready Sys> C-source example.  It's just not a part of the kernel because not
Ready Sys> everybody needs it.  

IMHO, I consider time and date functions to be an important part of a real-time
system; they're used in several systems in our site.  I can't imagine that the
overhead of including them would be that large.


Ready Sys>      4) also, there is no reason you can't run rtshell from a
Ready Sys> station that does not have a local disk.  It is described in the
Ready Sys> documentation how to do this.  The example is perhaps not as
Ready Sys> clear as it could be, but the information is there, and it does
Ready Sys> work.

The local FAE tried to convince me this could be done (running RTShell w/o a
local disk); however, he came here on-site to get it working, & couldn't.  He
also couldn't figure out what the documentation was trying to say on this point.


Ready Sys>      5) Mailboxes are NOT SINGLE SLOT MESSAGE QUEUES.  Mailboxes
Ready Sys> are located in user memory which allows you to define dynamic
Ready Sys> per-record semaphores.  Thus, by simply allocating a lock
Ready Sys> variable as part of a record you now have per-record locking for
Ready Sys> that array. This is an extremely powerful feature which both PSOS
Ready Sys> and VXworks lacks.  

Indeed, this does appear to be the case.  However, mailboxes could still be
simulated using semaphores and shared memory - simply stick the semaphore ID in
the area reserved for the mailbox entry, and tasks can contest for the semaphore
before accessing the record.  True, the semaphore itself won't be in local
memory, but the functionality should still be similar.


Ready Sys>      6) RTsource will allow you dedicate a window to each task in
Ready Sys> the system.
Ready Sys> ...
Ready Sys> You can set a breakpoint on one processor
Ready Sys> and ask RTSource to stop all of the processors when that one
Ready Sys> processor hits its breakpoint.

Good point - multitask debugging is a strong point of RTSource.  XRAY+ and
VxGDB normally follow a single task at a time, and don't offer any
multiprocessor debugging features (I think).


Ready Sys>      8) One closing important point.  Ready systems has committed
Ready Sys> to protecting our customer's investment in our product.  Even
Ready Sys> code which customers wrote as early as 1981 is still upwardly
Ready Sys> compatible.  Our customers never lost their software investment. 
Ready Sys> PSOS's customers had to completely rewrite their code when PSOS
Ready Sys> went to PSOS to PSOS+, and so did VXWorks's customers when they
Ready Sys> went from 4.x to 5.0.

This is not entirely accurate.  The change from pSOS to pSOS+ involved the
integration of several new calls, and the renaming of the old system calls.
pSOS calls did need to be changed to the new ones, but basically a
one-for-one match could be made between the old and new calls.

As for the introduction of new system calls, this is a natural effect of
evolution.  Let's not forget that users also had to learn new system calls in
going from VRTX to VRTX32.

As for VxWorks, that's a different story.  They had been pitching their 
"use-any-kernel-you-want" approach in version 4.0, but that ability appears to
have disappeared in version 5.0.  Perhaps someone will correct me, but it
appears that you can no longer use the VRTX/VRTX32 or pSOS kernels within
VxWorks, and are limited to using their WIND kernel instead.  If this is true,
I'd be interested in hearing what people who had used a third party kernel in 
VxWorks did when they moved to version 5.0.


Ready Sys> -- 
Ready Sys> Glenn Kasten
Ready Sys> Ready Systems 470 Potrero Ave. Sunnyvale CA 94086 
Ready Sys> glenn@ready.com (408) 522-7357 


>> Remember, I have no affiliation with any of the companies listed here, and
>> the opinions listed here are my own, and do not necessarily reflect those of
>> my employer.
-- 
! Sung Han @ Commonwealth Edison Corp., Chicago, Illinois
!
! sung@ceco.ceco.com, or
! uunet!ceco.ceco.com!sung

dwells@fits.cx.nrao.edu (Don Wells) (06/12/91)

In article <577@ceco.ceco.com> sung@ceco.ceco.com (Sung Han) writes:
   ... Good point - multitask debugging is a strong point of RTSource.
   XRAY+ and VxGDB normally follow a single task at a time, and don't
   offer any multiprocessor debugging features (I think)...

I have done multitask debugging under vxWorks. I have used the
dbxWorks package, as sold by Sun Consulting, under SunView.  With
dbxWorks it is trivial to do multitask debugging. The manuals never
talk about it, because it is obvious! Just pop open a window with
another instance of dbxtool (yes, the standard SunOS windowed
source-level debugger) and connect it to the second task running under
vxWorks (the dbxWorks package hacks dbx to support remote debugging).
If the tasks interact in a critical region you can walk both of them
up to the region, and then walk them through it, issueing commands to
the respective tasks and debuggers by simply moving the mouse from one
window to the other, and watching the results of the interaction in
the respective windows. I have not yet done this with two tasks in two
different processors, but I can't see any reason at all why it
shouldn't work in exactly the same way.

I have not yet examined vxGDB, but I expect that the same
considerations will apply to it. GDB is not yet an X-windowed tool,
but dbxWorks gives lots of hints about what the developers should
do...

In summary, in 1991 with windows on every desk, why should we bother
to build multi-task capability into a single-task debugger when we can
just pop open another window and run a completely independent instance
of the debugger?

--

Donald C. Wells             Associate Scientist        dwells@nrao.edu
National Radio Astronomy Observatory                   +1-804-296-0277
Edgemont Road                                     Fax= +1-804-296-0278
Charlottesville, Virginia 22903-2475 USA            78:31.1W, 38:02.2N 

cwk@boomer.ssc.gov (Carl W. Kalbfleisch) (06/12/91)

>>>>> On 10 Jun 91 18:32:16 GMT, sung@ceco.ceco.com (Sung Han) said:


In article <577@ceco.ceco.com> sung@ceco.ceco.com (Sung Han) writes:


Ready Sys>      6) RTsource will allow you dedicate a window to each task in
Ready Sys> the system.
Ready Sys> ...
Ready Sys> You can set a breakpoint on one processor
Ready Sys> and ask RTSource to stop all of the processors when that one
Ready Sys> processor hits its breakpoint.

Sung> Good point - multitask debugging is a strong point of RTSource.  XRAY+ and
Sung> VxGDB normally follow a single task at a time, and don't offer any
Sung> multiprocessor debugging features (I think).

Actually XRAY+ is a system level debugger.  A breakpoint can be put on
any task in the system.  When the breakpoint is hit, the entire system
is stopped.  It is not possible to keep the other tasks running.

Debugging multiproccessor environments currently requires one XRAY+ program
running for each target.  Apparanetly they will use some shared data 
space in the host.  According to information I received at the MRI User's
Group meeting in April, future version of XRAY may be able to support
multiple targets simultaneously.

Also, while running XRAY+, the on board monitor, pROBE+, can be accessed
to determine the state of pSOS+ objects (tasks, queues, etc).  I believe
this level debugging can only be achieved on VRTX with RTscope, which
can not be run while running RTsource.  (Ready can comment on this, please).

--

+--------------------------------------------------------------------------+
|  Carl W. Kalbfleisch                              cwk@psychosis.ssc.gov  |
|  Superconducting Super Collider Laboratory                               |
|  2550 Beckleymeade Avenue, MS-4002                                       |
|  Dallas, Texas 75237                                     (214) 708-3428  |
+--------------------------------------------------------------------------+

glenn@ready.eng.ready.com (Glenn Kasten) (06/13/91)

Carl W. Kalbfleisch writes:

>I believe this level debugging can only be achieved on VRTX with RTscope,
>which can not be run while running RTsource.
>(Ready can comment on this, please).

When RTscope is in "tasking" mode, RTsource can also be used with it.
When target hits an RTscope breakpoint, RTsource freezes until
you continue from RTscope.

-- 
Glenn Kasten
Ready Systems 470 Potrero Ave. Sunnyvale CA 94086 
glenn@ready.com (408) 522-7357 

dan@Eyring.COM (Dan Fritch) (06/15/91)

In reviewing the article about "Summary of opinions and info on
realtime kernels (long)", we were disappointed that PDOS and its
run-time companion, VMEPROM, were not listed in the benchmark
timings.  We thought this might be of interest.  PDOS is a full
real-time operating system which supports multi-processing with a
rich compliment of development and debugging tools.  

The following table provides the comparative PDOS time for each
test.  Also included are comments about the various tests at the
end of the table.  These tests were run on the same hardware that
the other kernels were tested on -- a MVME147S-1 with a 68030
processor running at 25 mHz.  Therefore, all timings should be
compatible. 

**************************************************************** 

     * denotes the fastest system for each test

               pSOS+ VRTX32 LynxOS VxWorks    PDOS
Creat/Del Task  591   371*   ---    1423       1113
Ping Suspend    114   128    ---     117         79*
Suspend/Res.     71    83    ---      69         27*
Get/Release Sem. 55    63     55      74          2*
Interrupt Service
     Response     6    6      13       6          3*
Interrupt Task
     Response   163   169    175     125         41*
   
All times are in micro-seconds

The following tests were not executed because of insufficient
descriptions to code them.  If someone will send us the
algorithms, we will be happy to run these tests as well.

     Ping Semaphore
     All Queue tests
     Memory Alloc/Dealloc tests

*****************************************************************

GENERAL COMMENTS

Our first design objective in developing PDOS  was to provide
"Fast Real-Time Response".  With this objective in mind, we were
very  interested in how we compared to the other systems listed.
After coding and executing the tests per the descriptions (where
possible), PDOS compared very favorably to the other systems. 

Just as UNIX has been honed over the years as a full-development
environment, PDOS has been highly optimized for real-time
performance over the last 10 years.  During this time we have
developed a unique real-time scheduler which is prioritized and
pre-emptive in nature, as well as a set of synchronization
services that allow very efficient execution of real-time tasks. 
On the other hand, many vendors have based their designs on UNIX
concepts which we do not always find optimal for real-time
systems.  Because of our unique design, we can provide (what
appears from the tests) the fastest realtime system.

TEST COMMENTS:

Create/Delete Task:
     PDOS was not the fastest in this case, but PDOS still allows
     for dynamic creation and deletion of tasks.  We feel that
     critical real-time applications should pre-define tasks     
     anyway.

We have spent a great deal of time in optimizing the ability of
PDOS to ready and execute tasks.  This is clearly demonstrated
with the "Ping Suspend Task" and the "Suspend/Resume Task" tests. 
This optimization provides a very low overhead where multiple
tasks must synchronize within the system.

Ping Suspend Task:
     This benchmark shows the time it takes to perform a
     pre-emptive reschedule to a higher priority task from a     
     lower priority task.  PDOS was 35 microseconds or 44%     
     faster.

Suspend/Resume Task:
     This is the time needed to ready a lower priority task in   
     the system.  PDOS out performed all others by 42 micro-     
     seconds or by a factor of 2.6 times.

Ping Semaphore:
     We could not tell what exactly needed to be timed with this 
     test.  We would appreciate additional information since we  
     feel PDOS may out perform the others because of the previous 
     2 tests results.

Get/Release Semaphores:
     PDOS provides a unique feature that has been used in     
     numerous applications called Physical Events.  This allows     
     for Semaphores to be created that operate at extreme speed     
     when dealing with resource locks.  The fastest competitive     
     time listed was 33 us for this test.   PDOS can perform the     
     same function in 2us or 16.5 times faster.

In regard to interrupts, we understand that real-time systems
must respond very optimally to interrupts or they may be forever
lost.  Processing interrupts should be a key objective of a real-
time system since it must schedule tasks according to external or
"real world" events.  Therefore, the PDOS philosophy has been to
optimize the interface between a real-time task and hardware
interrupts.  We know that critical real-time design problems
often occur because the interrupt service window may be small.

Interrupt Service Response:
     The first instruction executed in a standard PDOS interrupt 
     service routine is the first instruction of the routine.  We 
     do not add additional overhead to the routine.  The time    
     quoted would be the time for the hardware to generate the   
     vector and execute the first instruction.  PDOS provides the
     most optimal approach for performing this test.

Interrupt Task Response:
     We view this as a very critical test since this is the time 
     from when the interrupt occurs to the time the waiting      
     task begins executing.  This means that a pre-emptive
     rescheduling of tasks must occur as a result of the external
     interrupt.  We have worked for years to optimize this       
     portion of our system.  Our response time to external       
     interrupts is 44us or 3 times faster than the next kernel   
     listed on the tests.  Because PDOS is so fast in scheduling 
     tasks from interrupts, what other systems must do during    
     interrupt service time, PDOS can execute as a task when     
     interrupts are fully enabled.

As we previously noted, the first PDOS design objective is "Fast
Real-Time Response."   We are continuing our efforts to provide
real-time software for demanding real-time applications.

Additional Information on PDOS and related products as well as
any questions on our tests may be obtained from:

Eyring Systems Software Division
1455 West 820 North
Provo, UT 84601

Phone: 1-800-YES-PDOS or 1-801-375-2434
Fax: 1-801-377-3850
Email: pdos-info@Eyring.COM
-- 

Dan Fritch	dan@Eyring.COM  uunet!lanai!dan
Eyring Inc.	+1 801-375-2434 x401

cwk@boomer.ssc.gov (Carl W. Kalbfleisch) (06/17/91)

>>>>> On 14 Jun 91 22:19:44 GMT, dan@Eyring.COM (Dan Fritch) said:


In article <1991Jun14.221944.28068@Eyring.COM> dan@Eyring.COM (Dan Fritch) writes:

Dan> In reviewing the article about "Summary of opinions and info on
Dan> realtime kernels (long)", we were disappointed that PDOS and its
Dan> run-time companion, VMEPROM, were not listed in the benchmark
Dan> timings.  We thought this might be of interest.  PDOS is a full
Dan> real-time operating system which supports multi-processing with a
Dan> rich compliment of development and debugging tools.  

Dan> The following table provides the comparative PDOS time for each
Dan> test.  Also included are comments about the various tests at the
Dan> end of the table.  These tests were run on the same hardware that
Dan> the other kernels were tested on -- a MVME147S-1 with a 68030
Dan> processor running at 25 mHz.  Therefore, all timings should be
Dan> compatible. 

As one of the principle participants in the SSC Labs evaluation of 
real-time kernels, I find Eyring Inc's number (see below) a bit hard to
swallow.  Our test program was carefully designed to test similar
calling sequences in each kernel.  Unless this program is used with PDOS,
the numbers obtained are certainly questionable.  

Purhaps they would like to supply us with an evaluation copy of their 
product and let us run the tests ourselves.


Dan> **************************************************************** 

Dan>      * denotes the fastest system for each test

Dan>                pSOS+ VRTX32 LynxOS VxWorks    PDOS
Dan> Creat/Del Task  591   371*   ---    1423       1113
Dan> Ping Suspend    114   128    ---     117         79*
Dan> Suspend/Res.     71    83    ---      69         27*
Dan> Get/Release Sem. 55    63     55      74          2*
Dan> Interrupt Service
Dan>      Response     6    6      13       6          3*
Dan> Interrupt Task
Dan>      Response   163   169    175     125         41*
Dan>    
Dan> All times are in micro-seconds

Dan> Additional Information on PDOS and related products as well as
Dan> any questions on our tests may be obtained from:

Dan> Eyring Systems Software Division
Dan> 1455 West 820 North
Dan> Provo, UT 84601

Dan> Phone: 1-800-YES-PDOS or 1-801-375-2434
Dan> Fax: 1-801-377-3850
Dan> Email: pdos-info@Eyring.COM
Dan> -- 

Dan> Dan Fritch	dan@Eyring.COM  uunet!lanai!dan
Dan> Eyring Inc.	+1 801-375-2434 x401
--

+--------------------------------------------------------------------------+
|  Carl W. Kalbfleisch                              cwk@psychosis.ssc.gov  |
|  Superconducting Super Collider Laboratory                               |
|  2550 Beckleymeade Avenue, MS-4002                                       |
|  Dallas, Texas 75237                                     (214) 708-3428  |
+--------------------------------------------------------------------------+