From: Mark Kovarski <kovarski@zooid.guild.org>
Subject: -= IBM's OS/2 and Mach =-
Organization: The Zoo of Ids
Date: Sun, 10 Jan 1993 06:35:34 GMT

                           M I C R O K E R N E L

                            T E C H N O L O G Y



                   "A modular, portable software kernel
                 promising powerful open systems advantages
                   for system developers and end users."


                                   I B M







MICROKERNEL TECHNOLOGY

   Dramatic advances in computing architecture, hardware designs,and
technology have spawned an amazing variety of programming methods, 
user interfaces, development tools, communications techniques and
application software.  Delivering previously unheard of advantages to
end users in performance, service level, and system utility, the
overwhelming diversity of system offerings has also heralded the cry
for "open systems" & "standards".
  
   IBM, long a leader in creating new systems delivering the
broadest range of application capabilities to the widest range of
users, is again committed to developing the new, open, technologies
needed for the next computing decade.

   IBM developers have begun to prototype the next generation of 
highly portable systems software, and related applications, around a
microkernel.  A microkernel provides a new way of structuring systems
software to reduce it's complexity and to increase it's portability. 
It presents the potential for building a single, truly open, computing
environment: using a microkernel "core" product executing multiple
diverse operating systems as "applications" on a single hardware
platform.  The promise of microkernel-based system software lies in
providing better ways to cope with the increasing complexity of system
designs, the potential for systems software to be more "in tune" with
the startling leaps forward in processor hardware, and ultimately, the
ability of the end user to select the best available application...  
independent of the available processor.

   Systems built using microkernel technology will deliver a new 
standard for modular, portable, operating systems development 
platforms.  Rather than creating a single, monolithic system, 
developers create a set of servers that can be configured in a
variety of ways to provide the target operating system.           (1)

    One of the most discussed advances in operating systems in recent 
years, is the microkernel - a small, message-based piece of systems 
software running in the most privileged state of the computer, 
supporting the rest of the operating system as a set of server 
applications.  Interest in microkernels has grown as system developers
have reacted to the complexity of current operating system 
implementations and as the research community has demonstrated the 
feasibility of the microkernel concept.

   The Mach microkernel technology developed at Carnegie Mellon 
University serves as the basis for IBM's microkernel work.  On the 
Mach base IBM is experimenting with new ways of implementing low-end 
environments, developing stand-alone file servers, integrating
multiple operating system personalities on a single computer, and 
enabling new ways of delivering DOS execution environments.

   By virtue of their size and their ability to support standard 
programming services and features as application programs, micro-
kernels themselves are simpler than standard operating systems.  With 
a microkernel, operating system function is broken down into modular 
pieces that may be configured in a variety of ways, permitting larger 
systems to be built by adding pieces to smaller ones.  Microkernels 
also make it easier to support multiprocessors by creating a standard 
programming environment that can use multiple processors if they are 
present but does not require them.  The specialized code for 
multiprocessors is restricted to the microkernel itself.  Moreover, 
networks of communicating microkernels can be used to provide 
operating system support for the emerging class of massively parallel 
machines.  Since they are small and have relatively little kernel- 
level code to execute, microkernels provide a convenient way to 
support the real-time features needed for multimedia, device control 
and high speed communications.  Finally, well structured microkernels 
provide an insulating layer for hardware differences that are not 
masked by the use of higher level programming languages.  Thus, they 
make porting code easier and increase code reuse.

   Current Mach research and development activities include on-going 
