Yang YU (yyu@cs.ucsd.edu)
Mon, 24 Apr 2000 23:55:04 -0700

1. The structuring of System using upcalls

Layring and upcalls
Arranging the various functions of a system into layers makes it
easier to code and modularize.
Usually, higher layers are clients of the services provided by lower
Sometimes, though, lower levels need to notify higher levels of
events (e.g., a packet arrives at the network interface);
this can be done with asynchronous IPC notification, but often the
application is actually synchronous, and the
asynchrony is just an artifact.
Use upcalls: higher levels pass handler functions into lower levels,
to be called when the lower level needs to notify the
higher level of something.

Multi-task modules:
Within a layer, procedures use shared memory guarded by monitor
locks to communicate across tasks. Such procedures
and their shared memory are called a multi-task module.
Communication is only passed between layers by means of procedure
calls, either downcalls or upcalls; one layer will
never directly call another layer in a different task.

Efficiency: syncronous subroutine calls are cheaper than
asynchronous signals,
Generality: lower levels can "ask advice" of higher levels; the
lower levels can make smarter decisions this way
Information and implementation hiding: levels export only a
subroutine calling interface, which is easy to maintain,
Modularity: changes in decisions about how tasks are used do not
cause a great deal of the system to change, but usually
only one level.
Piggybacking in protocols: a single network packet often sends
information from multiple layers (e.g., "ACK" for
previous packet along with new data in reply). This is hard to do
if it is difficult for the layers to talk to each other, but
easy if downcalls and upcalls are performed.

2. On the Duality of Operating System Structures

Many Operating system designs can be placed into one of two
categories by how they use the notions of process and synchronization.
Most of the systems tends to be infavour of one of the two categories.
1. message-oriented system:
Relatively small, static number of big processes with explicit
message system with limited amount of sharing data.
2. procedure-oriented system
Large , rapidly changing number of small processes and a process
synchronization mechanism based on sharing data.
It is demonstrated in the paper that these 2 categories are duals. A
system that is constructed in one model can be
reconstructed in another one. The two are dual systems and logically
It is stated in the paper that neither model is inherently
preferable. The decision should be made on the machine structure and
hardware, not the application running on the system.

Two Models:
The two model are theoratic model and no real system precisely match
one of them.
Most real systems tend to have some subsystems that are like one
model while other subsystems behave like the other.
Most modern operating systems can be classified using the two
models. Or their subsystems could be.

Message Oriented System:
Characteristics of good design practice:
Facilities provided by this model:

Procedure Oriented System:
Facilities provided by this model:

Mapping between the two models:
Similarity between the programs:
Perservation of performance:

Yang Yu
Department of Computer Science and Engineering
University of California, San Diego