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
• Real-Time UNIX-based operating
system supporting the following PowerPC platforms:
Microsystems and Motorola PowerPC single-board computers
• Industry-standard System V Release 4.2ESMP with BSD 4.3 features
• Open Systems Standards:
1003.1, 1003.1b and 1003.1c
Release 3 (SVVS 4)
• Preemptive, multithreaded reentrant kernel
• Tightly-coupled symmetric multiprocessing support
• Less than 8 microsecond interrupt response time
• Minimal process dispatch latencies
• Dynamic and static load balancing
• CPU shielding for maximizing deterministic performance
• Network Information System (NIS) support
• Single-vendor support for operating system, compilers and software development
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.
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
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
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.
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
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
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
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
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
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
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.