Generic Host Independent Operating SysTem
What is GHOST?
Most software developers take operating systems for granted. They
view the operating system and the underlying hardware as one indissoluble
entity. Only when they go through the agony of a rehost, when they must
rewrite portions of their code to work with the new operating system, do
they realize the difference between the two.
The goal of GHOST is to provide the most elusive of holy grails: application
software independence of hardware and system architecture. It does this by
hiding the details of the underlying system via a layered design.
GHOST stresses portability and flexibility. Meaning, easy transition of
software between differing processors and proper communication between
differing processors. By supporting both embedded and non-embedded platforms,
GHOST provides a new way for writers of embedded applications to do their job.
GHOST allows application developers to begin coding in
a friendly development environment such as a VAX/VMS, Sun/Solaris, or even
on a PC, rather than an embedded system with the confidence that the operating
system functionality is identical. When logic errors are corrected, developers
can transition smoothly to less friendly embedded environments and
concentrate on timing problems.
Occasionally, laboratory environments lack sufficient hardware due to
cost or availability issues. Delays are costly. However, they are avoidable.
GHOST allows software development to proceed. "Clusters" of processors
may be built using existing systems and standard communication mediums such
as ethernet. These systems need not be similiar. GHOST will provide predictable
results operating on a intermediate processing environment. When circumstances
allow for the acquisition of proper hardware, unit tested software will be
ready for final integration with a simple recompilation.
Features
- Portable Packages.
All Ada compilers and target processors
are not created equal. Ada INTEGER types are not equivalent in size or range.
Ada FLOAT types do not provide the same precision nor are they stored using
similar formats on target processors. Big endian and little endian systems
do not communicate correctly without intervention. GHOST solves these problems,
providing true software portability, through Portable Packages.Portable
Packages include portable types, math libraries, and conversion utilities
all geared to ensure the same results on varying hosts.
- Surrogates .
Surrogates are predefined, generic methods of handling
input and output. Tried and true methods that applications may use and reuse.
- Heterogeneous Processing .
GHOST not only runs on different
processors, it provides utility services to support an on-line mixture
of processor types into a single, unified system. These utilities perform
tasks like word and byte swapping, floating point encoding, bit rearrangment,
any types of data manipulation required to send data from one type of
processor into another type and ensure that the data that an LPU recieves
is properly formatted for its host processor, even tho the LPU itself does not
know the type of host on which it resides. The overhead associated with this
data encoding/decoding is minimal, imposing no significant degradation in
run-time performance.
Vendors of some run-time systems allow software to be ported from one system
to another. GHOST is not a run time system, but an operating system that uses
the run-time system to provide for
combinations
of processor types. This allows the user to develop code in one of our
non-embedded environments but test the code as part of the fully-operating
system. This drastically eases implementation by elimiating the need to
debug in an embedded environment.
- Reconfiguration .
- Loadable Program Units (LPU) .
LPU's are simply executable programs, the smallest unit of software handled by
GHOST. An LPU is not limited to a single task. It may contain many tasks. An
LPU executes on a single processor. A single processor may execute many LPU's.
In systems that do not support dynamic reconfiguration, many LPUs get combined
into a single executable program. GHOST support communication between
code executing within a processor and between processors. Under GHOST, an LPU
does not know where it resides, where its data sources reside, or where its
data consumers reside.
- Module Management .
On systems that support dynamic reconfiguration, GHOST interacts with the Ada
run-time system (RTS) to invoke and terminate LPUS. It loads the program images
from mass memory into local processor memory using its own memory-management
algortihm, then invokes the RTS to activate the LPU as a free-running executing
program.
Leaving control of the LPU in the domain of the RTS simplifies
priority scheduling of Ada tasks by allowing the programmer to assign
priorities of tasks using the Ada pragmas.
- System Management .
Module Management deals with LPU control at the processor level. System
Management deals with it in the system as a whole by assigning LPUs to
processors. Using heuristics to detemine the resources available in each
processor and the processor requirements of LPUs, System Management assigns
LPUs to the processor best able to host the LPU.
System Management also performs periodic checks of each processor to determine
its health. If it determines that a processor has gone off-line, it
reallocates the LPUs that had been assigned to that processor to other
processors in the system.
System Management communicates LPU load/unload commands to the Mission
Managers via standard GHOST messages, and is therefore totally portable.
- Mission Management .
Module and System Management deal with LPU control. Mission Management deals
with software at a higher level. It translates mission needs into a set of
LPUs required to support the mission at any time. A start-up mode may have
radically different software needs from a data-processing mode and those needs
may differ from a shutdown mode. Mission Management determines the current
software needs of the system.
Mission Management communicates LPU load/unload commands to the System
Manager via standard GHOST messages, and is therefore totally portable.
- Embedded versus Non-embedded .
Reconfiguration implementations differ between embedded and non-embedded
systems. The non-embedded system approach is truly portable using a very
creative Ada tasking method pioneered by American Computational. All
non-embedded systems are limited to a single image, but within that image
reside all of the LPUs the user mite wish to run on that processor.
On embedded systems, we tailor the RTS interaction to hardware and compiler
capabilities for enhanced performance.
- Services .
- Messaging .
GHOST supports message passing between tasks and/or
LPU's. The method of transfer is not a distingusihing factor. Messages may
be transfered by different communication methods, however, the same interface
is utilized. Supported methods vary from Parallel Interconnect (Pi) Bus and
MIL-STD-1553B to commercially available Ethernet and the shared memory network,
Scramnet.
- File I/O .
GHOST supports the reading and/or writing of data files.
To provide maximum hardware configuration options, File Services are designed
to be independent of storage device type and location. For example, typical
configurations may include (but are not limited to) an external mass memory
or an internal SCSI drive.
- Events and Semaphores .
GHOST provides low overhead alternatives
to the Ada rendezvous for synchronization and mutual exclusion.
- Time .
Time services are meant to supplement and enhance the standard Ada delay
statement. These services provide global time, delays, and synchronous
remote procedures using a higher resolution timer (when available) than
typicalAda delay implementations.
Current Hosts and Features
- Embedded Hosts .
- Westinghouse VHSIC 1750a - Reconfigurable, Multiple LPU.
Communication:
- PI Bus
- Fiber Optic High Speed Data Bus
- Mil-STD-1553B
- Tronics JIAWG i960MX - Static Loading, Single LPU.
Communication:
- PI Bus
- Mil-STD-1553B
- Ethernet
Tools:
- Non-intrusive message collection,
- Event logging.
- CDI AN/AAYK-14 (MIPS R4400) - Static Loading, Single LPU.
Communication:
- Non-embedded Hosts .
- VAX/VMS - Reconfigurable, Single LPU.
Communication:
- Ethernet
- Fiber Optic HSDB
- DTI Mil-STD-1553B
- SCRAMNET (shared memory)
- TCP/IP
Tools:
- Non-intrusive message collection,
- Event logging.
- Sun - Static Loading, Single LPU.
- PC/Windows - Static Loading, Single LPU
Tools:
- Non-intrusive message collection
- Event logging
- On-line plotting configured from databases.
- POSIX-Compliant Interfaces .
Future Products and Upgrades
- Support for Ethernet on all Non-embedded Hosts.
- Support for 1553B on all Non-embedded Hosts.
- Reconfiguration for all Non-embedded Hosts.
- Reconfiguration for the Tronics JIAWG Processor.
- Support for the Westinghouse Comanche Processor.
- VME communications
- CORBA
- X-Windows and plotting
- Mixed-language (C/C++ and Fortran) LPUs
How do I learn more about GHOST?
GHOST is a fine product from the Software Specialists of
American Computational Technical Services, Inc.
For information or questions on support for additional hosts or features
please contact
Mike Miedlar
Back to Main Page