research work at Carnegie Mellon, as well as Mach-related work at the 
University of Utah, the University of Arizona and Cornell University. 
The Open Software Foundation Research Institute, building on it's 
previous work and research done at Carnegie Mellon has created a 
version of Mach that supports massively parallel supercomputers. 
There is also work underway at the Center for High Performance 
Computing of Worchester Polytechnic Institute on real-time
extensions and file system servers for a Mach environment.        (2)


   +------------------------------+  +------------------------------+
   |                              |  |                              |
   |                              |  |                              |
   |    Dominant Personality      |  |     Secondary Personality    |
   |        Applications          |  |          Applications        |
   |                              |  |                              |
   |           (MIC)              |  |             (MIC)            |
   +------------------------------+  +------------------------------+

   ==================================================================
                   "True Application"/Server Boundry
   ==================================================================

   +------------------------------+  +-------------+  +-------------+
   |                              |  |             |  |             |
   |    Dominant Personality      |  |  Secondary  |  |  Secondary  |
   |           Server             |  | Personality |  | Personality |
   |                              |  |   Server    |  |   Server    |
   |           (MIC)              |  |   (MIC)     |  |   (MIC)     |
   +------------------------------+  +-------------+  +-------------+

   ==================================================================
              Personality/Personality-Independent Boundry
   ==================================================================

   +--------+  +--------+  +----------+  +---------+     +----------+
   |        |  |        |  |          |  |         |   +-+--------+ |
   | Master |  |  File  |  | Hardware |  | Default |   |  Device  | |
   | Server |  | Server |  | Resource |  |  Pager  |   |  Drivers | |
   |        |  |        |  | Manager  |  |         |   |          | |
   |  (MIC) |  |  (MIC) |  |  (MIC)   |  |  (MIC)  |   |  (DDC)   |-+
   +--------+  +--------+  +----------+  +---------+   +----------+

   ==================================================================
                       User/Privileged Boundary
   ==================================================================

   +-----------+----------------------------------------+-----------+
   |           |    Enhanced Mach 3.0 Microkernel       |           |
   |           |                                        |           |
   |           |       |               |                |           |
   |  Virtual  |  IPC  |  I/O Support  |   Host and     | Tasks &   |
   |  Memory   |       |  & Interrupts | Processor Sets | Threads   |
   |           |       |               |                |           |
   |   (MIC)   | (MIC) |     (MIC)     |      (MIC)     |   (MIC)   |
   +-----------+-------+---------------+----------------+-----------+
   |   (MDC)   | (MCD) |     (MDC)     |      (MDC)     |   (MDC)   |
   +-----------+-------+---------------+----------------+-----------+

                   (MIC) - Machine-Independent Code
                   (DDC) - Device-Dependent Code
                   (MDC) - Machine-Dependent Code                 (3)


THE MACH ARCHITECTURE

   The functions performed by the Mach microkernel itself are limited 
to reduce its size and to maximize the amount of code that runs as an 
application program.  The microkernel includes only those functions 
that are required to define a set of abstract processing environments 
for application programs and to permit applications to work together 
to deliver services and to act as clients and servers.  As a result, 
the microkernel provides only five different types of services.

      *  virtual memory management

      *  tasks and threads

      *  interprocess communications (IPC)

      *  I/O support and interrupt management

      *  host and processor set services

   Other operating system functions such as file systems, device 
support and traditional programming interfaces are placed into one or 
more server application programs.  The enclosed diagram illustrates 
this function split by showing how IBM is using Mach to support an 
experimental low-end version of AIX* for PS/2* and other Intel386* and
Intel486* based hardware.


MACH TECHNOLOGY OVERVIEW

   The virtual memory component of the Mach microkernel supports 
large, paged, sparse address spaces that are composed of memory 
objects.  Each memory object is managed by a memory pager, a task 
outside the kernel that provides the backing storage for the pages of 
the memory object.  Address spaces are manages by mappings or
allocating memory objects within them.  Mach manages memory protection
and sharing on a memory object basis in an abstract way, independent 
of any particular processor address translation hardware.  In 
particular, Mach makes heavy use of copy-on-write to permit programs 
to share memory objects without copying large numbers of pages when a 
new address space accesses the memory object.  New copies of the page 
are created only when a program in one of the address spaces updates 
them.  When Mach takes a page fault in a memory object and does not 
have the page in memory or when it has to remove pages from memory due
to the requirements of other programs executing on the machine, it 
notifies the pager for the memory object in which the fault occurs 
using the IPC mechanism.  It is then up to the pager, an application 
server, to determine how to provide or to store the data.  This 
permits the system to define different semantics for the memory 
objects based on the needs of the programs that use them.  The default
pager shown in the diagram provides a pager for the memory objects
that do not require anything other than the usual semantics of
virtual memory.                                                   (4)

   Mach manages the execution environments for the programs by 
providing multiple tasks and threads.  Each Mach task has it's own 
address space, or map.  It assigns memory objects that the task has 
mapped to ranges of addresses within the address space.  The task is 
also the unit of resource allocation and protection in Mach with tasks
being assigned capabilities and access rights to the IPC facilities of
the system.  In order to support parallel execution by a program 
within a single address space, Mach separates the execution 
environment from the actual running of streams of instructions.  The 
streams of computation including the processor resources needed to 
support them are called threads.  Thus, a program can be loaded into a
Mach task and can be executed in several different places in the code 
at the same time on a multiprocessor or parallel machine.  This can 
result in better application performance.

   The Mach IPC system provides the basic mechanism that allows 
threads running in different tasks to communicate with each other. 
The IPC system supports the reliable delivery of messages on ports. 
Ports are protected channels between tasks.  Each task that uses a 
port is assigned a set of rights to that port.  These rights may be 
different for different tasks.  Only one task can receive on any port 
although any thread within the task may execute the receive operation. 
One or more tasks may hold rights to send to a port.  The kernel 
permits tasks to use the IPC system to transfer port rights among 
themselves.  It also provides a high performance way of passing large 
data areas in messages.  Rather than copying the data, the message 
contains a pointer to it: this is called a pointer to out-of-line 
data.  When the kernel transfers the message from the sender to the 
receiver, it makes the memory being passed disappear form the sender's
address space and appear in the receiver's address space.  One 
interesting aspect of the Mach is that the microkernel itself is 
structured internally as a task with threads, and most of the Mach 
system services are implemented as IPCs to the kernel rather than as 
direct system calls.

   In order to support I/O and device access, the microkernel provides 
