Chapters |
Tables |
Figures |
|
Chapter 1 |
[Table 1.1] Four basic read-write algorithms.
[Table 1.2] MPICH, PVM, MICO and POSIX threads used with C++.

|
[Figure 1.1] Typical architecture for a parallel and distributed program.
[Figure 1.2] A Simple PRAM.
[Figure 1.3] Decomposition of a single instruction.
|
|
Chapter 2 |
[Table 2-1] A matrix of the combinations of parallel and distributed
programming with hardware configurations.
[Table 2-2] Commonly found software architectures that support
parallel and distributed programming.
[Table 2-3] Six UML diagrams helpful for documenting multithreaded,
parallel and distributed programs.
|
[Figure 2-1] The three levels of parallelism that are possible within
a single computer program.
[Figure 2-2] The three levels of parallelism combined with the basic
parallel processor configurations.
[Figure 2-3] The deadlock situation between Task B and C.
|
|
Chapter 3 |
[Table 3-1]The process transitions with a brief description.
[Table 3-2] Common headers used for ps utility in the Solaris/Linux
environments.
[Table 3-3] The attributes preserved by the new process after its
process image has been replaced with a new process image.
[Table 3-4] Functions used to add file actions to the
posix_spawn_file_actions object.
[Table 3-5] Functions used to set and retrieve the individual
attributes contained in the posix_spawnattr_t structure.
[Table 3-6] The values for resource with a brief description
[Table 3-7] Information contained in struct rusage.
[Table 3-8] The macros in which the value of the exit status can be
evaluated.
|
[Figure 3-1] The address space of a process divided into the text,
data, and stack segments. This is the logical layout of a process.
[Figure 3-2] The contiguous virtual page frames mapped to pages in
physical memory.
[Figure 3-3] The operating system control tables. Each entry in the
process table stores represents a process in the system.
[Figure 3-4] The process states and transitions in the UNIX/Linux
environments.
[Figure 3-5] The multi-level priority queue in which each entry of the
dispatch array points to a ready queue of processes with the same
priority level.
[Figure 3-6] The behavior of the First-In-First-Out (FIFO) and Round-
Robin (RR) scheduling policies. The FIFO scheduling policy assigns
processes to a processor according to its arrival time in the queue.
The process runs until completion. RR scheduling policy assigns
processes using FIFO scheduling but when the time slice runs out the
process is placed at the back of the ready queue.
[Figure 3-7] Output of ps -f and ps -lf in the Solaris environment.
[Figure 3-8] Output of ps Tux in the Linux environment.
[Figure 3-9] A tree of processes. A process spawns two new processes
if a certain condition is met.
[Figure 3-10] Output of pstree -h in the Linux environment.
[Figure 3-11] A resource-allocation graph that shows which processes
holds resources and which processes are requesting resources.
[Figure 3-12] Possible scenarios of asynchronous and synchronous
processes.
[Figure 3-13] Approaches that can be used to divide a program up into
separate tasks.
[Figure 3-14]The stages of the render process.
|
|
Chapter 4 |
[Table 4-1] The similarities and differences between threads and
processes.
[Table 4-2] Advantages and disadvantages of threads.
[Table 4-3] The settable properties for the thread attribute object.
[Table 4-4] The thread models with a brief description.
[Table 4-5] The combinations of cancelabililty state and type with a
brief description.
[Table 4-6] POSIX system calls required to be cancellation points.
[Table 4-7] The conditions in which the scheduling policy and priority
functions may fail.
[Table 4-8] Systems variables and their corresponding symbolic
constants.
|
[Figure 4-1] The flows of control of a multithreaded process.
[Figure 4-2] Communication between threads of a single process and
communication between multiple process.
[Figure 4-3] Layout of a process that contains multiple threads.
[Figure 4-4] Thread states and transitions.
[Figure 4-5] Scheduling with process and system scope threads in a
multiprocessor environment.
[Figure 4-6] The two approaches to the delegation model.
[Figure 4-7] Peer-to-peer thread model.
[Figure 4-8] The pipeline model.
[Figure 4-9] The producer-consumer model.
[Figure 4-10] The STMD and MTMD models of parallelism.
[Figure 4-11] The layout, output and flow of control for Example 4-1.
[Figure 4-12] Stack frames generated from a thread.
|
|
Chapter 5 |
[Table 5-1] Semaphore types defined by the POSIX standard and their
use by threads and/or processes.
[Table 5-2] The pthread_mutex_t functions.
[Table 5-3] The pthread_mutex_t attribute object functions.
[Table 5-4] Read-write lock operations.
[Table 5-5] Attribute object functions for pthread_rwlock_t.
[Table 5-6] Part of the decision table for Example 5-3.
[Table 5-7] The functions for the pthread_cond_t that implement
condition variables operations.
[Table 5-8] The functions of the attribute object for the condition
variable of type pthread_cond_t.
|
[Figure 5-1] Activity diagram for sorting, searching and displaying
the contents of a list.
[Figure 5-2] The synchronization relationships that can exist between
tasks A and B.
[Figure 5-3] The memory shared between threads and processes.
[Figure 5-4] EREW, CREW, ERCW, and CRCW access policies.
[Figure 5-5] Private and shared mutexes.
|
|
Chapter 6 |
[Table 6-1] The seven categories of PVM library routines.
[Table 6-2] Most commonly used architectures for the PVM environment.
[Table 6-3] The pvmpk routines.
|
[Figure 6-1] Four classic models of parallelism and the classification
of PVM programs.
[Figure 6-2] The XPVM task dialog.
[Figure 6-3] An example of a PVM hostfile.
[Figure 6-4] Some possible configurations for spawning PVM tasks.
[Figure 6-5] Some options available for MPMD configurations using the
PVM environment.
[Figure 6-6] Basic architecture of the PVM environment.
|
|
Chapter 7 |
[Table 7-1] Description of the types of testing used during the
software development process.
[Table 7-2] Contrasts the difference between the characteristics of
error and exception handling and the handling of unwanted conditions.
[Table 7-3] The runtime and logic error classes.
|
[Figure 7-1] A breakdown of some of the hardware components and layers
of software involved in failure.
[Figure 7-2] Contrasting the increase of distance between location of
tasks and the increase of the level of difficulty of error and
exception handling.
[Figure 7-3] Architecture of a simplified error handling component.
[Figure 7-4] The class relationship diagram for the runtime_error
family of classes.
[Figure 7-5.] The class relationship diagram for the logic_error
family of classes.
[Figure 7-6] A simple event diagram.
[Figure 7-7] A logic diagram showing three AND gates OR'ed with OR
gates to obtain the success of the system.
|
|
Chapter 8 |
[Table 8-1] IDL Keyword.
[Table 8-2] The basic IDL data types.
[Table 8-3] Some commonly used command line options to the IDL
compiler.
[Table 8-4] Some commonly found elements in an Implementation
Repository.
[Table 8-5] Common trader programming terms.
[Table 8-6] Common types of software servers.
|
[Figure 8-1] The logical structure and distribution of objects in the
producer-consumer, peer-to-peer, blackboard and multiagent models.
[Figure 8-2] A high-level breakdown of some component contained in an
IOR under the IIOP protocol.
[Figure 8-3] The simplified overview of the steps that an ORB uses on
behalf of a local object.
[Figure 8-4] Components and steps used by a CORBA consumer program.
[Figure 8-5] Basic components of a CORBA producer program.
[Figure 8-6] The logical structure of a bare bones CORBA application.
[Figure 8-7] Several different naming contexts.
[Figure 8-8] An alternative representation of the naming graph.
[Figure 8-9] Configuration possibilities between POAs and servants.
[Figure 8-10] A simple web services configuration using CORBA
components.
[Figure 8-11] Basic architecture of a CORBA-based client/server
application that makes requests of traders.
[Sidebar-Figure 8-1] A simple vehicle semantic network.
|
|
Chapter 9 |
[Table 9-1] Routines used to work with communicators.
[Table 9-2] The different types of polymorhpism that may be used to
simplify MPI tasks.
[Table 9-3] The MPI send and receive functions and their prototypes.
|
[Figure 9-1] A MPI program.
[Figure 9-2] The vehicle class family hierarchy.
[Figure 9-3] UML class diagram for iostream family classes.
|
|
Chapter 10 |
[Table 10-1] The properties for attributes and operations with a brief
description.
[Table 10-2] Some of the stereotypes that can be applied to
dependencies.
[Table 10-3] Some of the stereotypes and constraints that can be
applied to generalizations.
[Table 10-4] Some of the stereotypes, constraints and adornments that
can be applied to associations.
[Table 10-5] Some of the dependency, generalization and association
relationships that can be depicted using UML notation and symbols.
[Table 10-6] The parts of a state.
[Table 10-7] The parts of a transition.
|
[Figure 10-1] The various ways to represent a class.
[Figure 10-2] Mutiple instances of a class represented graphically and
using multiplicy notation.
[Figure 10-3] Two ways attributes and services can be organized in a
class diagram.
[Figure 10-4] The ways to represent a bound and unbound template
class.
[Figure 10-5] Ways to represent an interface class.
[Figure 10-6] A collaboration diagram for a course adviser system.
[Figure 10-7] Collaboration diagram using sequence numbers.
[Figure 10-8] An active object and class.
[Figure 10-9] A collaboration diagram of static and active objects in
the course adviser system.
[Figure 10-10] A sequence diagram of some of the objects involved in
the course adviser system.
[Figure 10-11] The decision symbol used in determining whether a
knowledge source should be constructed.
[Figure 10-12] An example of forking and joining from or to the
synchronization bar.
[Figure 10-13] An activity diagram with swimlanes showing a sequence
of actions in the course advisor system.
[Figure 10-14] State diagram for processes.
[Figure 10-15] The general structure of a state with an exit action,
entry action, do activity and self and internal transitions.
[Figure 10-16] State diagram for the blackboard object.
[Figure 10-17] Approaches to show the location of a component in a
distributed system.
[Figure 10-18] A deployment diagram using packages.
[Figure 10-19] Packages used in the course adviser system.
|
|
Chapter 11 |
[Table 11.1] Types of object-oriented classes with a brief
description.
[Table 11.2] Some of the fundamental differences between mutexes and
semaphores.
[Table 11.3] The three types of buffer classes and a brief
description.
[Table 11.4] The set of operations available on the ostream_iterator.
|
[Figure 11.1] The relationship between threads, PVM tasks, event queue
and the pvm_stream class within a PVM program.
[Figure 11.2] The class diagram for our user-defined x_queue class.
[Figure 11.3] The class relationships between rw_mutex, mutex,
synchronization_variable and runtime_error classes.
[Figure 11.4] The class diagram showing the relationship between the
major classes in the iostream class library and the class diagram for
the pvm_stream class.
[Figure 11.5] The interaction between the threads, the pvm_stream
class and the pvm_send and pvm_receive buffers.
[Figure 11.6] The components used to support the TaskStream and
MyColors objects.
[Figure 11.7] Class diagram for the major components of the iostream
class.
[Figure 11.8] The class diagrams for the fstream family of
classes.
[Figure 11.9] The relationships between ifstream and ofstream objects,
pipe and the inserter and extractor when the iostreams is used for
interprocess communication.
[Figure 11.10] The relationship between the I/O iterators and the
iostream classes.
[Figure11.11] The basic structure of the agent_framework class and how
it relates to blackboard.
|
|
Chapter 12 |
[Table 12-1] Five major categories of agents.
[Table 12-2] State access policies.
[Table 12-3] Tables for descriptions of the most basic inference
implementation techniques.
[Table 12-4] How the operators are mapped to logical operators.
|
[Sidebar Figure 12-1] Rules of inference taken from the back inside
cover of COPI symbolic reasoning.
[Figure 12-1] Logical layout of an agent class.
[Figure 12-2] UML class diagram for trip_announcement class and the
performance_statement class.
[Figure 12-3] Simple overview of a logical agent cycle.
|
|
Chapter 13 |
[Table 13-1] Descriptions of the four types of parallel access used by
a model.
[Table 13-2] PVM group routines and their descriptions.
|
[Figure 13-1] Two memory configurations for the blackboard.
[Figure 13-2] The logical layout for a basic blackboard architecture.
[Figure 13-3] The logical layout of a knowledge source.
[Figure 13-4] Control configurations and their layers in the
blackboard architecture.
[Figure 13-5] UML activity diagram showing the synchronization of the
blackboard and the knowledge sources.
[Figure 13-6] Two architectures that can be used with the CORBA-based
blackboard and UNIX/Linux processes.
[Figure 13-7] Contrasts the three basic configurations for process
distribution for blackboards and knowledge sources.
[Figure 13-8] The exception and error level difficulty.
[Figure 13-9] The four knowledge sources may concurrently read and
write their section of the blackboard.
|
 |
 |
 |