Overview
Concurrent's PowerMAX OS is an industry standard, real-time,
UNIX-based operating system for PowerPC computers. PowerMAX OS is based on the System
V Release 4 standard.
PowerMAX OS features high I/O throughput, fast response to external events and efficient
interprocess communication. PowerMAX OS supports the real-time interfaces defined
in the IEEE POSIX standard 1003.1b- and .1c and is designed for maximum real-time
performance and functionality. The kernel is multithreaded, preemptive and supports
symmetric multiprocessing with load balancing and CPU biasing to maximize the determinism
and real-time performance of the user's application.
PowerMAX OS meets the demanding and often complicated needs of a wide range of applications.
By incorporating a rich collection of utilities, software development tools and
real-time extensions, Concurrent offers the best real-time UNIX operating system
available. Designed for both real-time production and development environments,
PowerMAX OS is ideal for use in many industry applications which demand high I/O
throughput along with fast and deterministic response times.
Benefits
Open Systems and Standards
Compliance with the System V Interface Definition (SVID), XPG4, POSIX 1003.1 and
POSIX 1003.1b and 1c standards ensures easy porting of standards-compliant application
software. Concurrent is committed to future operating system standards as they become
available. The Concurrent suite of compilers, which includes C/C++, Ada95 and FORTRAN,
complies with applicable ANSI, federal and industry standards.
Multiprocessing
On multiprocessor systems, PowerMAX OS provides a symmetric environment in which
all processors share a single copy of the operating system. Programs can initiate
I/O and access all system services from any processor. There are no master/slave
bottlenecks. Architectural features such as local memory, dedicated caches, dual
buses and high-speed interprocessor interrupts are provided to reduce or eliminate
the resource contention that degrades the performance of other multiprocessor implementations.
Complete Software Environment from a Single Vendor
In addition to PowerMAX OS, users can obtain a complete software development environment
directly from Concurrent including a common suite of high-performance compilers,
the NightStar real-time software development tool set and NightGraphics.
Compatible Upgrade Path to Multiprocessor Systems
Concurrent PowerPC platforms are based upon open systems industry standards and
incorporate VME I/O subsystems and SCSI peripherals. One of the key features of
the PowerMAX OS software environment is that users can take advantage of off-the-shelf
VME technology while retaining compatibility with Concurrent high-performance multiprocessor
systems. If an application requires a mix of multiprocessor and single processor
systems -- or an application grows beyond a single processor -- users can move to
a multiprocessor while retaining software and VME I/O compatibility.
Concurrent multiprocessor systems incorporate several unique architectural features
to ensure that maximum real-time responsiveness, determinism and performance are
achieved. Systems can accommodate up to twenty processors in a scalable design that
allows users to add processors and memory to their system without having to modify
application software. PowerMAX OS is designed to make optimum use of multiprocessor
real-time features such as three-tiered memory and integrated real-time clock support.
These features make Concurrent multiprocessors the ideal solutions for high-end
real-time applications.
Multithreading and Preemption
A multithreaded kernel allows multiple processes to execute in the kernel simultaneously.
The kernel protects key data structures and critical sections of code with semaphores
and spin locks to preserve the integrity of the system. With this implementation,
processes contend with each other only when requesting an identical resource. Otherwise,
all kernel features and capabilities are available to all processes. This feature
supports true linear performance in a multiprocessor system.
A significant benefit of a multithreaded kernel is that a process executing in the
kernel can be forced to relinquish a CPU involuntarily - that is, to be preempted.
The kernel can transfer control of the CPU from a lower-priority process to a higher-priority
process. This allows a high priority process waiting for an external event to respond
immediately when the event occurs - even if the CPU is currently in use.
The degree of multithreading and the length of critical sections of code is key
to minimizing worst-case response times and reducing interrupt latency. The fine-grain
multithreading implementation of the PowerMAX OS kernel ensures that critical sections
are extremely short. When using the user-level interrupt facility, the interrupt
response time from an external interrupt to a user-level application is less than
eight microseconds.
Process Dispatch Latency
Process dispatch latency is the time from the occurrence of an external interrupt
until the process awaiting that interrupt is able to run. Dispatch latency includes
the time spent in recognizing an external interrupt, executing the interrupt handler,
waking the process that is waiting for the interrupt, performing a context switch
to that process, and for the process to exit the kernel where it can begin executing
application code. Such features as distributed interrupts, rapid context switches,
an efficient preemption mechanism and low interrupt latencies combine to provide
for typical context switch times of less than 25 microsecond.
Load Balancing and CPU Biasing
Load balancing is the process that PowerMAX OS uses to distribute workload effectively
across multiple processors. A separate run queue for each processor provides faster
context switch times. The load-balancing algorithms also avoid time-consuming migrations
from one local memory to another. Processes migrate among allowable processors as
specified by a bit mask, or CPU bias, to balance the system load and provide maximum
response and performance. The kernel is free to select a process to execute on any
processor that is specified in its bit mask; it will select the processor that has
the least load.
Users can employ CPU biasing to achieve deterministic performance and response times.
CPUs can be reserved for time-critical tasks by setting the CPU bias of a process
appropriately. A user may force a process to run on a particular CPU or a restricted
set of CPUs while preventing other tasks from running there. In this way, the resources
of those CPUs are available only to those processes designated by the user - the
operating system will not migrate other processes to those CPUs. Users may use CPU
biasing to perform a completely static allocation of CPU resources if desired.
Exclusive Processor Binding
PowerMAX OS users have the ability to exclusively bind processes to processors.
When this binding occurs, a processor is not permitted to run any process that is
not exclusively assigned to it. The facility is dynamic. A processor becomes an
exclusive-use processor once it acquires its first exclusively-bound process, and
reverts back to being a general use processor, available to all processes, when
the last process exclusively bound to it exits or disassociates itself.
Interconnectivity
In addition to the standard communications components of the UNIX operating system
(e.g., uucp, ftp), a full range of networking and other capabilities are available.
These include FDDI, Ethernet, TCP/IP, NFS and the X Window System with OSF/Motif.
PowerMAX OS supports multiple interfaces and networks simultaneously. Concurrent
also offers a wide range of integrated VME interfaces for connecting with industry-standard
buses and vendor-specific devices and systems.
Static Priority Scheduling
A configurable range of static real-time priorities is provided. The kernel can
be configured with as many priorities as required for an application. Within the
static priority range, PowerMAX OS implements priority scheduling strictly as specified
by the user and does not alter priorities based on traditional UNIX scheduling considerations.
This feature is essential for real-time applications where the user needs to define
the priority requirements.
Shared Data and Synchronization
In real-time applications, cooperating processes need to share information. Access
to shared information must be synchronized. Access to shared data is provided through
shared memory system services or the POSIX memory mapping services. A shared memory
definition utility is also provided for ease-of-use and control. Users build a shared
memory definition file and use it as input to the utility. Thus, users can control
the layout of the shared memory region from a single point of control - the input
file.
A set of library routines and system calls allows user applications to solve problems
associated with sharing data among cooperating processes. These software primitives
provide mechanisms for mutual exclusion and condition synchronization among processes,
thereby allowing shared data or sections of code to be easily protected. The synchronization
primitives support priority inheritance to prevent unbounded priority inversions
from delaying the progress of high-priority processes. The synchronization primitives
provided by PowerMAX OS avoid kernel intervention whenever possible and are therefore
highly efficient, executing in only a few microseconds when there is no contention.
Physical Address Mapping
Shared memory regions may be bound to specific physical addresses including VME
I/O address ranges. With this feature, user programs can directly control I/O cards
or set up buffers at fixed addresses for I/O devices to use. With judicious programming
of I/O cards, this feature may be used to save set-up times for repetitive data
transfers in real-time systems.
User Interrupt Routines
Whether for simplicity or increased performance, in some real-time applications
it is useful to have user-written software respond directly to a hardware interrupt.
This allows users to write interrupt routines without the need to modify the operating
system; a routine in a user program is simply connected to a physical interrupt.
When the interrupt occurs, the routine is executed within the context of the user's
address space at interrupt level. Users can also write programs or libraries that
serve as user-level device drivers by using this feature in conjunction with physical
address mapping. User-level device drivers provide a very efficient means for performing
I/O to simple devices.
Memory Locking
The pages of frequently-executed tasks may be made memory resident so they are ready
to execute without demand paging. This feature improves predictability for real-time
applications and increases system throughput by reducing overhead in transaction-intensive
applications and applications with many concurrently running tasks.
Asynchronous I/O
Asynchronous I/O allows a user process to perform other useful work while an I/O
operation is in progress. I/O completion notifications can be selected on a per-process
basis. Asynchronous I/O can be performed to any device or disk file supported by
PowerMAX OS.
High Resolution Clocks and Timers
Time-of-day clocks and interrupting timers are available with microsecond resolution.
The POSIX-compatible interval timer can be mapped directly into a program's address
space for quick access.
Threads
Threads provide a more efficient means of developing applications that require shared
access to resources. In a traditional UNIX system, the scheduled entity is a process.
A process is highly independent with kernel enforced protection on its resources.
Full sharing between processes is difficult.
PowerMAX OS supports parallelism and sharing of memory within a process. These extensions
have typically been called "threads of control" or "threads." The fundamental scheduled
entity in PowerMAX OS is a Light-Weight Process (LWP).
A process may have multiple LWPs, each having full access to process resources.
Some of the attributes of a process are unique to each LWP, such as the register
values, the stack, scheduling data and signal handling. Other process attributes
are shared by all LWPs in the process, such as open files, access rights, resource
limits and the process identification.
A threads library provides the interfaces used to manage and synchronize multiple
threads of control in a single process. The threads library schedules a thread to
run on a particular LWP. The number of user-level threads in a process is independent
from the number of LWPs in a process. Threads can be multiplexed to run on a set
of LWPs or a thread can be bound to a particular LWP.
Virtual Interrupt System (VIS)
The PowerMAX OS virtual interrupt system permits cooperating processes to establish
channels to which they can connect to send and receive signals. These signals can
be used to notify processes of specific events, and do not require the permissions
that standard signals demand.
Direct Disk I/O
To ensure data integrity and reduce the chance of data corruption in the event of
a system failure, a raw asynchronous I/O feature allows programs to bypass the kernel's
buffer cache and write user data buffer directly to disk. Using this technique,
updates can occur immediately rather than waiting for a periodic disk update from
the buffer cache. Direct Disk I/O is the most efficient means of performing large
sequential disk transfers.
Resilient File System
In addition to an industry-standard UNIX file system, PowerMAX OS includes Resilient
File System software. The Resilient File System improves file access performance
for large files while continuously guaranteeing the integrity of the data. All file
operations are unified and atomic so that either all or none of an operation is
applied. In addition, Resilient File System can access very large files with no
indirection. Disk space is allocated contiguously thus reducing head movements and
seek times and improving overall performance. Because the integrity of the file
system is ensured, the Resilient File System significantly reduces system recovery
time in the event of a system failure.