access to I/O resources such as memory-mapped devices, I/O ports and 
direct memory access (DMA) channels, as well as the ability to reflect
interrupts to device drivers executing in user space.  Mach has 
services that let privileged programs acquire ownership of devices: 
these programs are typically device driver servers running as 
applications as shown in the diagram.  Since the microkernel must 
field all interrupts (because interrupts are typically delivered into 
the privileged state of the computer and in order to maintain the 
integrity of the system), it has logic that determines whether it 
should process the interrupt or reflect it to a server.  If the 
interrupt is to be reflected to an application, it must have 
registered with the kernel and contain code that waits for the kernel 
to reflect the interrupt.  When the interrupt is reflected, a thread 
in the application begins running to process the interrupt.
                                                                  (5)

   Mach's host and processor set features provide two related sets of 
functions that are needed if application programs are to provide most 
operating system services.  The host features return information about
the processor complex running the system and provide certain system 
management functions such as time, date, and system stop and restart. 
The processor set features are used on multiprocessor machines to 
group processors in classes.  These classes permit a parallel 
application to execute multiple threads simultaneously on different 
processors in the same machine so that true parallel execution occurs.

   The diagram also shows that Mach carefully splits its 
implementation into code that is completely portable from machine to 
machine and code that is dependent on the particular machine on which 
it is executing.  It also segregates the code that depends on devices 
into the device drivers: however, the device driver code, while 
device-dependent, is not necessarily dependent on the processor 
architecture.  Using multiple threads per task, Mach provides an 
application environment that permits the use of multiprocessors 
without requiring that any particular machine be a multiprocessor: on 
uniprocessors different threads simply run at different times.  All of
the support needed for multiprocessors is concentrated into the 
relatively small and simple microkernel.


OPERATING SYSTEMS AS APPLICATION SERVERS

   Sitting immediately on top of the microkernel are a number of 
application servers that provide general purpose system services. 
These programs are called personality-independent servers since they 
depend only on the microkernel and themselves.  Among the personality-
independent servers are the default pager, the hardware resource 
manager that assigns device hardware to device drivers, the master 
server that loads other personality-independent servers into memory, 
the the device drivers and possibly a general purpose file server. 
The microkernel and the personality-independent servers can be 
packaged as a product separate from any operating system.

   Using the services of the microkernel and the 
personality-independent servers, the dominant personality provides a 
standard operating system such as AIX.  Since the dominant personality
is an application server, it is possible to have multiple servers for 
different personalities executing programs written to different 
operating systems running on the machine at the same time.  However, 
there are some operating system services such as error message 
translation that are not provided in the personality-independent 
servers.  Since it is best not to duplicate such services, the dominant
personality provides them not only to its client applications but also
to any other personalities running on the machine.  For instance, the 
low-end AIX implementation on Mach currently runs as a dominant 
personality and supports an environment for running DOS programs
as a secondary personality.                                       (6)


BENEFITS FOR DEVELOPERS AND USERS

   Mach represents enabling technology for system developers rather 
than a revolution for the end user.  The modular, scalable, portable 
environment of Mach permits the system developer to create new system 
functions as applications rather than within the kernel.  It lets 
hardware developers write device drivers as applications and makes 
porting the system to new platforms a relatively small and very well- 
understood job.  But there are some real benefits to the end user. 
The customer now has a choice: applications written to different 
operating systems can execute together on the same machine permitting 
the use of exactly the right set of programs for a particular business
or organization.  Mach reduces the time it takes system developers to 
create new software functions or to use new hardware functions, 
providing the end user with better technology more rapidly than in the
past.  Finally, Mach permits the end user to benefit from the 
emergence of parallel processing and the notions of object-oriented 
programming by providing a system that allows applications to use 
parallelism and that breaks traditional operating systems up into 
modular pieces to which object-oriented implementation techniques can 
be applied.

Copyright IBM Corporation 1992 All Rights Reserved

AIX & PS/2 are registered trademarks of IBM Corporation
UNIX is a registered trademark of UNIX System Laboratories, Inc.
Intel386 & Intel486 are trademarks of Intel Corporation

Thanks to Fred Sawicki for supplying this document.

Transcribed by F. Robert Falbo   Internet: falbof@c3dt3.c3d.rl.af.mil


------------------------------ notes --------------------------------



















                                                                  (7)

Newsgroups: comp.os.os2.advocacy