home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #27 / NN_1992_27.iso / spool / comp / realtime / 1361 < prev    next >
Encoding:
Internet Message Format  |  1992-11-21  |  61.9 KB

  1. Path: sparky!uunet!zaphod.mps.ohio-state.edu!saimiri.primate.wisc.edu!ames!agate!stanford.edu!rutgers!modus!dyna!osra!felix!eb
  2. From: eb@felix.Sublink.Org (Enrico Badella)
  3. Newsgroups: comp.realtime
  4. Subject: [VERY LONG] Summary of replies on VRTX, Vxworks, pSOS+ and other RTOSes
  5. Keywords: Lynxos, VRTX, Vxworks, pSOS+, Venix, QNX
  6. Message-ID: <919@felix.Sublink.Org>
  7. Date: 20 Nov 92 11:36:26 GMT
  8. Organization: Soft*Star s.r.l, Torino, Italy
  9. Lines: 1335
  10.  
  11. As promissed I'm posting all the replies I received to my query
  12. about experience with a selected group of realtime OS.
  13.  
  14. I hope I didn't miss anyone since in the last couple of weeks
  15. we had an incredible number of hardware failures on all our
  16. machines that handle incomming mail.
  17.  
  18. Thanks to all those who took time to mail me. 
  19. What has come out is almost a FAQ.
  20.  
  21. Enjoy
  22.  
  23.  
  24. ================================================================================
  25. ================================================================================
  26. Marc Maathuis                           Tel:    +33 (1) 30 64 82 57 (direct)
  27. Chorus systemes                         Fax:    +33 (1) 30 57 00 66
  28. 6, avenue Gustave Eiffel                E-mail: mm@chorus.fr 
  29. F-78182 St. Quentin en Yvelines Cedex
  30.  
  31. You might want to take a look at CHORUS, a distributed real-time
  32. microkernel that can be combined with the CHORUS/MiX subsystem, which
  33. is modular fully compatible UNIX System V (R3.2 or R4) implementation.
  34. CHORUS runs on i386/i486, 680x0, ands several other processors.
  35.  
  36. There are several technical reports on CHORUS available via anonymous
  37. FTP from Chorus systemes, France:  opera.chorus.fr [192.33.15.3],
  38. directory pub/chorus-reports. See the file "index" for an overview.
  39.  
  40. If you are interested in receiving a documentation package on the
  41. company Chorus systemes and its products based on the CHORUS
  42. technology, just send me an email. If you want any commercial
  43. information, you may contact Joel Morali <joel@chorus.fr>. I'll be
  44. happy to answer any technical questions that you may have.
  45.  
  46. ================================================================================
  47. ================================================================================
  48. mhuang@bu-ast.bu.edu (Maohai Huang)
  49. Astronomy Department, Boston University, Boston, MA, USA
  50.  
  51. I can't say I have much expierences on Lynx for I've just started to use
  52. LynxOS2.0 for my work on an i486/33MHz. Maybe what I say here can be
  53. somewhat informational. And I hope that those having experience on
  54. Lynx and other RTOSes can gives comments, comparisons or whatever
  55. you find about the OSes here.
  56.  
  57. As for the enviroment, Lynx provides several shells including ksh and dlsh
  58. which I think you'll feel familiar if you use SunOS. But the utilities are
  59. far less abundant. I was told the newest versoin of Lynx v2.1 also includes
  60. tcsh.  
  61.  
  62. My colleague who was hunting around for real-time unix running on PC
  63. for our project of building a submilimeter radiotelescope chose Lnyx
  64. because of the price and that a similar system has been runing in the Bell
  65. Labs (which is a partner of the project) for several years. Our project
  66. doesn't require the system tightly because the whole control-cycle is about
  67. 10 ms and the online data pre-process work are not supposed to be heavy. 
  68.  
  69. I find the system become much slower when a task with high priority is
  70. runing -- more slower than is supposed. And the entire system stops
  71. reacting to other tasks when making tar to tape. I think that making quick
  72. reaction to high prior task's requirements is essential for realtime
  73. systems, which causes some sort peculiarity when you use them. But at least
  74. now I can't tell how other system reacts on the same hardware platform.
  75. Actually I think a 486 is a pretty good platform for many realtime tasks.
  76.  
  77. ================================================================================
  78. ================================================================================
  79. Dan Hildebrand                     email: danh@qnx.com
  80. Quantum Software Systems, Ltd.     QUICS: danh  (613) 591-0934 (data)
  81. (613) 591-0931 x204 (voice)        mail:  175 Terrence Matthews          
  82. (613) 591-3579      (fax)                 Kanata, Ontario, Canada K2M 1W8
  83.  
  84. You must be careful when reviewing the literature presented by various OS
  85. vendors. Unless you can duplicate the benchmark claims made, a certain
  86. amount of skepticism is required. Always insist on being able to get the
  87. benchmark code to be able to duplicate their published results. If they
  88. won't provide the benchmark source, then you have to wonder why...
  89.  
  90. You can go with a Texas Microsystems or Industrial Computer passive
  91. backplane ISA chassis. THeire built MUCH better than regular desktop boxes.
  92. You could also go with 486 on VME. The 486/50 or 486/66 outperforms the
  93. 680x0 boards, and I've also heard that they are less expensive because of
  94. the high volume gate arrays they can use.
  95.  
  96. You might also want to try QNX. I've appended some technical information
  97. on QNX.
  98.  
  99. The paper "An Architectural Overview of QNX", is available by anonymous ftp 
  100. as /pub/qnx-arch.ps at ftp.cse.ucsc.edu (128.114.134.19). The architecture 
  101. of the QNX microkernel is outlined, and its performance compared to the 
  102. SVR4 UNIX system ( a monolithic kernel ). This paper was recently presented 
  103. at the USENIX Microkernel conference held in Seattle, April 1992. In 
  104. addition, here is a recent press release:
  105.  
  106.  
  107.              Quantum Software Systems Announces QNX 4.1:
  108.  
  109. * Fault-Tolerant, Realtime, Distributed-Processing Capabilities Enhanced *
  110.  
  111. Quantum Software Systems, Ltd., developers of the QNX realtime operating 
  112. system, have released QNX 4.1, a POSIX-compliant OS based on microkernel 
  113. technology. QNX 4.1 started shipping in July, 1992, and features enhanced
  114. disk I/O, multiple redundant network links, and a 10% reduction in 
  115. context-switch time.
  116.  
  117. QNX 4.1 represents the culmination of over a decade of research and 
  118. experience with an installed base of over 200,000 microkernel-based, 
  119. message-passing operating systems world-wide. As a result, QNX delivers the 
  120. functionality of a modern OS architecture in a robust package proven for 
  121. mission-critical applications.
  122.  
  123. A TRUE Microkernel Architecture:
  124.  
  125. The QNX microkernel provides only the essential process scheduling and 
  126. interprocess communication (message passing) facilities from which all 
  127. the other services in the operating system are built. This approach results 
  128. in a 7 Kbyte microkernel with performance characteristics equivalent to a 
  129. realtime executive. Because server processes can be removed or added, QNX
  130. is scalable from small, ROM-based systems up to large, multiprocessor,
  131. distributed systems. Networking services are provided by extending the
  132. message-passing model to be network-transparent, such that communicating
  133. processes need not care whether they reside on the same or different nodes
  134. on the network. The server processes that provide the remainder of the system
  135. are implemented directly on these services, resulting in a fully distributed
  136. operating system.
  137.  
  138. Distributed Processing:
  139.  
  140. By virtue of its microkernel, message-passing architecture, QNX can
  141. take a network of computers and present them to applications as a "single 
  142. logical computer," regardless of how many physical computers are joined by 
  143. the network. Applications developed for this "single computer model" will run
  144. without changes even as the number of computers is scaled to suit the scope of
  145. the project.
  146.  
  147. This scalability is possible because QNX allows applications to be 
  148. initially written as a team of cooperating, communicating processes on a 
  149. single machine. When connected to a QNX network, those processes can then 
  150. be distributed to run throughout the network (without source-code changes), 
  151. while QNX provides network-transparent messaging between those processes. 
  152. Also, the transparency allows any process to use the resources of any other 
  153. computer in the network, regardless of whether those resources are local or 
  154. remote. With this functionality, computers can boot from the network as 
  155. diskless nodes, and then use any resource (disk, cpu, memory, I/O) on the 
  156. network. Mission-critical applications are aided by using the 
  157. network-distributed messaging to implement "hot standby" systems. Multiple 
  158. redundant network links between network nodes provide protection from 
  159. network failures as well.
  160.  
  161. QNX Networking Technology:
  162.  
  163. In order to deliver high-performance distributed processing, traditional 
  164. stack-based network protocols are used only when communicating with non-QNX 
  165. systems. For QNX-to-QNX transactions, a lightweight, QNX-specific network 
  166. protocol is used, delivering nearly the full bandwidth of the network to 
  167. communicating processes (980 Kbytes/second from process to process over 
  168. Ethernet). To the "outside world," the QNX LAN appears as a single, 
  169. multiprocessor entity even though it may be coexisting on the same physical 
  170. LAN as other LAN protocols (as is the case with TCP/IP). Conventional 
  171. protocols are used to communicate with non-QNX systems.
  172.  
  173. For applications that require even higher network throughput and/or 
  174. additional network reliability, the Network manager provides support for 
  175. multiple LAN links per node. Placing additional network links between 
  176. network nodes improves both the reliability and bandwidth of the LAN. 
  177. QNX automatically load-balances the network traffic over the LAN links 
  178. available for any particular network transaction. Nodes that heavily use
  179. the network can be equipped with additional, point-to-point network links
  180. to enhance throughput and move network traffic from the main LAN to
  181. dedicated links.
  182.  
  183. Embedded, Realtime Systems:
  184.  
  185. For ROM-based embedded applications, the modularity of the OS allows the 
  186. developer to omit unnecessary system processes. As a result, a diskless, 
  187. deviceless QNX system can be configured to occupy less than 100 Kbytes. 
  188. With its realtime performance, QNX becomes a viable alternative to realtime 
  189. executives, delivering the functionality of a POSIX runtime and development 
  190. environment, AND providing the sheer performance and small size of a realtime 
  191. executive. In a minimal system, only the microkernel, process manager, and 
  192. the system shared library need be present -- all other system processes are 
  193. optional and can be dynamically started and stopped at runtime, or 
  194. statically bound in at boot time for ROM-based applications. With the 
  195. addition of the small QNX networking module, an embedded system can become 
  196. a network-transparent extension of a larger QNX environment for distributed 
  197. applications, booting either from ROM or from the network.
  198.  
  199.  
  200. Specifications Overview:
  201.  
  202. QNX 4.1 Operating System
  203. ------------------------
  204.     - Upwards scalable for large, multiprocessor applications
  205.     - Downwards scalable for minimal ROM-based, embedded applications
  206.     - Integrated peer-to-peer distributed processing and networking
  207.     - POSIX-compliant process management
  208.     - POSIX-compliant file and device I/O subsystems
  209.     - Realtime, deterministic response rates
  210.     - Multitasking, multiuser support
  211.     - POSIX 1003.1
  212.     - POSIX 1003.2 Draft Standard utilities and shell
  213.     - POSIX 1003.4 Draft Standard Realtime Extensions
  214.     - Dynamically configurable and extensible at runtime
  215.     - ALL system processes are memory-protected from each other, while the
  216.         microkernel provides interprocess messaging to connect them
  217.     - 386/486 and 286 protected-mode OS
  218.     - Native 80x87 support or 80x87 emulation for reduced-cost embedded
  219.         systems
  220.     - Resource managers and device drivers are fully dynamic, and can be
  221.         started and stopped without rebooting or rebuilding the OS kernel
  222.     - Up to 255 concurrent processes per node
  223.  
  224. Microkernel
  225. -----------
  226.     - Microkernel occupies less than 7 Kbytes. On a 486, the entire kernel
  227.         and interrupt handlers could reside in the processor cache
  228.     - POSIX 1003.4 Realtime Draft Standard Process Scheduling
  229.         - supports 32 priority levels
  230.         - three scheduling algorithms: FIFO, round robin, and adaptive,
  231.             selectable per process
  232.         - fully preemptive, prioritized context switching
  233.         - servers can have their priority driven by the messages
  234.             they receive
  235.     - Only 12 kernel calls; other services are provided by optional processes
  236.     - Microkernel manages process scheduling and message passing only
  237.     - Microkernel message passing is fully preemptive
  238.  
  239. Process Manager
  240. ---------------
  241.     - POSIX 1003.4 Draft Standard Clocks & Timers
  242.         - Multiple timers per process
  243.         - Timers can be synchronous or asynchronous; one-shot or repetitive
  244.         - Timers specified in nanosecond resolution
  245.  
  246.     - Additional Features
  247.         - Supports full inheritance of the process environment, even
  248.             across the network for transparent distributed processing; this
  249.             includes open file descriptors, current working directory, and
  250.             environment variables
  251.         - Fully nested interrupts
  252.         - Flexible primitives for shared memory
  253.         - Built-in debug primitives for local and remote debugging from
  254.             anywhere on the network
  255.         - User-configurable system limits and resources
  256.         - Network-wide process-naming capability
  257.         - Interrupt handlers can be dynamically attached and removed
  258.  
  259. Network Manager
  260. ---------------
  261.     - Transparent access to all system resources across the network
  262.     - Modular network drivers
  263.     - Dual-redundant networking for mission-critical applications
  264.     - Redundant network links are automatically used for load balancing
  265.         of network traffic
  266.     - Full inheritance of process environment across the network
  267.     - Applications can send and receive raw network packets for "guest"
  268.         network protocol applications, e.g. TCP/IP
  269.     - Clarkson packet-driver interface
  270.     - Delivers full network bandwidth to the application layer
  271.  
  272. Device Manager
  273. --------------
  274.     - Fully buffered writes
  275.     - Input buffer per tty can be from 256 bytes to 64 Kbytes for high-speed
  276.         protocol work
  277.     - Input requests can return on timeout or on data-forwarding characters
  278.     - Provides asynchronous I/O primitives
  279.     - Allows even an 8 MHz 286 to handle 38.4 Kbaud without asserting
  280.         flow control
  281.  
  282. Filesystem Manager
  283. ------------------
  284.     - High-performance, extent-based filesystem
  285.     - Disk performance approaches raw platter speed
  286.     - Heuristic read-ahead & write-behind with elevator seeking
  287.     - Robust: all sensitive filesystem info is written through to disk
  288.     - On-disk "signatures" and special key information to allow
  289.         fast data recovery in the event of disk damage
  290.     - Full support for pipes and FIFOs (named pipes), both locally and
  291.         transparently across the network
  292.     - Applications can bypass the filesystem and talk directly
  293.         to device drivers for raw block I/O or "guest" filesystems
  294.     - 48-character filenames
  295.     - User-configurable filesystem limits and resources
  296.  
  297. DOS Filesystem Manager
  298. ----------------------
  299.     - Completely transparent DOS filesystem support
  300.     - DOS media appears as a normal component of the filesystem; any utility
  301.         can be used to manipulate files on the DOS media
  302.     - Supports floppies and all DOS partition types
  303.     - Full access across the network
  304.  
  305. DOS Emulation - Rundos
  306. ----------------------
  307.     - Allows DOS to run as a process under QNX
  308.     - DOS applications can use either the QNX network-distributed filesystem
  309.         or network-distributed DOS filesystems
  310.     - Supports Microsoft Windows 3.1, 3.0 and 2.1
  311.     - Supports Microsoft Windows in real mode and standard (protected)
  312.         mode. This is critical for supporting popular Windows applications
  313.         that do not run in real mode. Large, multi-megabyte Windows
  314.         applications can be easily run.
  315.  
  316. System Spooler
  317. --------------
  318.     - Suite of control utilities: lp, lpc, lpq, lprm, lpsrvr
  319.     - Multiple queues, filters, and output processes for mapping multiple
  320.         logical printers to multiple physical printers
  321.     - Network transparent
  322.  
  323. VEDIT Programmer's Editor
  324. -------------------------
  325.     - Multi-window, multi-file, CUA-compliant
  326.     - Mouse support in text mode and within QNX Windows
  327.     - Pulldown menus
  328.     - Integrated help system
  329.     - Columnar blocks
  330.     - 1000-level undo
  331.     - Regular expressions and "short form" pattern codes
  332.     - Small and fast
  333.     - Emulates vi, Brief, WordPerfect, and others
  334.     - Edits text and binary files of any size and line length
  335.     - Powerful macro programming language
  336.  
  337. Ditto - Remote Diagnostic Utility
  338. ---------------------------------
  339.     - Allows remote console viewing and interaction
  340.     - Operates over both network and dial-up links
  341.     - Shipped standard with development system
  342.  
  343. Development System
  344. ------------------
  345.     - Watcom ANSI C
  346.     - Linker, library manager, and disassembler
  347.     - Full-screen, mouse-driven symbolic debugger
  348.     - Full-screen, mouse-driven interactive profiler
  349.     - Symbolic dump file analysis with debugger
  350.     - Standard "make" utility does distributed, parallel compiles
  351.     - Over 500 ANSI, UNIX, POSIX, DOS, and QNX library routines
  352.  
  353. Graphical User Interface (currently in beta test)
  354. ---------------------------------------------------
  355.     - "Smart-object" windowing environment with 3D look and feel
  356.     - "OPEN LOOK" (tm) conforming user interface
  357.     - Full development system
  358.     - Interface editor for interactive application building
  359.     - Designed for demanding realtime applications
  360.     - Much lighter resource requirements than X Windows
  361.     - Supports network-distributed applications
  362.  
  363. Interrupt and process latency  (times in microseconds)
  364. ------------------------------------------------------
  365.  
  366.                      Interrupt       Context
  367.     Processor        latency*        switch
  368.     ------------     ---------       -------
  369.     33 Mhz 486           6              13
  370.     33 Mhz 386          11              30
  371.     16 Mhz 386SX        32              90
  372.      8 Mhz 286          65             175
  373.  
  374.   * With nested interrupts, this time represents the worst-case latency
  375.     for the highest priority interrupt. Interrupt priority is user-definable
  376.     and the interrupt latency for lower-priority interrupt sources
  377.     is defined by the user's application-specific interrupt handlers.
  378.     In addition, to guarantee minimal interrupt latency, QNX does not use
  379.     the Intel task-switch instructions.
  380.  
  381. Hardware Requirements
  382. ---------------------
  383.     - Platforms: IBM AT or PS/2 (ISA, EISA, MCA bus)
  384.                  Ampro, Gespac, STD, VME, and other platform support available
  385.     - CPU: 80286, 80386, or 80486 (8086/80186 OEM only)
  386.     - FPU: Optional
  387.     - Memory: 100K (minimal embedded system)
  388.               256K (embedded system with Device and Network Managers)
  389.               512K (OS with filesystem, device I/O, and networking)
  390.               2M  (development system)
  391.     - Disk space: none (target system)
  392.                   5M  (OS & utilities)
  393.                   4M  (development system)*
  394.         * for the combined OS and development system, 9M is required
  395.  
  396. Technical Support
  397. -----------------
  398.     - Hotline (phone and fax)
  399.     - Online access to Quics for conferencing, private mail, software
  400.         updates and freeware
  401.     - Newsletter
  402.     - Annual international user's conference
  403.     - Training and consulting services available
  404.  
  405. For more information, reply to this posting or contact:
  406.  
  407. Quantum Software Systems                      Quantum Software Systems
  408. 175 Terrence Matthews Cr.                     Westendstr.19 6000 Frankfurt
  409. Kanata, Ontario K2M 1W8                       am main 1
  410. Canada                                        Germany
  411. voice:  (613) 591-0931 x111 (voice)           voice: 49 69 97546156 x299
  412. fax:    (613) 591-3579      (fax)             fax:   49 69 97546110
  413. usenet: stuartr@qnx.com
  414.  
  415. ================================================================================
  416. ================================================================================
  417. Sung Han @ Commonwealth Edison Corp., Chicago, Illinois
  418. sung@ceco.ceco.com, or
  419. uunet!ceco.ceco.com!sung
  420.  
  421. -------
  422. Forwarded mail follows:
  423. From healy Sun Nov  1 23:07:34 1992
  424. Date: Sun, 1 Nov 92 23:06:44 -0800
  425. From: healy (Mike Healy)
  426. Message-Id: <9211020706.AA13495@cod.nosc.mil>
  427. To: hblim@Trantor.DSO.gov.SG
  428. Cc: healy
  429. Subject: Re::  Comparison of real-time OS's
  430. In-Reply-To: Your message of Sun Nov  1 22:17:17 1992
  431. Status: RO
  432.  
  433. -------
  434.  
  435. Here it is. Enjoy :-)
  436.  
  437. Mike Healy
  438.  
  439. healy@nosc.mil
  440.  
  441. ----------------------------------------8<--------Cut Here-----------------
  442.  
  443.  
  444. >From cwk@irrational.ssc.gov Mon Oct 26 11:55:38 1992
  445. Received: from trout.nosc.mil by cod.nosc.mil (5.65/1.34)
  446.     id AA12034; Mon, 26 Oct 92 11:55:32 -0800
  447. Received: from irrational.ssc.gov by trout.nosc.mil (5.59/1.27)
  448.     id AA09787; Mon, 26 Oct 92 11:55:20 PST
  449. Received: by irrational.ssc.gov (5.57/Ultrix3.0-C)
  450.     id AA09976; Mon, 26 Oct 92 13:54:57 -0600
  451. Date: Mon, 26 Oct 92 13:54:57 -0600
  452. From: cwk@irrational.ssc.gov (Carl Kalbfleisch)
  453. Message-Id: <9210261954.AA09976@irrational.ssc.gov>
  454. To: healy@trout.nosc.mil (Mike Healy)
  455. In-Reply-To: healy@nosc.mil's message of Fri, 23 Oct 1992 18:08:29 GM
  456. Subject: Comparison of real-time OS's
  457. Reply-To: cwk@irrational.ssc.gov
  458. Status: RO
  459.  
  460.  
  461. Here is some of the stuff I saved related to those discussions.  Some
  462. of the work was done here at the SSC.  The information on it is included as well.
  463.  
  464. Sincerely,
  465. Carl W. Kalbfleisch
  466.  
  467. -----------------------
  468.  
  469.  
  470. The paper "Overview of Real-Time Kernels at the Superconducting
  471. Super Collider Laboratory" is now available from the Lab Publications
  472. organization.  Copies should be obtained from them.  Please send
  473. a written or verbal request for publication SSCL-397 to:
  474.  
  475. Rebekah Hafley
  476. Report Co-ordinator
  477. SSC Laboratory
  478. 2550 Beckleymeade Avenue, MS-2002
  479. Dallas, Texas 75237
  480.  
  481. (214) 708-6049
  482. hafley@sscvx1.ssc.gov
  483.  
  484. The source code for the programs used in the paper are being
  485. distributed by the Energy Science and Technology Software Center.
  486. The KWIC title is Real-Time Benchmark Suite.  They can be contacted at
  487.  
  488. P.O. Box 1020
  489. Oak Ridge, TN 37831-1020
  490.  
  491. (615) 576-2606   VOICE
  492. (615) 576-2865   FAX
  493.  
  494.  
  495. Thanks for your interest in the paper.
  496.  
  497. -----------------------
  498.  
  499. BABYL OPTIONS:
  500. Version: 5
  501. Labels:
  502. Note:   This is the header of an rmail file.
  503. Note:   If you are seeing it in rmail,
  504. Note:    it means the file has no messages in it.
  505.  
  506. 0, unseen,,
  507. *** EOOH ***
  508. Path: sunova!linac!pacific.mps.ohio-state.edu!zaphod.mps.ohio-state.edu!mips!apple!motcsd!mcdcup!mcdchg!marcal!ceco!sung
  509. From: sung@ceco.ceco.com (Sung Han)
  510. Newsgroups: comp.realtime
  511. Subject: Summary of opinions and info on realtime kernels (long)
  512. Keywords: more subjective than factual
  513. Message-ID: <571@ceco.ceco.com>
  514. Date: 3 Jun 91 22:29:47 GMT
  515. Organization: Commonwealth Edison Co., Chicago, IL
  516. Lines: 795
  517.  
  518.  
  519. A While ago, I solicited responses from people on their experiences with three
  520. real-time kernels for 680x0-based processor boards, namely pSOS+, VRTX, and
  521. VxWorks.  And by request, I'm posting this summary of the responses I've
  522. received, along with my (humble) personal observations on these kernels. 
  523.  
  524. A word of caution: if you believe in objectivity, don't bother reading this
  525. article, because the material here is entirely subjective.
  526.  
  527.  
  528. /*---------------------------------------------------------------------------*/
  529. /*                                                                           */
  530. /*         ############ D I S C L A I M E R S #############                  */
  531. /*         ############ D I S C L A I M E R S #############                  */
  532. /*         ############ D I S C L A I M E R S #############                  */
  533. /*                                                                           */
  534. /*   1)  All opinions expressed here are solely those of the individual      */
  535. /*       respondents, and do not necessarily reflect those of their          */
  536. /*       employers.  This goes for myself also.                              */
  537. /*                                         */
  538. /*   2)    If there are factual errors in the following material, I will        */
  539. /*    welcome corrections; however, flames on subjective matters will be   */
  540. /*    ignored.                                                             */
  541. /*                                                                           */
  542. /*   3)    I have no affiliation with any of the vendors listed in this post.   */
  543. /*                                                                           */
  544. /*---------------------------------------------------------------------------*/
  545.  
  546.  
  547.  
  548. I also received performance data on the three kernels, plus LynxOS, courtesy
  549. of the people at the Superconducting Supercollider Lab in Texas.  I've inserted
  550. the results later in this article. 
  551.  
  552. In addition, I've received some responses that suggested alternatives to the
  553. three kernels that I requested info on.  These responses are listed later.
  554.  
  555. Here then are the responses, minus names.  I've edited parts of the responses
  556. for clarity (apologies to the authors).
  557.  
  558. And REMEMBER! please don't associate these responses with me, or my 
  559. organization - they're simply other peoples' opinions, which I'm reprinting.
  560.  
  561.  
  562.  
  563. -------------------------------------------------------------------------------
  564.  
  565. vxWorks is a solid product; it does what they (Wind River Systems)
  566. say. It has an especially strong communications layer, wide and deep
  567. and rich. Three years ago I compared vxWorks and VRTX and chose
  568. vxWorks because of its superior networking. A colleague conducted a
  569. similar procurement within the last year and told me that vxWorks is
  570. still superior to VRTX on communications. This comm support is
  571. *essential* if you intend to build a modern distributed RT system. If
  572. you are building a standalone embedded application the vxWorks RT
  573. kernel is fine, arguably even excellent, but there are a number of
  574. other RT kernels available that would probably do about as well
  575. overall. *All* RT applications here are distributed, so vxWorks is
  576. being chosen again and again...
  577.  
  578. -------------------------------------------------------------------------------
  579.  
  580. Hi.
  581.  
  582. I went through a similar process about one year ago. I considered pSOS+,
  583. VRTX, VxWorks, and a message-passing OS called Unison.
  584. I ended up favoring VxWorks by a large margin. My main reasons:
  585.  
  586. 1) Wind River was very quick and efficient when I asked for a demo version
  587.   (30 days etc.) The others just seemed confused.
  588.  
  589. 2) VxWorks is the most complete package. The kernel is just a small part of
  590.    the larger system, which Wind River realizes more than anybody. Things
  591.    like the ram disk driver and run-time loader are really great for my 
  592.    application.
  593.  
  594. 3) VxWorks networking is very solid, and certainly more mature than any
  595.    competitor's. Their I/O system in general is very well set up 
  596.    (network, serial, and RT-11 (ram-disk) devices all mapped into the file
  597.    name space).
  598.  
  599. 4) Building different systems, boot PROMS, etc. is well planned out and
  600.    relatively easy. This is paying off now that we are moving to stand-alone
  601.    oepration.
  602.  
  603. Until version 5.0, VxWorks did not really have "source-level" debugging,
  604. just "symbolic" (assembly-level) debugging, but this should be improved with
  605. VxGDB in 5.0.
  606.  
  607. Good luck,
  608.  
  609. -------------------------------------------------------------------------------
  610.  
  611. I haven't used any other commercial real-time OS., but I'm quite happy
  612. with VxWorks.  Using the Unix development environment and downloading
  613. over ethernet is quite nice.  We went thru an unpleasnt time where the
  614. remote source level debugger wouldn't work with operating system
  615. updates, and we had to get a new version from Sun Consulting.  Now that
  616. VxWorks uses gdb as a base, everthing seems to work quite well.
  617. We tie our real-time system to workstations using Remote Procedure Calls and
  618. sockets, which seem to work just as advertised.
  619.  
  620. The technical support is reasonably good, and the product seems fairly bug
  621. free.
  622.  
  623. -------------------------------------------------------------------------------
  624.  
  625. I have been working with VRTX32 (without Velocity) for a little over two years
  626. now.  I have found it to be reliable and reasonably well documented; the only
  627. bug I ever found in it was fixed in the latest release.
  628.  
  629. On balance, I would say we have had good luck with VRTX, but I haven't had
  630. much experience with other Real Time OS's so I can't say whether the others
  631. are as easy to use or not.
  632.  
  633. -------------------------------------------------------------------------------
  634.  
  635. I have been using VRTX/ Velocity for the past 2 years. The RTSource
  636. debugger is very good, but the rest of their stuff I have found to be
  637. "buggy" (esp. the TCP/IP package) and difficult to install. Ready
  638. Systems' support is disgusting, unless you get friendly with a good FAE
  639. (who are meant to do pre-sales only).
  640.  
  641. -------------------------------------------------------------------------------
  642.  
  643. We have recently done an evaluation of the same products.  We got on-sight
  644. demos of each, then got evaluation copies of each system except Uniflex.
  645. Uniflex is a Unix "work-a-like".  I would think it should be compared with
  646. LynxOS.  The other three are considered hard real time.
  647.  
  648. Without making any criticism's about the systems, you will find that they
  649. (pSOS, VRTX32, VxWorks) all provide a fast real time kernel, UNIX compatible
  650. sockets, and a standard ANSI run time library.  All are downloadable, and
  651. ROM-able systems.  Development is done on a host system with code cross
  652. compiled for the target and downloaded.  VRTX and VxWorks have a user
  653. shell that can be used to invoke functions for debugging.  In addition,
  654. VRTX and VxWorks provide NFS facilities to the target.
  655.  
  656. All the systems could be hosted on SUN.  pSOS+ could also be hosted on HP.
  657. Its debugger uses X Window which is nice for exporting the display to any
  658. workstation on your network.  The XRAY+ debugger is very useful.
  659.  
  660. We had three people on the evaluation.  I actually worked primarily with the
  661. pSOS+ software.  Incidentally, I'll tell you up front that pSOS+ is the one we
  662. choose.  The decision was based on the fact that pSOS+ is hosted on more
  663. workstations, and targeted on more targets than the others.  
  664.  
  665. The debugger seems a bit more sophisticated.  For instance, it is a board
  666. level debugger (as is with VRTX), that can break on any task in the system.
  667. VxWorks bebugs one task at a time.  When it breaks, the others continue to
  668. run.  Come to think of it, that may also be the case with VRTX.
  669.  
  670. The SCG interface (on HP) is X Window.  We have successfully exported this
  671. screen to other X Window displays.  I.E., The debugger runs on one machine
  672. and displays on an X terminal.  This is useful in the following context.
  673. We have a number of HP's to run the development software.  Then, we can
  674. actually log into those machines and run the display to another terminal.
  675. This allows more users.
  676.  
  677. VxWorks is probably a bit easier to start up since it comes installed (as
  678. I understand it).  pSOS+ and VRTX each took some work from the factory to
  679. understand how to use what you are given.
  680.  
  681. I think pSOS+ has the best documentation, then probably VRTX and VxWorks.
  682. Of course, I can't say that I have spent much time with the latter two.
  683.  
  684. >From the performance tests that we ran, they all seem comparable.  We devised
  685. a series of tests, and implemented it accross the three platforms.  Then
  686. measurements were made using the same hardware in each case.
  687.  
  688.  
  689.  
  690. ###############################################################################
  691.  
  692. /*
  693.  *
  694.  * The following responses were pointers to other real-time systems:
  695.  *
  696.  */
  697.  
  698. ###############################################################################
  699.  
  700.  
  701. -------------------------------------------------------------------------------
  702.  
  703. You've mentioned VRTX, pSOS, and VxWorks -- What about PDOS?  
  704. You are missing a great operating system that provides full native and
  705. cross development, posix file system, networking, tape and hard
  706. disk support, and good customer support.  PDOS can also claim excellent
  707. real-time response with 0 interrupt latency on high level interrupts.
  708.  
  709. [PDOS is marketed by Eyring; contact either the author of this response, at
  710.  
  711.     rick@Eyring.COM  uunet!lanai!rick
  712.     
  713.     or try the following person:
  714.  
  715.     Walt C. Jones
  716.     Director of Marketing & Sales
  717.     Eyring
  718.     1455 West 820 North
  719.     Provo, Utah 84601
  720.     (801) 375-2434
  721.     
  722. S.H.]
  723.  
  724. -------------------------------------------------------------------------------
  725.  
  726. I would suggest using OS-9 for realtime application on 680x0 CPU's. It is
  727. availible from MicroWare. There are ports of it for several variants around
  728. too. (such as Signetics 68070 - a suped up 68000 clone)(also, for Mac's, 
  729. Amiga's, and Atari ST's, as well as some 680x0 boxes designed just for OS-9)
  730.  
  731. [I saw a demo of OS/9 on a new MVME165/Motorola 68040 port, and it looked quite
  732.  nice actually.  It provides all necessary development tools on the target
  733.  system, including a C compiler, source debugger, etc., along with a full
  734.  Unix-like file system.  Plus there's a pretty good OS-9 user's group too.
  735.  
  736.  Contact Microware at the following address:
  737.  
  738.      MicroWare Systems Corporation
  739.      1900 N.W. 114th Street
  740.      Des Moines, Iowa 50322
  741.      (515) 224-1929
  742.  
  743. S.H.]
  744.  
  745. -------------------------------------------------------------------------------
  746.  
  747. You should also check out Precise/MPX from:
  748.  
  749.               Precise Software Technologies Inc
  750.               Suite 308, The Mallorn Centre
  751.               301 Moodie Dr.
  752.               NEPEAN, Ontario Canada
  753.               K2H 9C4
  754.  
  755.               Tel:    (613) 596-2251
  756.               Fax:    (613) 596-6713
  757.  
  758. Precise/MPX is a commercial product based on the Harmony
  759. Realtime, Multitasking, Multiprocessing Operating System, an
  760. ongoing (8 years) research project at the National Research
  761. Council of Canada. Precise/MPX has been ported to Intel 80x86 and
  762. Motorola 680x0 and 88K microprocessor families. The host
  763. development tools are available on the PC AT, Sun 3, Data General
  764. Aviion, Apple Macintosh and others.
  765.  
  766. I can supply technical details about Harmony, via email or
  767. regular mail (we have a Harmony bibliography, technical
  768. description and short manual set available for free). For
  769. questions of availability for particular host/target
  770. configurations, pricing and licensing contact Jeremy James,
  771. President of Precise Software at the above address or phone
  772. number.
  773.  
  774. Hope this helps.
  775.  
  776. [Author of response is:
  777.     Stephen MacKay  <mackay@iit.nrc.ca>
  778.     Harmony Research Project
  779.     Software Engineering Lab.
  780.     Inst. for Information Technology
  781.     National Research Council
  782. S.H.]
  783.  
  784. -------------------------------------------------------------------------------
  785.  
  786. I'm a bit biased since I work on the following product, but I thought you might
  787. like to know about REAL/IX:
  788.  
  789. Modcomp's REAL/IX is a fully preemtive, low-latency, realtime UNIX operating
  790. system (System V.3).  It conforms to AT&T's System V Interface Definition
  791. (SVID) and passes the System V Verification Suite (SVVS).  It runs on a 68030
  792. based VME system (with SCSI)  (Motorola 147 & 141 cards).  Features include:
  793.  
  794. o FULLY Preemptive Kernel (no pre-emption windows)
  795. o FAST context switch time (Best Case context switch time: approx. 30 microsec)
  796. o Directly Connected Interrupts
  797. o Loosely Connected Interrupts
  798. o Low Interrupt Latency (Maximum Interrupt latency: approx. 100 microsec)
  799. o Event Driven Priority Scheduler
  800. o Flexible Task Control
  801. o Shared Memory Facilities
  802. o Preallocation of Resources
  803. o Process lock in Memory
  804. o High Performance File System
  805. o Asynchronous I/O
  806. o Priority Based I/O
  807. o Direct I/O
  808. o High Resolution Timers
  809. o Fast Interprocess Communications
  810. o Fast Process Synchronization
  811. o Common Event Notification
  812. o User Extensible System Services and Interrupt Handlers
  813.  
  814. There's also a book about REAL/IX:
  815.  
  816. REAL-TIME UNIX SYSTEMS
  817. Design and Application Guide
  818. Furht, Grostick, Gluch, Rabbat, Parker, McRoberts
  819. Kluwer Academic Publishers
  820.  
  821. It describes REAL/IX in detail, and even includes two case studies.
  822.  
  823. [If you'd like to inquire about REAL/IX, contact the author of this response 
  824.  (Steve R. Pietrowicz) at:
  825.  
  826.      uunet!modcomp!rlxdev!srp
  827.  or  ...!uunet!modcomp!srp
  828.  
  829. S.H.]
  830.  
  831. -------------------------------------------------------------------------------
  832.  
  833. LynxOS is UNIX System V (with BSD extensions).  LynxOS is realtime.  It
  834. contains no ATT code.  It is POSIX compliant.  It was selected as the
  835. runtime system for the NASA space station.  You can buy it to run in an
  836. embedded system, e.g., a Motorola MVME 147 board.  Or you can buy it to do
  837. C development, e.g., on a 386 or 486 PC.  Or you can do both, e.g., do your
  838. development on the 147 board as well as run your real-time application on
  839. the 147 board.  I believe it supports everything you asked for, and more.
  840. You should call them and find out.  They're hot!
  841.  
  842. [Actually, as I understand it, Lynx may not be appropriate for 'hard' realtime
  843.  systems, as the Unix compatibility exacts a performance penalty.  The 
  844.  performance results shown later support this.  However, this is not meant to
  845.  knock LynxOS; it still looks like a fine system, if Unix is what you'd like 
  846.  in a real-time system.  You might also look at Uniflex, described later.
  847.  
  848.  Lynx's address is:
  849.  
  850.     Lynx Real-Time Systems, Inc.
  851.     16780 Lark Ave
  852.     Los Angeles, CA 95030
  853.     (408) 354-7770
  854.     
  855. S.H.]
  856.  
  857. -------------------------------------------------------------------------------
  858.  
  859. I like PolyFORTH. 
  860. [this was the entire text of the message - I don't know much about this
  861. particular system - S.H.]
  862.  
  863. -------------------------------------------------------------------------------
  864.  
  865. [Another alternative may be Uniflex, a Unix-like hybrid system.  It manages two
  866. parallel lists of tasks - a realtime list, and a Unix list.  The realtime
  867. tasks always have priority over the Unix tasks.  Most of the development tools
  868. (compiler, etc.) reside on the target, and are variants of GNU tools.  That's
  869. about all I know about Uniflex - their address is:
  870.  
  871.     UniFLEX Computing Ltd.
  872.     111 Providence Road
  873.     Chapel Hill, NC 27514
  874.     (919) 493-1451
  875.     sales: (800) 486-1000
  876.  
  877. S.H.]
  878.  
  879.  
  880. ###############################################################################
  881.  
  882.  
  883. As I mentioned, the people at the SSC Project ran a series of performance tests
  884. on pSOS+, VRTX, and VxWorks, along with LynxOs.  I've printed some excerpts
  885. below.  Thanks to Mike Allen and Carl Kalbfleich for sharing this data.
  886.  
  887. [taken from the paper "Overview of Real-Time Kernels at the Superconducting
  888. Super Collider Laboratory"]
  889. [The platform used for the tests was an MVME147S-1 VME-based, single board
  890. computer with a 25MHz 68030 cpu]
  891.  
  892.  
  893.     Throughput measurements are tabulated in Table 1 and what follows is a briefdescription of each test as it appears in the table.
  894.     
  895.   1) Create/Delete Task: This test measure the time it takes to create and
  896.      delete a task.  A task deletes itself as soon as it is created.  the 
  897.      created task has a higher priority than its creator, so the time quoted
  898.      actually includes a create, start, delete, and two context switches.
  899.   2) Ping Suspend/Resume Task: A low priority task resumes a suspended high
  900.      priority task.  The high priority task immediately suspends itself.  This
  901.      measurement includes two task context switches and the time it takes to
  902.      suspend and resume a task.  There is no facility to suspend and resume a
  903.      task on LynxOS apart from signals.  So this test was not performed under
  904.      LynxOs.
  905.   3) Suspend/Resume Task: This is identical to the previous test except that a
  906.      high priority task suspends and resumes a suspended lower priority task so
  907.      that there is no context switching.
  908.   4) Ping Semaphore: Two tasks of the same priority communicate with each other 
  909.      through semaphores.  Task A creates a semaphore, gets the semaphore then
  910.      creates Task B which blocks when it attempts to get the semaphore.  Task A
  911.      then releases the semaphore which immediately unblocks Task B.  Task A then
  912.      attempts to get the semaphore which causes it to block until Task B 
  913.      releases it.  The two tasks then alternate ownership of the semaphore
  914.      thereby causing conbtext switches.  In our version of VxWorks, two separate
  915.      semaphores are required because round-robin scheduling is not supported.
  916.      [this was version 4.0.2 of VxWorks; round-robin mode, whileit may be
  917.      possible in version 5.0.1, is still difficult to implement - S.H.]
  918.   5) Getting/Releasing Semaphore: The time reporterd includes the time it takes
  919.      to get and immediately release a semaphore within the same task context.
  920.   6) Queue Fill, Drain, Fill Urgent:  We first time how long it takes to fill
  921.      a queue with messages and then we tim how long it takes to drain the queue.
  922.      Finally we repeat the two tests with priority messages i.e. messages are
  923.      sent to the head of the queue.  VxWorks 4.0.2 does not support message 
  924.      queues but ring buffers with semaphores gives the functionality of a 
  925.      message queue. [VxWorks 5.0 now has message queues - S.H.]  LynxOS uses
  926.      SystV message queues with priority messages handled differently.
  927.   7) Queue Fill/Drain: A single task sends a message to a queue which the task
  928.      immediately receives on the same queue.  There is no task switch nor are 
  929.      there any pending queue operations.  The next test consists of two tasks
  930.      with two queues.  The two tasks alternate execution by sending to the
  931.      queue that the other is blocked waiting to receive from.  The total time
  932.      now includes context switches, queue pends and sending plus receiving a
  933.      message.
  934.   8) Allocating/Deallocating Memory: We measure the time it takes to allocate a 
  935.      number of buffers from a memory partition and the time it takes to return
  936.      those buffers to the partition.
  937.      
  938.   9) Real-Time Response: We quantify the real-time response of the kernels by
  939.      measuring the interrupt service response and the interrupt task response.
  940.      The interrupt service response is the time it takes to execute the first
  941.      instruction of an interrupt service routine (ISR) from when the interrupt
  942.      occurrs.  The Task response is the time it takes for a user task to resume 
  943.      excution from when the interrupt occurrs.
  944.  
  945.  
  946. [ Note: there are two entries in the below table for pSOS+.  This is because
  947. the pSOS+ programming interface comes in two forms: through a C Interface
  948. Library (CILxxx.s), and through a Kernel Jump Module (KJMxxx.s).  Without going 
  949. into specifics, suffice it to say that the standard pSOS+ distribution includes 
  950. the KJM package, and this was the original configuration tested.   The CIL
  951. package is faster, but it is not yet available, although I understand that SCG
  952. will come out with it very soon. - S.H.]   
  953.   
  954.  
  955. [Each column lists the average time for each test, in microseconds.  The
  956. asterisk(*) marks the fastest kernel for each test.  Note that the message
  957. queue times were fastest with VxWorks, but remember that these were not TRUE
  958. message queues that were tested for VxWorks - S.H.]
  959.  
  960.                              pSOS+    pSOS+    VRTX32     LynxOS    VxWorks  
  961.                              CILxxx   KJMxxx
  962. Create/Delete Task           ---      591       371*       ---       1423
  963. Ping Suspend                 114*     128       142        ---        177
  964. Suspend Resume                71       83        87        ---         69*
  965. Ping Semaphore               193*     219       239        397        232
  966. Get/Release Semaphore         55       63        55         74         33*
  967. Queue Fill                    38       46        26        140         20*
  968. Queue Drain                   36       43        29        132         22*
  969. Queue Fill Urgent             38       47        27*       170         72
  970. Queue Fill/Drain              76       91        59        278         44*
  971. Alternate Qs Fill/Drain      210*     238       252        867        371
  972. Alloc Memory                  29       40        27*        57         68
  973. Dealloc Memory                29*      38        33         20         83
  974.  
  975. Interrupt Service Response   ---        6         6         13          6
  976. Interrupt Task Response      ---      163       169        175        125
  977.  
  978.  
  979.  
  980. [the following displays the range of times for the above tests.  Originally
  981. this data was in the same chart as above, but I've split them because of space
  982. restriuctions.  Anyway, they might provide an indication of the determinism of
  983. these systems.  pSOS+ with the CIL interface is not included here - S.H.]
  984.  
  985.                         pSOS+(KJM)      VRTX32        LynxOS        VxWorks  
  986.                         min/max/avg   min/max/avg   min/max/avg   min/max/avg
  987. Create/Delete Task      540/600/591   370/380/371       ---      1378/1446/1423
  988. Ping Suspend            120/130/128   140/150/142       ---       174/182/177
  989. Suspend Resume           80/ 90/ 83    80/ 90/ 87       ---        68/ 74/ 69
  990. Ping Semaphore          210/220/219   230/250/239   390/400/397   228/234/232
  991. Get/Release Semaphore    63/ 64/ 63    55/ 56/ 55    73/ 76/ 74    33/ 34/ 33
  992. Queue Fill               40/ 50/ 46    20/ 30/ 26   136/146/140    19/ 21/ 20
  993. Queue Drain              40/ 50/ 43    20/ 40/ 29   126/136/132    21/ 25/ 22
  994. Queue Fill Urgent        40/ 50/ 47    20/ 30/ 27   166/175/170    70/ 76/ 72
  995. Queue Fill/Drain         90/ 93/ 91    50/ 70/ 59   280/290/278    43/ 48/ 44
  996. Alt., Qs Fill/Drain     230/240/238   250/260/252   860/900/867   366/376/371
  997. Alloc Memory             40/ 40/ 40    20/ 30/ 27    34/ 79/ 57    67/ 71/ 68
  998. Dealloc Memory           30/ 40/ 38    30/ 40/ 33    20/ 21/ 20    82/ 86 /83
  999.  
  1000. Interr. Svc Response      6/  6/ 6      6/  6/  6    13/ 88/ 13     6/ 56/ 6
  1001. Interr. Task Response   100/169/163   179/343/169   163/262/175   119/319/125
  1002.  
  1003.  
  1004.  
  1005. ###############################################################################
  1006.  
  1007. Now for my personal observations on these kernels:
  1008.  
  1009. I evaluated pSOS+, VRTX Velocity, and VxWorks 5.0 each for about 30 days.  I
  1010. was mainly interested in the suitability of these systems for a networked
  1011. realtime system.  What I found was that while these systems were remarkably
  1012. similar, each one still had a character all its own.  I will therefore try to
  1013. point out the differences among them, instead of dwelling on the similarities.
  1014.  
  1015. Each system that I got for evaluation consisted of at least the following:
  1016.  
  1017.     1) a realtime kernel
  1018.     2) a board-level monitor/debugger
  1019.     3) a source-level remote debugger
  1020.     4) a networking module
  1021.     5) a compiler package
  1022.  
  1023. VRTX Velocity and VxWorks also include a target shell.
  1024. Notes on the above systems follow.
  1025.  
  1026.  
  1027. pSOS+:
  1028. ------
  1029.  
  1030.     pSOS+ is the follow-on to the venerable pSOS kernel, from Software
  1031. Components Group.  The review package included the pSOS+ kernel, pROBE+ 
  1032. board-level monitor/debugger, and the pNA+ Network manager.  Also included was
  1033. a compiler package from Microtec, and XRAY+, which is a joint Microtec/SCG
  1034. product.
  1035.  
  1036.     The pSOS+ kernel is highly flexible, and its feature set is competitive
  1037. with the others.  However, the approach used to interface pSOS+ components to
  1038. user code is different from the other systems.  While the other systems link
  1039. the user code with the system code to resolve referneces, all of SCG's
  1040. components are called through software traps, which vector directly into the
  1041. pSOS+ kernel.  The kernel then determines which pSOS+ component to call to
  1042. service the request.  And while this provides position independence and
  1043. eliminates the need to link user code with pSOS+ routines, it also creates some 
  1044. overhead, since every call to a pSOS+ system component means a service trap.
  1045. This is reflected in the performance figures provided later.  Note, however,
  1046. that this applies to the KJMxxx.s (Kernel Jump Module) interface; an 
  1047. alternative interface, CILxxx.s (C Interface Library), apparently provides a
  1048. better way of calling pSOS+ system modules, and provided a better showing in
  1049. the same tests.
  1050.  
  1051.     The pSOS+ kernel's messaging facility allows up to four long words of user
  1052. data to be passed between tasks.  VRTX only allows a single word, which usually
  1053. means that memory has to be allocated in order to send any meaningful data
  1054. through messages (the length of VxWorks messages is unlimited).  Also, event
  1055. flags in pSOS+ can be directed either at a specific task, or be global.  Events 
  1056. in VRTX are always global, and VxWorks doies not have event flags.  pSOS+ also
  1057. allows each task to have an asynchronous signal handler.  This signal facility
  1058. is not entirely like Unix signals however, as the signal handler will not be
  1059. called until the user task makes a pSOS+ system call.
  1060.  
  1061.     The pNA+ networking package worked flawlessly, providing full Berkely 4.3 
  1062. sockets support.  The competing network packages provide similar functionality,
  1063. but only pNA+ has a socket-sharing mechanism, which can be convenient if
  1064. you're dealing with numerous independent connections on a single board.
  1065.  
  1066.     The XRAY+ source level debugger proved to be a versatile, reliable
  1067. debugger.  Its user interface was a bit awkward, however.  The debugging format
  1068. used is IEEE695; this format is fully supported by the accompanied MRI compiler
  1069. tools package, but I've heard of compatibility problems in using IEEE695 output
  1070. from other compilers.
  1071.  
  1072.     SCG has just announced the pNFS package.  This provides NFS and RPC support,
  1073. and is available in conjunction with their pHILE+ file management system.
  1074.  
  1075.     SCG also offers pSOS+/M, which is a multiprocessor version of the pSOS+
  1076. kernel.  It provides (nearly) seamless usage of standard pSOS+ calls over
  1077. multiple processors connected through various types of media, including
  1078. backplane and ethernet.
  1079.  
  1080.  
  1081. VRTX Velocity:
  1082. -------------- 
  1083.  
  1084.     VRTX Velocity is a combination of target software components and host-based
  1085. tools.  The target software evaluated consisted of the VRTX32 kernel, RTScope
  1086. board-level monitor/debugger, TNX TCP/IP Network manager, RTL runtime C
  1087. library, and RTShell target shell.  The host-based tools included the RTSource
  1088. remote source debugger, Hyperlink ethernet downloader/command center, and an
  1089. Oasys Compiler tools package.  The host side of the Velocity package runs only
  1090. on Sun3/Sun4 workstations in SunView.
  1091.  
  1092.     VRTX Velocity offers two approaches to development.  One is where tftp is
  1093. used to load the system software and RTshell at boot time using TFTP.  The
  1094. shell then can be used to load software onto the board off a network through
  1095. NFS.  An incremental linking loader is provided, which accepts standard Unix
  1096. format relocatable object files.  The shell allows funtions to be called, and
  1097. can evaluate most C expressions.  The alternative approach is to manually
  1098. download system software to the target board using Hyperlink, an intelligent
  1099. downloading program.  Hyperlink can also be used to launch other Velocity
  1100. programs, such as RTScope and RTSource.
  1101.  
  1102.     The VRTX32 kernel provides a unique approach to identifying tasks.  Each
  1103. task has a numeric ID, from 0..255.  They cannot have names, which are allowed
  1104. in pSOS+ and VxWorks.  If more tasks are needed, there can be multiple tasks
  1105. with an ID of zero, up to 16K of them.  These tasks are referred to as
  1106. 'anonymous' tasks, and they usually cannot be directly referenced by other
  1107. tasks.  For instance, they cannot be deleted by ID, since an ID of zero used in 
  1108. system calls usually refers to the caller.  Fortunately, VRTX32 allows tasks to 
  1109. be referenced by priority groups, so this is one way to deal with anonymous
  1110. tasks.
  1111.     
  1112.     The VRTX kernel has some features which are lacking in the other kernels;
  1113. specifically, it provides character I/O operations at the kernel level, and it
  1114. provides mailboxes, which are similar to single-slot message queues.  However,
  1115. it is also lacking in other areas - for instance, there are no built-in time/
  1116. calendar functions, aside from a tick counter (this is also true with VxWorks);
  1117. in addition, when creating a new task, there is no easy way to pass parameters
  1118. to it.  Also, creation of tasks is always a single-step process; i.e., create
  1119. the task, and if its priority is higher than the caller, pre-empt the caller
  1120. and run the task.  This is different from pSOS+, where task creation is
  1121. a two-step process - i.e., create, then activate.  VxWorks allows the use of
  1122. either approach.  Also, there is the odd restriction that once a message queue
  1123. is created, it cannot be deleted.  Ready Systems claims that this is to
  1124. prevent fragmentation of system memory.  Finally, unlike pSOS+ and VxWorks,
  1125. VRTX32 lacks asynchronous signal handling.
  1126.  
  1127.     The RTScope board level monitor/debugger is highly flexible, and provides
  1128. two modes of operation: command mode and task mode.  In command mode, all user
  1129. tasks are halted, interrupts are disabled, and the standard suite of memory
  1130. operations and task control commands can be used.  In tasking mode, RTScope
  1131. runs as a task, alongside user tasks, with interrupts enabled.  The system can
  1132. therefore be monitored in action without impeding on user tasks.  Note that 
  1133. commands which infringe on normal system operations cannot be used in this mode 
  1134. - e.g., memory patching, task suspension, task creation, etc., are not
  1135. available.  Also, RTScope, unlike pROBE+, will not automatically halt all tasks 
  1136. if a single task crashes (usually).  The other user tasks will continue to run
  1137. normally, if possible (although whether this is a safe practice may be 
  1138. questionable).
  1139.  
  1140.     RTSource is a good, user-friendly source debugger.  It was easier to use
  1141. than XRAY+; however, reliability seemed to be inferior, as it would more easily 
  1142. get lost in the code.  RTSource also uses a proprietary debugging format, so
  1143. the Oasys compiler tools have to be used.  Ready Systems currently supports
  1144. version 1.8.3 of the compiler and rev 5.07 of the assembler/linker; however,
  1145. we use the Oasys tools in house here, and we're currently up to revs 1.8.5 and
  1146. 5.11, so Ready Systems is several months behind in their support of the latest
  1147. Oasys revisions.
  1148.  
  1149.     Also available from Ready Systems is MPV, a multiprocessing version of the
  1150. VRTX kernel, which is similar in approach to pSOS+/M.  Also available is the
  1151. IFX manager, along with NFS and RPC support.  In addition, unique to Ready
  1152. Systems is the availability of VRTX Designer, which is a CASE tool for real-time
  1153. system design.  It uses known VRTX timing data to project the performance of
  1154. user designs and spot potential bottlenecks.  These products were not evaluated.
  1155.  
  1156.     VRTX Velocity provides automated scripts to build eproms, applications, or
  1157. even makefiles.  The scripts are interactive, and the user chooses from a list
  1158. what components he/she wants to include in the target.  The appropriate
  1159. makefile is then created that builds both the VRTX system software and the
  1160. user application.
  1161.  
  1162.     Installing VRTX Velocity is a mighty task, especially for the beginner.  It
  1163. required a kernel mod on the host workstation, and I had to spend some time
  1164. with the Field Application Engineer to get parts of Velocity working.  In
  1165. addition, RTShell doesn't like workstations that don't have a local disk
  1166. attached.  But aside form these problems, VRTX Velocity is a sophistaced,
  1167. highly integrated development environment.
  1168.  
  1169.  
  1170. VxWorks:
  1171. --------
  1172.  
  1173.     The current version of VxWorks is 5.0.1a, from Wind River Systems.  It
  1174. includes the WIND kernel, a target shell, a TCP/IP networking manager, an
  1175. extensive C runtime library, and the GNU compiler toolkit.  The GNU tools
  1176. include the C compiler, assembler, linker, and VxGDB, which is the GNU
  1177. debugger modified by WRS to work in the realtime environement.
  1178.  
  1179.     VxWorks, like VRTX, normally boots by loading its system code off the
  1180. network.  Whereas VRTX uses TFTP to do this, VxWorks uses rsh on a host 
  1181. workstation.
  1182.  
  1183.     As an interesting note, prior to version 4.0, VxWorks utilized the VRTX
  1184. kernel from Ready Systems.  Eventually however, WRS packaged their own WIND 
  1185. kernel in VxWorks.
  1186.     
  1187.     The WIND kernel provides comparable functionality to the other kernels.
  1188. However, it lacks true roundrobin scheduling, and event flags are absent.  In
  1189. addition, the WIND kernel does not offer any real-time clock functions, only a
  1190. tick counter.  On the other hand, its semaphore support is excellent - binary, 
  1191. counting, and mutual exclusion semaphores (with priority inversion) are
  1192. included.  Both pSOS+ and VRTX offer only counting semaphores.  Likewise,
  1193. pipes are absent in both pSOS+ and VRTX32, but they're present in VxWorks. 
  1194. VxWorks also features Unix-style signals, which are truly asynchronous - i.e.,
  1195. a task will stop whatever it's doing at the moment, and service the signal.
  1196.  
  1197.     WIND insists on routing interrupt routines through its kernel; however,
  1198. this can be bypassed.  Handling interrupts yourself should not be a problem
  1199. with any of these kernels; however, VxWorks tries to convince the user to let
  1200. it handle interrupts, and thus provides several interrupt-related commands in
  1201. the kernel.
  1202.  
  1203.     Unlike pSOS+ and VRTX, there is no separate mulitprocessing version of the
  1204. WIND kernel.  However, WRS does provide a loosely coupled backplane protocol
  1205. where boards on the same bus can communicate via a socket interface.
  1206.  
  1207.    VxWorks does not have a true board-level monitor/debugger like pSOS+ or
  1208. RTScope.  It does however have a target shell that is a cross between the
  1209. board level debugger and the RTShell type of shell.  It provides an incremental
  1210. linking loader that accepts Unix object files, and it provides all of the
  1211. memory & task oriented examine/modify commands provided in the board debuggers.
  1212. In addition, it also offers extensive symbolic disassembly and  debugging
  1213. facilities.
  1214.  
  1215.     The level of networking support provided by VxWorks is excellent.  NFS and
  1216. RPC support is of course included; in addition, rsh, telnet, and ftp are
  1217. available to and from the target.
  1218.  
  1219.     Unique to VxWorks is the availability of a source license.  You may have
  1220. already heard about the person who posted in this group on how he ported
  1221. VxWorks over to SunOS.
  1222.  
  1223.     The VxGDB debugger has its origins in the Unix GNU GDB debugger.  People
  1224. have mixed opinions about GNU tools, but I found VxGDB to be a serviceable, if
  1225. somewhat unremarkable debugger.  It's not a windowed, SunView application like
  1226. XRAY+ and RTSource are, so it lacks their flash and glamour.  In addition, it's 
  1227. more of a single threaded debugger, so it's more difficult to use when
  1228. debugging several tasks in one system.
  1229.  
  1230.     One area in which VxWorks suffers seriously is documentation.  The basic
  1231. documentation is a single programmer's guide, which is very skimpy and does not 
  1232. offer enough solid information to build and use a VxWorks based system.  The
  1233. necessary functions are listed, but without parameters or error codes.  WRS
  1234. does also provide Unix-style online man pages; however, these are no better
  1235. than their Unix counterparts, and provide only a minimum of information.  After 
  1236. dealing with the excellent documentation that came with pSOS+ and VRTX
  1237. Velocity, the VxWorks documentation was a real disappointment.
  1238.  
  1239.  
  1240.  
  1241. Conclusions:
  1242. ============
  1243.  
  1244.     Draw whatever conclusions you will - the fact is that all three systems are
  1245. competitive; otherwise, the vendors would not be where they are today (in
  1246. business, that is).  However, each of them has its strenghts and weakensses.
  1247.  
  1248.  o  pSOS+ is a solid, reliable system, and with the CILxxx interface its
  1249.     performance is tops among the three kernels.  However, with the currently
  1250.     distributed KJMxxx interface, its components utilize the software trap
  1251.     interface and performance suffers as a result.  Also, the level of manual
  1252.     configuration work required of the user is quite high.  In addition, it
  1253.     should be noted that Software Components has been slow in bringing out
  1254.     products in support of new technology - e.g., they've only now announced
  1255.     NFS & RPC support.
  1256.     
  1257.  o  VRTX Velocity is a sophisticated development environment, and provides
  1258.     an unmatched level of flexibility, automation and ease of use.  However,
  1259.     its complexity can be daunting at times, especially to the beginner.  Also,
  1260.     VRTX32 is a decent kernel, but it falls short of pSOS+ and WIND in terms of
  1261.     both features and performance.  Finally, sources both on and off the net
  1262.     confirm the somewhat buggy nature of VRTX Velocity components.
  1263.  
  1264.  o  VxWorks enjoys a good reputation among its customers.  Its networking
  1265.     support is clearly superior, and it has a flexible kernel, with strong
  1266.     interprocess communication facilities.  It also provides the most
  1267.     similarity to Unix of all three systems, without sacrificing performance.
  1268.     On the down side, however, its remote source level debugging facility is
  1269.     not as sophisticated as the competition, and its documentation leaves much
  1270.     to be desired.  In addition, VxWorks is conspicuously void in the area ofa
  1271.     multiprocessor kernel, which the others provide.  Finally, I have to wonder 
  1272.     about the level of support that would be available for the GNU tools.
  1273.  
  1274.  
  1275. Again, remember that I have no affiliation with any of the above companies, and
  1276. the opinions I express are mine alone and do not necessarily reflect those
  1277. of my organization.
  1278.  
  1279.  
  1280. ###############################################################################
  1281.  
  1282. If you have any factual questions about these products, don't ask me; go 
  1283. straight for the horse's mouth.
  1284.  
  1285.     Software Components Group
  1286.     1731 Technology Drive
  1287.     San Jose, CA 95110
  1288.     (408) 437-0700
  1289.     
  1290.     Ready Systems
  1291.     470 Potrero Avenue
  1292.     P.O. Box 60217
  1293.     Sunnyvale, CA 94086
  1294.     (408)736-2600
  1295.     
  1296.     Wind River Systems
  1297.     [I'm not sure of their California address, as I think they've moved; so
  1298.      here's their Boston sales office - S.H.]
  1299.     Paul Kusiak, Sales Rep
  1300.     77 North Washington Street
  1301.     Boston, MA 02114
  1302.     (617) 367-6567
  1303.     
  1304.  
  1305. Informed discussions on the relative merits of these systems will be welcome.
  1306. Biased flames, however, will be redirected to /dev/null.
  1307.  
  1308. ================================================================================
  1309. ================================================================================
  1310. Keith Smith
  1311. keith@das.harvard.edu
  1312.  
  1313. Another OS that you should consider is VENIX.  It is a real-time
  1314. UNIX variant sold by VenuturCom, Inc.  They start with the original
  1315. AT&T (oops, I mean USL) source code, and add additional, system calls
  1316. to support a variety of real-time features including:
  1317.  
  1318.     -Preemptive priority scheduling
  1319.     -Asynchronous and direct I/O
  1320.     -High resolution alarms (<= 1ms I think)
  1321.     -Device control from user level.
  1322.  
  1323. Their system runs on Intel 286, 386, and 486 processors.  They have
  1324. both a workstation version, which is meant to run on PC's, and an
  1325. embedded product, which is much smaller (and cheaper) and can be
  1326. run in a operatorless environment.  
  1327.  
  1328. Because their system is built from USL sources, they have full 
  1329. compatability with the standard UNIX API's.  They also have 
  1330. support for X-windows and NFS.
  1331.  
  1332. You can reach them by phone at (617) 661-1230 or via mail at:
  1333.  
  1334.     VenturCom, Inc.
  1335.     215 First Street
  1336.     Cambridge, MA 02142
  1337.  
  1338. ================================================================================
  1339. ================================================================================
  1340.  
  1341. -- 
  1342. Enrico Badella                Internet: eb@felix.sublink.org
  1343. Soft*Star s.r.l.                      eb@icnucevx.cnuce.cnr.it
  1344. Via Camburzano 9            Phone:    +39-11-746092
  1345. 10143 Torino, ITALY            Fax:      +39-11-746487
  1346.