Cover V02, I04


Books: A User's Report

Elizabeth Zinkann

This month I examine a C++ book from the Addison-Wesley Professional Computing Series which deals more with programming techniques than with the language syntax; a book on high performance computing by Kevin Dowd of O'Reilly & Associates; and two UNIX System V system administration books from Prentice Hall's Open Systems Library System Administrator Collection.

C++ Strategies and Tactics
by Robert B. Murray
Addison-Wesley Professional Computing Series
ISBN 0-201-56382-7

Robert Murray's book explores techniques for programming in C++. It focuses on the language syntax only when describing the more complex concepts, such as inheritance. For these advanced subjects, a shaded sidebar provides a brief summary of the relevant rules. The book addresses both the novice and the intermediate C++ programmer and uses practical examples to demonstrate C++ concepts.

Chapter topics include "Abstraction Classes," "Handles," "Inheritance," "Multiple Inheritance," "Designing for Inheritance," "Templates," "Advanced Templates," "Reusability," "Exceptions," and "Moving Your Project to C++." In each chapter Murray explains the strategies that underlie different methods of programming C++. He describes tactics that will make your code more efficient and identifies possible traps that could lead to hazardous procedures.

The chapter I found most interesting addresses abstraction. The discussion outlines five concepts essential to any program design, no matter what the language. Murray not only states these precepts, but also develops a simple example.

Each chapter consists of an introduction, the body of the section, a bulleted summary entitled "In Short," and a Questions section that could also serve as an exercise section. Each chapter also contains one or more "Review" sidebars. Chapter 5, for example, which deals with multiple inheritance, includes two reviews -- a two-page review of multiple inheritance and a three-page review of virtual base classes.

Murray presents the information in an easy and readable style. He introduces the subjects in a logical order, and when a review of the rules is required, he presents the review immediately. Murray complements his explanations of programming precepts with easy-to-follow exapmples. C++ Strategies and Tactics is well-written and well-documented with code segments and diagrams. In all, Murray has produced a book that will inspire you to read more about the subject. I highly recommend it.

High Performance Computing
by Kevin Dowd
O'Reilly & Associates, Inc.
ISBN 1-56592-032-5

Since computers are constantly changing, it is not always clear which purchase will provide the most benefits to the user, especially if the buyer and the user are two different people. The criteria to be used in selecting a computer depend on the intended use of the machine. In High Performance Computing, Kevin Dowd addresses these issues and describes how to extract the highest level of performance from your computer.

Dowd begins by discussing the pros and cons of programming in high-level languages, such as FORTRAN and C, versus assembly code. He also emphasizes the importance of recognizing when performance is optimized. In order to measure performance, a user should understand how to interpret standard industry benchmarks and also how to package his/her own benchmark.

Topics covered in the first part of the book include "What Is High Performance Computing?," "RISC Computers," "Memory," "What An Optimizing Compiler Does," "Clarity," and "Finding Porting Problems." Some of the most important of these are "Timing and Profiling," "Industry Benchmarks," and "Running Your Own Benchmarks." In "Timing and Profiling," Dowd examines the various types of measurements a user can apply to determine how well a program uses the computer's resources. This section helps you discover where the program dedicates most of its time, in the user or the kernel mode. (Dowd also presents a brief and comprehensive explanation of the UNIX time command, its results, and how to interpret those results accurately.) The author provides examples of profiling and also shows how to graphically represent different types of profiles. Industry benchmarks allow anyone to examine performance without doing any of the work themselves. However, the author stresses that these benchmarks have been compiled by other users, not by the vendors, which means that people who actually use the products are responsible for judging them. In "Running Your Own Benchmark," Dowd covers benchmark types and what to benchmark. He also includes a guideline to benchmarking in the form of a checklist.

Several interconnected chapters focus on code efficiency. These are "Eliminating Clutter," "Loop Optimization," "Clarity," and Appendix B, "How To Tell When Loops Can Be Interchanged."

High Performance Computing covers some difficult topics, ranging from new (and older) computer architectures to optimizing compilers and what they can accomplish, memory, benchmarking, timing, and profiling. The writing style is direct and contains examples where applicable. Most of the code examples appear in FORTRAN, but they are simple enough for a non-FORTRAN programmer to understand. In fact, this book can be read and understood even by nonprogrammers. The concepts remain the same. System administrators will particularly appreciate the chapters on RISC, memory, and finding porting problems.

