summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc712.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc712.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc712.txt')
-rw-r--r--doc/rfc/rfc712.txt955
1 files changed, 955 insertions, 0 deletions
diff --git a/doc/rfc/rfc712.txt b/doc/rfc/rfc712.txt
new file mode 100644
index 0000000..8a2b481
--- /dev/null
+++ b/doc/rfc/rfc712.txt
@@ -0,0 +1,955 @@
+
+
+
+
+
+
+Network Working Group J.E. Donnelley
+Request for Comments: 712 Lawrence Livermore Laboratory
+ February 1976
+
+
+ A Distributed Capability Computing System (DCCS)
+
+ This paper was prepared for submission to the international
+ Conference on Computer Communication, ICCC-76, August 3, 1976,
+ Toronto, Canada.
+
+ This is a preprint of a paper intended for publication in a journal
+ of proceedings. Since changes may be made before publication, this
+ preprint is made available with the understanding that it will not be
+ cited without the permission of the author.
+
+ The work reported in this paper was supported in part under contract
+ #EPA-IAG-D5-E681-DB with the Environmental Protection Agency and in
+ part under contract #[RA] 76-12 with the Department Of
+ Transportation. The report was prepared for the U.S. Energy Research
+ and Development Agency under contract #W-7405-Eng-48.
+
+A Distributed Capability Computing System (DCCS)
+
+ This paper describes a distributed computing system. The first
+ portion introduces an idealized operating system called CCS
+ (Capability Computing System). In the second portion, the DCCS
+ protocols are defined and the processes necessary to support the DCCS
+ on a CCS are described. The remainder of the paper discusses
+ utilizing the DCCS protocol in a computer network involving
+ heterogeneous systems and presents some applications. The
+ applications presented are to optimally solve the single copy problem
+ for distributed data access and to construct a transparent network
+ resource optimization mechanism.
+
+The Capability Computing System (CCS)
+
+ The CCS, though not exactly like any existing operating system, is
+ much like some of the existing capability list (C-list) operating
+ systems described in the literature [1-7]. Many of the features of
+ the CCS come from a proposed modification to the RATS operating
+ system [1-3].
+
+ In the documentation for most computer systems there are many
+ references to different types of objects. Typical objects discussed
+ are: files, processes, jobs, accounts, semaphores, tasks, words,
+ devices, forks, events, etc. etc.. One of the intents of C-list
+
+
+
+
+Donnelley [Page 1]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+ systems is to provide a uniform method of access to all such objects.
+ Having all CCS objects accessed through a uniform mechanism allow
+ DCCS to be implemented in a type independent manner.
+
+ The CCS is a multiprocessing system supporting an active element
+ called a process. For most purposes, the reader's intuitive notion
+ of what a process is should suffice. A process is capable of
+ executing instructions like those in commercially available
+ computers. It has a memory area associated with it and has some
+ status indicators like "RUN" and "WAIT". In C-list systems, however,
+ a process also has a capability list (C-list). This list is an area
+ in which pointers to the objects that the process is allowed to
+ access are maintained. These pointers are protected by the system.
+ The process itself is only allowed to use its C-list as a source of
+ capabilities to access and as a repository for capabilities that it
+ has been granted. Figure 1 diagrams some typical processes that are
+ discussed later. In the diagrams, the left half of a process box is
+ the C-list and the right half is the memory.
+
+ The key to the uniform access method in the CCS is the invocation
+ mechanism. This is the mechanism by which a process makes a request
+ on a capability in its C-list. An invocation is closely analogous to
+ a subroutine call on most computer systems. When a request is made,
+ the invoking process passes some parameters to a service routine and
+ receives some parameters in return.
+
+ There are, however, several major differences between the invocation
+ mechanism and the usual subroutine calling mechanisms. The first
+ difference is that the service routine called is generally not in the
+ process's memory space. The service routine is pointed to by the
+ protected capability and can be implemented in hardware, microcode,
+ system kernel code, in another arbitrary process, or, as we shall see
+ in the DCCS, in another computer system. In Fig. 1. for example, the
+ serving process is servicing on invocation on the semaphore
+ requestor.
+
+ A second difference is that, when invoking a capability, other
+ capabilities can be passed and returned along with strictly data
+ parameters. In the DCCS, capabilities and data can also be passed
+ through a communication network.
+
+ The final important distinction of the invocation mechanism can best
+ be illustrated by considering the analogy to the outside teller
+ windows often seen at banks. These windows usually contain a drawer
+ that can be opened by the customer and teller are not both. Except
+ for this drawer, the customer and teller are physically isolated. In
+ the case of the invocation mechanism, the invoking process explicitly
+ passes certain capabilities and information to the service routine
+
+
+
+Donnelley [Page 2]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+ and designated C-list locations and memory areas for the return
+ parameters. Except for these parameters, the invoking process and
+ the serving routine are isolated. In the DCCS, this protection
+ mechanism is extended throughout a network of systems.
+
+ In the CCS, invoking a capability is the only way that a process can
+ pass or receive information or capabilities. All of what are often
+ referred to as system calls on a typical operating system are
+ invocations on appropriate capabilities in the CCS. A CCs C-list
+ envelopes its process. This fact is needed in order to transparently
+ move processes as described in the second application on network
+ optimization (page 23).
+
+CCS Capabilities
+
+ To build the DCCS, we will assume certain primitive capabilities in
+ the CCS. The invocations below are represented for simplicity rather
+ than for efficiency or practicality. In practice, capabilities
+ generally have more highly optimized invocations with various error
+ returns, etc.. To characterize a capability, it suffices to describe
+ what it returns as a function of what it is passed. In the notation
+ used below, the passed parameter list is followed by a ">" and then
+ the returned parameter list. In each parameter list the data
+ parameters are followed by a "" and then the capability parameters.
+
+ 1. File Capability
+
+ a. "Read", index; > data;
+
+ "Read" the data at the specified index. "Read" and the index
+ are passed. Data is returned.
+
+ b. "Write", index, data; > ;
+
+ Write the data into the area at the specified index. "Write",
+ the index, and the data are passed. Nothing is returned.
+
+ 2. Directory Capability
+
+ a. "Take", index; > ; capability
+
+ "Take" the capability from the specified index in the
+ directory. "Take" and the index are passed. The capability is
+ returned.
+
+
+
+
+
+
+
+Donnelley [Page 3]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+ b. "Give", index; capability> ;
+
+ "Give" the capability to the directory at the index specified.
+ "Give" and the index are passed information. The capability is
+ also passed. Nothing is returned.
+
+ c. "Find"; capability> result, index;
+
+ A directory, like a process C-list, is a repository for
+ capabilities. The first two invocations are analogous to the
+ two file invocations presented except that they involve
+ capability parameters moved between directory and C-list
+ instead of between file and memory. The last invocation
+ searches the directory for the passed capability. If an
+ identical capability is found, "Yes" and the smallest index of
+ such a capability are returned. Otherwise "No" and 0 are
+ returned.
+
+ 3. Nil Capability
+
+ When a directory is initially created, it contains only nil
+ capabilities. Nil always returns "Empty".
+
+ 4. Process Capability
+
+ a. "Read", index; > data;
+
+ b. "Write", index, data; > ;
+
+ c. "Take", index; > ; capability
+
+ d. "Give", index; capability> ;
+
+ e. "Find"; capability> result, index;
+
+ f. "Start"; > ;
+
+ g. "Stop"; > ;
+
+ The a. and b. invocations go to the process's memory space. C., d.,
+ and e. go to its C-list. F. and g. start and stop process execution.
+
+The CCS Extension Mechanism
+
+ There is one more basic capability mechanism needed for the CCS
+ implementation of the DCCS. This mechanism allows processes to set
+ themselves up to create new capabilities that they can service. Such
+
+
+
+
+Donnelley [Page 4]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+ mechanisms differ widely on existing C-list systems. A workable
+ mechanism is described. Another primitive capability is needed to
+ start things off:
+
+ 5. Server Capability
+
+ a. "Create requestor", requestor number; > ; requestor
+
+ b. "My requestor?"; capability> answer, requestor number;
+
+ c. "Wait"; > reason, requestor number, PD; request
+
+ Two capabilities were introduced above besides the server, the
+ requestor and request capabilities. These capabilities will be
+ described as the invocations on a server are described.
+
+ The first invocation creates and returns a requestor capability. The
+ number that is passed is associated with the requestor. The
+ requestor capability is the new capability being created. Any sort
+ of invocation can be performed on a requestor. This is their whole
+ reason for existence. A process with a server capability can make a
+ requestor look like any kind of capability.
+
+ The "My requestor?" invocation can be used to determine if a
+ capability is a requestor on the invoked server, it returns either:
+
+ "Yes", requestor number; or "No",0;
+
+ The last invocation "Wait"s until something that requires the
+ server's attention happens. There are two important events that a
+ service routine needs to be notified about. If the last capability
+ to a requestor is overwritten so that the requestor cannot again be
+ invoked until a new one is created, the "wait" returns:
+
+ "Deleted", requestor number, 0; Nil
+
+ The last two parameters, 0 and Nil, are just filler for the returned
+ PD and request (see 5c). When a "wait" returns "Deleted", the
+ service routine can recycle any resources being used to service the
+ numbered requestor (e.g., the requestor number).
+
+ The most important event that causes a "wait" to return is when one
+ of the requestors for the server is invoked. In this case the server
+ returns:
+
+ "Invoked", requestor number, PD; request
+
+
+
+
+
+Donnelley [Page 5]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+ The third parameter, labeled PD, stands for Parameter Descriptor. It
+ describes the number of each kind of parameter passing each way
+ during a requestor invocation. Specifically, it consists of four
+ numbers: Data bits passed, capabilities passed, data bits requested,
+ and capabilities requested.
+
+ The last parameter received, the request capability, is used by the
+ serving process to retrieve the passed parameters and to return the
+ requested parameters to the requesting process. Accordingly, it has
+ the following invocations:
+
+ 6. Request Capability
+
+ a. "Read parameters"; > {The passed parameters
+
+ b. "Return", {The return parameters}> ;
+
+ The "Return" invocation has the additional effect of restarting the
+ requesting process.
+
+ One thing that should be noted about the server mechanism is that
+ invocations on a server's requestors are queued until the server is
+ "wait"ed upon. This is one reason that a request is given a separate
+ capability. The serving process can, if it chooses, give the request
+ to some other process for servicing, while it goes back and waits on
+ its server for more requests. The corresponding situation in the
+ outside bank window analogy would be the case where the teller gives
+ the request to someone else for service so that the teller can return
+ to waiting customers. The request capability points back to the
+ requesting process so that the return can be properly effected.
+
+ A sample service, that of the well known semaphore [8] service
+ routine keeps a table containing the semaphore values for each
+ semaphore that it is servicing. It also keeps a list of queued
+ requests that represent the processes that become hung in the
+ semaphore by "P"ing the semaphore when it has a value less than or
+ equal to zero. The invocations on a semaphore are:
+
+ 7. Semaphore
+
+ a. "P"; > ;
+
+ b. "V"; > ;
+
+ A diagram and flow chart for the semaphore serving process is given
+ in Figures 1. and 2. The flow charts are given include most of the
+ basic capability invocations, but do not include detailed
+ descriptions of table searches. The table structure for the
+
+
+
+Donnelley [Page 6]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+ semaphore service routine includes entries for each supported
+ semaphore. Each entry contains the semaphore value and a link into a
+ list of pointers to the requests hung in the semaphore (if any).
+
+ The most important feature of the server mechanism is that, by using
+ it, the functioning of any capability can be emulated.
+
+ This property, similar to the insertion property discussed in [9], is
+ the cornerstone of the DCCS. The basic idea of the emulation is to
+ have the server "wait" for requests and pass them on to the
+ capability being emulated. Such emulation of a single capability is
+ flow charted in Figure 3. The emulation flow charted is an overview
+ that doesn't handle all situations correctly. For example, a
+ capability may not return to invocations in the same order that they
+ are received. These situations also appear in the DCCS, so their
+ handling will be discussed there rather than here. It is important
+ to note that, except for delays due to processing and communication,
+ the emulation done in the DCCS is exact.
+
+The DCCS Implementation
+
+ The DCCS will initially be described on a network of CCS systems. We
+ will assume that there exists a network capability:
+
+ 8. Network Capability
+
+ a. "Input"; > Host no., message;
+
+ b. "Output", Host no., message > ;
+
+ It is assumed that the "Output" invocation returns immediately
+ after queuing the message for output and that the "input"
+ invocation waits until message is available.
+
+ For pedagogical purposes, the description of the DCCS will be broken
+ into two parts. First a brief overview of the important mechanisms
+ will be given. The overview will gloss over some important issues
+ that will be resolved individually in the more complete description
+ that follows the overview.
+
+ The intent of the DCCS is to allow capabilities on one host to be
+ referenced by processes on other hosts having the appropriate
+ capabilities. To do this, each host keeps a list of capabilities
+ that it supports for use by other hosts. Each host also supports a
+ server, which gives out requestors that are made to appear as if they
+ were the corresponding capability supported by the remote host. When
+ one of these emulated requestors is invoked, its parameters are
+ passed by the emulating host through the network to the supporting
+
+
+
+Donnelley [Page 7]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+ host. The supporting host then sees to it that the proper capability
+ is invoked and passed the parameters. When the invoked parameters
+ are passed back through the network to the emulating host. The
+ emulating host then returns the return parameters to the requesting
+ process.
+
+ For example, let us take the "Read" request on a file diagrammed in
+ figure 4. When the emulated file (a requestor) is invoked, the
+ emulating process receives "invoke", requestor number, PD; request.
+ The requestor number that is returned is actually a descriptor
+ consisting of two numbers: Host number, capability number. These
+ descriptors are called Remote Capability Descriptors (RCDs). An RCD
+ identifies a host and a capability in the list of capabilities
+ supported by that host. After receiving a request, the emulating
+ process reads the parameters passed by the requesting process and
+ sends them along with the Parameters Descriptor to the remote host in
+ an "invoke" message.
+
+ When the remote host receives this information, it passes the
+ parameters to the supported file capability by invoking it and
+ specifies the proper return parameters as noted in the Parameter
+ Descriptor. When the invoked file return parameters, the returned
+ data is passed back through the network to the emulating host in a
+ "Return" message. The returned data is then returned to the
+ requesting process by performing a "Return" invocation on the request
+ capability initially received by the emulating host. When the
+ requesting process is awakened by the return, it will appear to it
+ exactly as if a local file had been invoked.
+
+ This works fine when the parameters being passed and returned consist
+ simply of information, but what happens when there are capabilities
+ involved? In this case the routines use the existing remote
+ capability access mechanism and pass the appropriate descriptor. As
+ an example, the "Take" invocation on a directory is diagrammed in
+ figure 5. The only essential difference is the fact that a
+ capability has to be returned. When the capability is returned by
+ the invoked directory (or whatever it really is), the supporting host
+ allocates a new slot in its supported capability list for the
+ capability and returns a new descriptor to the emulating host. When
+ the emulating host receives the descriptor, it creates a new
+ requestor with the returned descriptor as its requestor number and
+ returns the requestor to the invoking process. The requestor so
+ returned acts as the capability taken from the remotely accessed
+ directory and can be invoked exactly as if were the real capability.
+
+ One important thing to notice about this mechanism is that neither
+ the emulating host nor the supporting host need to have any idea what
+ kind of capabilities they are supporting. The mechanism is
+
+
+
+Donnelley [Page 8]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+ independent of their type. Also important is the fact that neither
+ host need trust the other host with anything more than the
+ capabilities that it has been rightfully granted. Even the DCCS
+ processes themselves need only be trusted with the network
+ capabilities and with the supported capabilities. Finally, note that
+ no secret passwords which might be disclosed are needed for security.
+ The DCCS directly extends the CCS protection mechanisms,
+
+ A more complete description of the DCCS will now be given. To avoid
+ unnecessary complication, however, several issues such as error
+ indications, system restart and recovery, network malfunctions,
+ message size limitations, resource problems, etc. are not discussed.
+ These issues are not unique to the DCCS and their solutions are not
+ pertinent here.
+
+ As noted earlier, the complete DCCS must address several issues that
+ were glossed over in the initial overview. As these issues are
+ discussed, several message types are introduced beyond the "Invoke"
+ and "Return" messages discussed in the overview. The formats for all
+ the DCCS messages are summarized in figure 6.
+
+ A. Timing -
+
+ Invocations can take a very long time to complete. We saw an
+ example in the semaphore capability earlier. An even more graphic
+ example might be a clock capability that was requested to return
+ nothing AFTER 100 years had passed. Clearly we don't want to have
+ the emulating process wait until it receives a "Return" message
+ from the remote host before servicing more invocations.
+
+ What is done in the emulating host is to add the request
+ capability to a list of pending requests after sending the
+ "invoke" message to the supporting host (this is somewhat like the
+ semaphore example earlier). The emulator can then go back and
+ wait for more local requests.
+
+ There is a similar problem on the supporting side. We don't want
+ the process waiting on the network input capability to simply
+ invoke the supported capability and wait for return. What it must
+ do is to set up an invocation process to actually invoke the
+ supported capability so that pending network input can be promptly
+ serviced. The invoking process must then return the parameters
+ after it receives them.
+
+ These additional mechanisms add complication of multiple requests
+ active between hosts. These requests are identified by a Remote
+ Request Number (RRN). The RRN is an index into the list of
+ pending requests.
+
+
+
+Donnelley [Page 9]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+ B. Loops -
+
+ If host A passes a capability to host B, and B is requested to
+ pass the requestor that is being used to emulate the capability
+ back to host A, should B simply add the requestor to its support
+ list and allow A to access it remotely? If it did, when the new
+ requestor was invoked on A, the parameters would be passed to B
+ where they would be passed to the requestor by the invoking
+ process. Invoking the requestor would cause the parameters to be
+ passed back through the network to A where the real capability
+ would finally be invoked. Then the return parameters would have
+ to go through the reverse procedure to get back A via B. This is
+ clearly not an optimal mechanism,
+
+ The solution to this problem makes use of the "My requestor?"
+ invocation on a server capability described in 5b. When B checks
+ a capability that is to be returned to A with the "My requestor?"
+ invocation and finds that the capability is one of its requestors
+ with a requestor number indicating that it is supported on A, it
+ can simply return the requestor number (recall that is this is
+ really a Remote Capability Descriptor, RCD) to A, containing the
+ fact that the capability specified is one that is local to A and
+ giving A the index to the capability in its supported capability
+ list.
+
+ C. Security
+
+ The mechanism presented in B. brings up something of a security
+ issue. If B. tries to invoke a capability in A's supported list,
+ should A allow B access without question? If it did, any host on
+ the network could maliciously invoke any capability supported by
+ any other host. To allow access only if it has been granted
+ through the standard invocation mechanism, each host can maintain
+ a bit vector indicating which hosts have access to a given
+ capability. If a host does receive an invalid request, it is an
+ error condition.
+
+ D. Indirection
+
+ There is an additional twist on a Loop problem noted in B.. This
+ variation comes up when A passes a capability to B who then wants
+ to pass it to C. Here again B may unambiguously specify which
+ capability is to be passed by simply sending the Remote Capability
+ Descriptor (RCD) that is knows it by. The RCD indicates that the
+ capability, however, A would probably not believe that C should
+ have access to it.
+
+
+
+
+
+Donnelley [Page 10]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+ B must tell A. "1, who have access to your 1'th capability, want
+ to grant it to host C". To do this, another message type is used.
+ The "Give" message specifies the supported capability and the host
+ that it should be given to (refer to figure 6). Here again,
+ giving away a capability that you don't have is an error
+ condition.
+
+ E. Acknowledgement -
+
+ There is one last problem with the "Give" message. If B sends the
+ "Give" message to A and then continues to send the Remote
+ Capability Descriptor (RCD) to C, C may try to use the RCD before
+ the "Give" is received by A. For this reason, B must wait until A
+ has "ACK"nowledged the "Give" message before sending the RCD to C.
+ This mechanism requires that hosts queue un"ACK"nowledged "Give"s.
+ The format for an "ACK" is given in figure 6. This queueing may
+ be avoided for most "Give"s after the first for a given RCD, but
+ only at the cost of much additional memory and broadcasting
+ "Delete"s (See F. below).
+
+ F. Deletion -
+
+ If all the requestors on A for a given capability supported on B
+ are deleted. A may tell B so that B may:
+
+ a. Delete A's validation bit in the bit vector for the specified
+ capability and
+
+ b. If there are no hosts left that require support of the given
+ capability, the capability may be deleted from the supported
+ capability list.
+
+ This function requires a new "Delete" message.
+
+ Figure 6 is a summary of the message formats. Figure7-11 flow chart
+ the complete DCCS. In the flow charts, abbreviations are used to
+ indicates the directories:
+
+ CSL - Capability Support List
+
+ RRL - Remote Request List
+
+ IPL - Invocation Process List
+
+ The table manipulation is not given in detail. Three tables are
+ needed. The first is associated with the CSL and contains the bit
+ vectors indicating access as noted in C. above. The second table is
+ associated with the RRL. It contains a host number for each active
+
+
+
+Donnelley [Page 11]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+ request. An attempted return on a request by a host other that the
+ requested host is an error. The final table is a message buffer
+ containing the pending "Invoke" and "Return" requests.
+
+ In order to avoid hazards in referencing the CSL and its table, a
+ semaphore called the CSLS is used. A message buffer semaphore, MBS,
+ is similarly used to lock the message buffer. For the RRL and IPL no
+ locks are needed with the algorithms given.
+
+Generalization and Application
+
+ To implement the DCCS, we assumed a network of CCS systems. The
+ specifications of the CCS were, however, very loose. For example, no
+ mention was made of instruction sets. Any CCS-like implementation
+ could use the mechanisms described herein to snare their objects. A
+ process passed to system with a different instruction set, for
+ example, could be used as an efficient emulator.
+
+ The most important generalization of the DCCS is to note that a given
+ implementation has no idea what kind of host it is talking to over
+ the network. Any sort of host could implement a protocol using the
+ messages given. For example, a single user system might allow its
+ user to perform arbitrary invocations on remote capabilities and keep
+ a table of returned capabilities. Such a system might also support
+ some kind of standard terminal capability that could be given to
+ remote processes. On a multi-user system, similar functions could be
+ performed for each user.
+
+ In some sense, any system implementing the DCCS protocol becomes a
+ C-list system. The single user system could, for example, set up
+ remote processes servicing remote server capabilities giving out
+ requestors to the single user system or any other systems. Returns
+ from invocations could appear on the single user's terminal by remote
+ invocation of the terminal capability, etc..
+
+ Implementing the DCCS on non-C-list systems is similar in some
+ respects to what happened with some host to host protocol
+ implementations on the Department Of Defense's ARPA network [10].
+ The ARPA network host to host protocols allows a process on one
+ system to communicate with a process on another. Many of the ARPA
+ net protocol implementations had the effect of introducing local
+ process to process communication in hosts that formerly had none.
+
+
+
+
+
+
+
+
+
+Donnelley [Page 12]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+ Applications
+
+ I. Single Copy
+
+ The first application is a solution to what I have dubbed the
+ single copy problem for information resources. Whenever a
+ process receives information from a information resource, it
+ can only receive a local copy of the information. This fact is
+ apparent when the information come from a distributed data
+ base, but is also true in tightly coupled virtual memory
+ situations where information from shared memory must be copied
+ into local registers for processing. Once a process has a
+ local copy of some information, it might like to try to insure
+ that the information remains current, i.e., that it is the
+ single copy.
+
+ The traditional solution to this problem is to lock the
+ information resource with a semaphore before making a local
+ copy and then invalidate the local copy before unlocking the
+ resource. This solution suffers from the fact that, even
+ though other processes may not be requesting the copied data,
+ the data must be unlocked quickly just in case. This can
+ result in many needless copies being made.
+
+ What is needed is a mechanism for invalidating local copies
+ exactly when requests by other processes would force
+ invalidation. To offer such a mechanism, an information
+ resource can have, in addition to the usual reading and writing
+ invocations, the following:
+
+ "White lock", portion; > ; write notify
+
+ "RW lock", portion; >; RW notify
+
+ The important invocation on the notify capabilities is:
+
+ "Wait for notification"; > reason;
+
+ The basic idea is to allow a process to request that it be
+ notified if an attempt is being made to invalidate its copy.
+ If the copy is used for reading only, the process need only
+ request notifications of attempted modifications of the data
+ ("Write lock"). When a process is so notified, it is expected
+ to invalidate its copy and delete its write notify capability
+ to inform the information resource server that the pending
+ write access may proceed.
+
+
+
+
+
+Donnelley [Page 13]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+ In the read write lock case, the RW notify capability may also
+ be used for reading and writing the portion. Any other access
+ to the portion will cause notification. When notified, the
+ process with the RW notify capability is expected to write back
+ the latest copy of the information before deleting its RW
+ notify capability.
+
+ Space does not permit presenting more details for this
+ mechanism. The important fact to notice is that it permits an
+ information resource to be shared in such a way that, though
+ the information may be widely distributed, it is made to appear
+ as a single copy. This mechanism has important applications to
+ distributed data bases.
+
+ II. Network Resource Optimization
+
+ The application that probably best demonstrates the usefulness
+ of the DCCS is the sort of network optimization capability that
+ can be used to create at least the primitive capabilities
+ introduced earlier:
+
+ 9. Account Capability
+
+ a. "Create", type; >; capability
+
+ The passed type parameter could at least be any of: "File",
+ "Directory", "Process", or "Server". The appropriate type
+ of capability would be returned. The resources used for the
+ capability are charged to the particular account.
+
+ Now suppose that a user on one CCS system within a DCCS network
+ has remote access to account capabilities on several other CCS
+ systems. This user could create what might be called a super
+ account capability to optimize use of his network resources.
+ The super account capability would actually be a requestor
+ serviced by a process with optimization desired would be
+ completely under user control, but some of the more obvious
+ examples are presented:
+
+ 1. Static Object Creation Optimization
+
+ a. When a new file is requested, create it on the system
+ with the fastest access or the least cost per bit.
+
+ b. When a process is requested, create it on the system with
+ the fastest current response or with the least cost per
+ instruction.
+
+
+
+
+Donnelley [Page 14]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+ 2. Dynamic optimization.
+
+ To do dynamic optimization, the super account would not give
+ the requesting process the capability that it received from
+ the remote account after its static optimization, but would
+ give out a requestor that it would make function like the
+ actual capability except optimized.
+
+ a. When network conditions or user needs charges, files can
+ be moved to more effective systems. changes in cost
+ conditions might result in file movement. Charges in
+ reliability conditions might result in movement of files
+ and/or in addition or deletion of multiple copies.
+
+ b. If system load conditions or CPU charges change, it might
+ be effective to relocate a process. The super account
+ service process could: create a new process on a more
+ effective system, stop the old process, move the old C-
+ list and memory to the new process and start the new
+ process up. The emulation process given to the user
+ would never appear to change.
+
+ c. Similar optimizations can be done on any other
+ capabilities.
+
+ Such a super account can automatically optimize a user's
+ network resources to suit the user's needs without changing
+ the functional characteristics of the objects being
+ optimized.
+
+Final Note
+
+ The DCCS mechanisms defined in this paper are currently being
+ implemented on a Digital Equipment Corporation PDP-11/45 computer for
+ use as an experimental protocol on the ARPA computer network [10].
+ The DCCS protocol will also form the basis for a gateway between the
+ ARPA network and Energy Research and Developement Agency's CTR
+ network [11]. It is the authors hope that the DCCS mechanism will
+ hasten the approach of the kind of networks that are needed to create
+ a truly free market in computational resources.
+
+ Acknowledgements
+
+ The author would like to thank the administrators and staff of the
+ Computer Research Project at the Lawrence Livemore Laboratory for
+ creating the kind of environment conductive to the ideas presented in
+ this paper. Special thanks are due to Charles Landau for many of the
+ C-list ideas as implemented in the current RATS system.
+
+
+
+Donnelley [Page 15]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+References
+
+ 1. C. R. Landau, The RATS Operating System, Lawrence Livermore
+ Laboratory, Report UCRL-77378 (1975)
+
+ 2. C. R. Landau, An Introduction to RATS (RISOS/ARPA Terminal
+ System): An Operating System for the DEC PDP-11/45, Lawrence
+ Livermore Laboratory, Report UCRL-51582 (1974)
+
+ 3. J. E. Donnelley, Notes on RATS and Capability List Operating
+ Systems, Lawrence Livermore Laboratory, Report UCID-16902 (1975)
+
+ 4. B. W. Lampson, "On Reliable and Extendable Operating Systems",
+ Techniques in Software Engineering, NATO Sci Comm. Workshop Material,
+ Vol. II (1969)
+
+ 5. W. Wulf, et. al., "HYDRA: The Kernel of a Multiprocessor Operating
+ System", Communications of the ACM 17 6 (1974)
+
+ 6. P. Neumann et. al., "On the Design of a Provably Secure Operating
+ System" International Workshop on Protection in Operating Systems,
+ IRIA (1974)
+
+ 7. R. S. Fabry, "Capability-Based Addressing", CACM 17 7 (1974)
+
+ 8. E. W. Dijkstra, "Cooperating Sequential Processes", published in
+ Programming Languages, F. Genuys, editor, Academic Press, pp. 43-112
+ (1968)
+
+ 9. F. A. Akkoyunlu, et. al., "Some Constraints and Tradeoffs in the
+ Design of Network Communications", Proceedings of the Fifth Symposium
+ on Operating System Principles, Vol. 9 No. 5 pp. 67-74 (1975)
+
+ 10. L. G. Roberts and B. D. Wessler, "Computer Network Development to
+ Achieve Resource Sharing", AFLPS Conference Proceedings 36, pp.
+ 543-549 (1970)
+
+ 11. "National CTR Computer Center", Lawrence Livermore Laboratory
+ Energy and Technology Review, Lawrence Livermore Laboratory UCRL-
+ 52000-75-12, December (1975)
+
+
+
+
+
+
+
+
+
+
+
+Donnelley [Page 16]
+
+RFC 712 A Distributed Capability Computing System February 1976
+
+
+ The figures are not included in the online version. Interested
+ readers can obtain a hardcopy version of the documents including the
+ figures by requesting a copy of UCRL-77800 from:
+
+ Technical Information Department
+ Lawrence Livermore Laboratory
+ University of California Livermore, California 94550
+
+ Questions or comments would be appreciated and should be directed to
+ the author:
+
+ Though the U.S. mail:
+
+ James E. Donnelley
+ Lawrence Livermore Laboratory L-307
+ P. O. Box 808
+ Livermore, California 94550
+
+ By telephone:
+ (415)447-1100 ext. 3406
+
+ Via ARPA net mail:
+ JED@BBN
+
+ "This report was prepared as an account of work sponsored by the
+ United States Government. Neither the United States nor the United
+ States Energy Research & Development Administration, nor any of their
+ employees, nor any of their contractors, subcontractors or their
+ employees, makes any warranty, express or implied, or assumes any
+ legal liability or responsibility for the accuracy, completeness or
+ usefulness of any information, apparatus, product or process
+ disclosed, or represents that its use would not infringe privately-
+ owned rights."
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Donnelley [Page 17]
+