Stella is an operating system which is very different from most conventional operating systems in a large number of ways. The general documentation for Stella is intended to give an overall impression of its structure and capabilities without getting lost in detail. It is divided into a number of separate "briefs" to make it slightly less indigestible.
The predictability of a system is rarely given the attention it deserves. In order to design for predictability, it is necessary to evaluate the execution time of all operations which can effect the system response to select the most appropriate algorithms. This attention to minute detail in Stella is directly opposed to the classical "academic" approach to operating system design.
Predictability for reliability | 1 ![]() |
Contention for resources | 1 ![]() |
Response to external events | 2 ![]() |
The Stella approach to reliability is to tackle reliability problems at source. Rather than the classical, and largely ineffective, approach of damage limitation, Stella aims to make the whole system (including the applications) intrinsically sound.
Operating system security | 1 ![]() |
Competition for shared resources | 2 ![]() |
Protection against programming errors | 3 ![]() |
System reconfiguration | 4 ![]() |
A complete Stella system, including applications, is built from a number of modules. The Stella module structure has two levels: core modules, to maximise the efficiency at the low levels, and "entities", to maximise the flexibility at the higher levels. The Stella context structure is related to the module structure but, unlike classical "virtual machine" and "object" systems, it is open and flexible to simplify the modular construction of complex applications.
Stella Core Module and Entity Structure | 1 ![]() |
Stella core modules | 2 ![]() |
Stella entities | 2 ![]() |
Stella context structure | 3 ![]() |
Context sharing | 3 ![]() |
Composite contexts | 4 ![]() |
Stella provides several mechanisms to make the facilities in one module accessible to other modules. Each of these mechanisms provides a different compromise between performance, flexibility and ease of use.
Linking and binding | 1 ![]() |
Linking mechanisms | 1 ![]() |
Core operating system modules | 2 ![]() |
Entities | 4 ![]() |
Special linkages | 4 ![]() |
The privilege structure of a Stella system is fairly classic, but the concept of privilege is more important in Stella than in most "modern" operating systems.
Stella provides two separate, but compatible, task management facilities. These can handle the whole range of requirements from microsecond response to human time-scale interaction.
Stella jobs | 1 ![]() |
Stella handlers | 1 ![]() |
Management of jobs and handlers | 2 ![]() |
Stella external event managers are efficient deadline and repitition rate schedulers designed to handle critical external events with guaranteed response times.
External event management principles | 1 ![]() |
Run-time code generation | 4 ![]() |
Stella task managers provide services for event handling, including periodic and one-shot timed events, as well as extensive facilities for more conventional multilevel prioritised multitasking.
Stella task managers | 1 ![]() |
Timed handlers | 1 ![]() |
Stella schedulers | 1 ![]() |
Task management services | 3 ![]() |
Stella has a range of memory managers to support a wide variety of hardware configurations from micro controllers with a few kilobytes of memory, up to massive database servers. The basic memory model is designed to ensure that the memory manager interface remains consistent across the whole range of different types of systems.
Standard Memory Model | 1 ![]() |
Memory Pools | 1 ![]() |
Additional Private Memory Pools | 1 ![]() |
Remove Linkages | 2 ![]() |
Common memory model | 2 ![]() |
Virtual memory model | 2 ![]() |
Temporary Memory | 2 ![]() |
All suppliers of operating systems claiming high performance include "comparative performance" figures in their blurb. The figures for Stella are no more misleading than most.