Whether you are a system administrator, a programmer, a systems analyst, a buyer, or a manager, High Performance Computing can help you in your day-to-day duties. The usefulness of the book transcends not ony job descriptions, but also languages and operating systems. It belongs on everyone's shelf.

UNIX System V NFS Administration
Edited by Debra Herman
Prentice Hall Open Systems Library
ISBN 0-13-016411-9

This book addresses system administrators, particularly those who need to set up and maintain distributed file systems employing NFS on UNIX System V systems. Herman describes not only how to share resources on a network, but also how to mount remote resources from other systems. No matter what the individual configuration of the system may be, the author provides a chapter or series of chapters that specifically apply to that configuration. In the preface, Herman presents a brief, descriptive organization of the book's contents, displaying a road map that the reader may traverse to reach his/her intended destination.

Herman begins by introducing NFS file sharing and its use, then continues with a description of an NFS model. This is essentially a client/server model, in which the client machine accesses files resident on the server. To allow the client to share the resources available on the server, remote procedure calls (RPCs) are employed in the mounting process. Although the author allows for differences in UNIX systems and the corresponding differences in the system administrator's duties, she concludes the introduction with a generic checklist for maintaining machines with NFS.

From this point, Herman turns to using NFS, including installing NFS, the various ways of starting and stopping it, and sharing and unsharing resources. Optional ways of sharing and unsharing resources are covered later in the book. The editor also explains how to mount resources and how to extract information concerning shared resources or mounted file systems.

Herman describes the NFS daemons and includes a full chapter on the automount daemon as the concluding section on sharing and unsharing. She discusses problems and errors related to NFS and how to resolve them. In another section, she details the uses of the sysadm command and shows how to create an NFS menu interface to more easily administer the NFS system. Some of the same attributes that make NFS convenient also prevent it from being secure; Herman provides solutions for protecting vulnerable NFS systems.

Other chapters include "The Network Lock Manager," "Remote Services," and "The NIS Service." "The Network Lock Manager" explains a method of control management that prevents more than one person from altering a file at a time. "Remote Services" describes all of the different aspects of using remote machines: logging on to or from various machines, transferring data between machines, copying files from one machine to another, and more. "The NIS Service" outlines how to administer NIS, which is a distributed name service.

UNIX System V NFS Administration is a logical and readable book. Screens are presented as they will appear on a terminal and are boxed. Herman typically uses tree structures to diagram concepts, and shows the shared resource boxed within dotted lines. The text matches the figures very well, and as an additional aid, Herman includes a glossary that defines the terms used throughout the book. This book will benefit any system administrator interested in NFS.

UNIX System V
Performance Management

Edited by Phyllis Eve Bregman and Sally A. Browning
Prentice Hall Open Systems Library
ISBN 0-13-016429-1

Defining system performance as "a measure of how a computer system executes its tasks," Bregman and Browning set out to show how system performance applies to the system administrator. They present both the issues that face system administraotrs and possible means of resolving those issues.

The authors address different environments, telling how to analyze whether or not each is performing as efficiently as possible. Their chapter on filesystems discusses a range of filesystem types -- specifically, s5 (earlier versions of UNIX System V), ufs (BSD), and bfs (filesystem independent booting). A later chapter on communications explains rfs and nfs, which are both distributed filesystem types. In addition to communications, Bregman and Browning review the uses of different storage devices and explain how to monitor system activity. The chapter "Performance Tools" includes information not covered in an earlier chapter on System Performance Analysis Utilities (SPAU). A section entitled "Configuring UNIX" not only explains how to reconfigure a UNIX system, but also specifies the circumstances under which reconfiguration might be required.

The main body of the book concludes with a quick reference guide that tells where instructions for various tasks can be found. There are two appendices, one on checking s5 filesystems, the other on checking ufs filesystems. The excellent glossary contains elementary as well as advanced terms.

Bregman and Browning have produced an unusual book that combines system administration and system performance issues: in fact, the book could easily serve as an advanced administration textbook. UNIX System V Performance Management deserves to be read by advanced users as well as system administrators.

About the Author

Elizabeth Zinkann has been involved in the UNIX and C environments for the past 10 years. She is currently a UNIX and C consultant, and one of her specialities is UNIX education. In addition to her computer science background, she also has a degree in English.