Availability Guide for Application Design

Designing Applications for Change
Availability Guide for Application Design525637-004
10-7
Considering Portability Requirements
Uniprocessor systems
Uniprocessor systems simply have a single processor with associated memory.
Interprocess communication is typically based on shared memory. This is typified
by the UNIX system API, which provides several interprocess communication
mechanisms, all of which are implemented using shared-memory techniques.
Symmetric multiprocessor systems
Symmetric multiprocessor (SMP) systems have multiple processors accessing a
single common memory. On specific platforms, multiple physical cache memories
may be implemented with the aim of improving performance. Logically, however,
from the application’s point of view, there is a single consistent memory.
SMP systems can provide shared-memory functionality similar to that of
uniprocessor systems. However, an additional dimension is added by the need to
synchronize access to any shared memory between instances of code executing
concurrently in different processors. The design issues go beyond the simple
inclusion of semaphore or locking mechanisms to coordinate access. As the
volume of use increases, synchronization mechanisms and cache-thrashing can
begin to limit growth, create bottlenecks, and reduce responsiveness.
Clustered systems
Clustered systems have multiple processors. Each processor has its own physical
memory that is logically unrelated to any other memory. These are sometimes
called loosely coupled systems. The operating system software can create a single
system image by coordinating between its instances in the individual processors.
The HP NonStop operating system creates such a system image both across the
processors of a clustered system and across a network of such systems.
Various subtypes of clustered systems exist:
Some have limited capabilities and are targeted primarily at improving
availability
Some have shared access by all processors to I/O resources
Some have no shared resources between processors (shared-nothing
systems).
For shared-nothing systems, the logical structure imposed by the operating
software (not the physical connectivity) determines their nature. For example, while
a disk may be physically accessible from any processor, access is constrained to
the processor configured as the owner or manager of that resource. The NonStop
operating system and Microsoft Cluster Server (MSCS) adhere to the shared-
nothing model.
In clustered systems, shared-memory mechanisms cannot be used. They must be
replaced with message-passing or disk-based mechanisms. Process creation
functions need to implement load balancing by spreading new processes around
the available processors. Ideally, the required functionality should be provided