Elate's® Binary Portability

Download Elate Kernel Factsheet.
Download Device Driver Factsheet.

The viewer for these sheets can be downloaded from the Adobe® website.

Certain code within Elate® will of necessity be specific to an individual platform or processor. These non-portable functions are segregated under two separate headings, referred to as the CPU Isolation Interface (CII) and the Platform Isolation Layer (PIL). Although there is considerable overlap between these two areas, the former of these is loosely responsible for isolating the kernel from any elements which are specific to the native Central Processor Unit. For example, this includes tools which interface with the instruction set of the individual processor, tools which mediate between the Elate scheduler and the processor during task switches, and stack manipulation tools. This includes tools in such areas as interrupt handling and memory management. The PIL then manages particular platform specific requirements (either in the case of underlying hardware and software) on behalf of both the kernel and device drivers.

It should be observed that neither the PIL or CII are coherent segments of the system as such, and are perhaps better described as sets of grouped functions which demarcate a clear boundary between the core of the portable Elate system and the functions required for Elate to successfully run on differing platforms and processors.

Arguably the most noteworthy aspect of the Platform isolation Layer, is the fact it is this segment of the system that permits Elate to operate in 'hosted mode' upon a number of operating systems, including Windows®, Linux® and QNX 4®. This feature not only provides customers wishing to incorporate their own added value with a familiar development environment, but also allows for the retention of legacy code (although much of this may be easily ported to Elate through the C Compiler).

The portable components of Elate include the entirety of the realtime kernel, libraries and device drivers. The Elate libraries fully support the ANSI-C specification, and a subset of POSIX, as well as some BSD functions. Toolkits are also provided for facilities like encryption, graphics, scalable, anti-aliased TrueType® and PostScript® Type 1 fonts, and digital sound effects. Elate also comes with excellent device driver support for a wide range of devices. In addition, because of Elate's dynamic binding features it is possible to load and unload these drivers dynamically without needing to power down the system. New drivers may easily be loaded over the Internet. This is in marked contrast to some systems that require a kernel recompilation in order to support new device drivers.

The Elate operating system uses a microkernel, an easily configured set of compact modules. It is comprised of a collection of functions which may be tailored in accordance with the needs of the system to ensure that the kernel is as streamlined as possible. Elate kernel functions provide the system with basic facilities, and are effectively globally accessible tools. Many functions that the kernel of a standard operating system might be expected to contain are not considered to be part of the Elate kernel, but are instead categorised separately. Device drivers, for example, are not part of the kernel.

Elate is a Real Time Operating System (RTOS). In other words, operations within the system can be guaranteed to occur in a deterministic fashion. The kernel includes functions for management of the system's scheduler, the timer and synchronisation objects such as mutexes, semaphores, mailboxes, event flags and synchronisation groups. The compact and versatile Elate scheduler can accommodate configurable priority levels, each of which may contain an unlimited number of processes simultaneously. Elate supports the use of a wide variety of scheduling policies and scheduling models, and even the simultaneous operation of several scheduling policies within a single system.

It also provides numerous process management functions, which offer the capacity to create and destroy processes, to switch them between different 'states' of readiness, to change their scheduling characteristics and to acquire information about them. (A process is made up of one or more threads, a thread being a sequential flow of control through a program.)

In most Elate systems the kernel is also responsible for memory management. In the case of some hosted systems the kernel may request a large block of memory from the PlI, before assigning memory in the usual fashion. The Elate model for memory allocation is object-oriented, and therefore very flexible and configurable. The kernel also manages the event handling mechanism, signal management, process management, callback manipulation, the transportation of messages, code and data caching and the management of named data areas, atoms and AVL trees.

The kernel also possesses an entropy collector, which maintains a pool of random data generated during the normal running of the system devices, and utilises this to generate high quality randomness for use in encryption.

Copyright © 1999, 2000, 2001 Tao Group Ltd or Tao Systems Ltd. All Rights Reserved
Please read our copyright and trade marks notice