Reviewer: Peter B. Danzig

Liskov uses program excerpts to illustrate how the Argus system exploits its programming language to create resilient, easily expressed, distributed programs. The paper walks the reader through the design of a distributed banking database, and serves as an excellent introduction to the author's Argus work. It is written for a general audience and includes references to many Argus papers and related work. The paper describes the tools of resilient programming: atomic actions, nested actions, locking, and recovery. It tersely illustrates nested atomic actions and lock propagation and warns that it has not solved the deadlock detection and avoidance problems inherent to locking. The two principal abstractions of Argus are guardians and actions. “An Argus guardian is a special kind of abstract object whose purpose is to encapsulate a resource or resources. It permits its resource to be accessed by means of special procedures, called handlers.” An Argus action is essentially a nested atomic transaction. Argus is unique because it provides atomic actions within a programming language. It is more general than database transaction processing systems because it operates on general objects within a programming language; it is not an interface to an underlying database. The paper is well written and shorter than previously published descriptions of Argus. It describes an important area of operating system research (see the companion papers in this issue for an overview of other current operating system research projects).