Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > media > contrib > by-pkgid > 211238da6d926d1ca4390483bb29f586 > files > 46

coda-doc-5.2.0-4mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE> RPC2 User Guide and Reference Manual: Preface                                                </TITLE>
 <LINK HREF="rpc2_manual-2.html" REL=next>

 <LINK HREF="rpc2_manual.html#toc1" REL=contents>
</HEAD>
<BODY>
<A HREF="rpc2_manual-2.html">Next</A>
Previous
<A HREF="rpc2_manual.html#toc1">Contents</A>
<HR>
<H2><A NAME="Preface"></A> <A NAME="s1">1. Preface                                                </A></H2>

<P>RPC2 is a portable and extensible remote procedure call package built on top
of the IP/UDP network protocol.  Since its original use in the Andrew File
System@cite[Howard88], it has been used by the Coda File
System@cite[Satyanarayanan89b], the Scylla database server and a
variety of other applications at Carnegie Mellon University and elsewhere.
RPC2 runs on LWP, a lightweight process package that allows multiple
non-preemptive threads of control to coexist within one Unix process.  RP2Gen
is a stub generator that simplifies the use of RPC2.  RPC2 and LWP run
entirely at user-level on the Unix 4.3BSD interface; no kernel changes are
necessary.
<P>The first versions of LWP and RPC2 were operational in early 1984 and mid-1985
respectively.  The design of LWP predates that of the Cthreads package in
Mach@cite[cthreads].  LWP and Cthreads are conceptually similar, but
differ substantially in the details.  It should, in principle, be possible to
modify RPC2 to run directly on top of Cthreads, but we have not tried to do
this so far.  We have successfully emulated all of LWP on top of the
preemptive and nonpre-emptive versions of Cthreads, and a subset of the
non-preemptive version of Cthreads on top of LWP.
<P>Both LWP and RPC2 have evolved over time, resulting in increased functionality
and robustness.  They have also been ported to a wide variety of machine
architectures, such as IBM-RTs, MIPS, Sun2, Sun3, Sparc, and i386, as well as
variants of the Unix operating systems such as Mach, SunOS and AIX.  The RPC2
extensions include the SFTP side effect mechanism for streaming file transfer,
the MultiRPC mechanism for parallel RPC calls, and IP multicast versions of
MultiRPC and SFTP.  Whenever there has been choice between portability and
machine-specific performance, we have always favored portability.
<P>Although this manual may seem formidable, RPC2 is not difficult to use.  For
simple applications you do not have to know everything described in these
pages.  Advanced features such as use of side effects, MultiRPC, and use of
multicast for parallelism can be ignored initially.
<P>Some day there will be a true tutorial in this manual.  Until then the best 
way to learn RPC2 is as follows:  
<OL>
<LI>Study the overview and examples in Chapter 
<A HREF="rpc2_manual-2.html#Intro">XXX</A>.
The latter are actual pieces of working code, and you should try running
the examples.  Appendix 
<A HREF="rpc2_manual-2.html#Intro">XXX</A><@@ref>UsageNotesXXX</A> gives you details
of library and include file names, current limitations, and other similar
details.
Read Chapter 
<A HREF="rpc2_manual-3.html#RP2GenChapter">XXX</A> next.  This describes the
procedural abstraction provided by RP2Gen, the stub generator.</LI>
<LI>Read Chapter 
<A HREF="rpc2_manual-4.html#RuntimeSystem">XXX</A> and Part
@ref[LWPPart], which describe the RPC2 and LWP runtime calls,
respectively.  You may need to refer to Appendix 
<A HREF="rpc2_manual-4.html#RuntimeSystem">XXX</A><@@ref>HeaderFilesAppendixXXX</A>, which contains the header files used
by these packages.</LI>
<LI>After you have mastered the basics, you may wish to explore the advanced
features described in Chapters 
<A HREF="rpc2_manual-5.html#SFTPChapter">XXX</A>, 
<A HREF="rpc2_manual-6.html#MultiChapter">XXX</A> and 
<A HREF="rpc2_manual-7.html#Multicast">XXX</A>.</LI>
<LI>If you wish to learn about the internals of RPC2, you may wish to consult
the chapters in Part 
<A HREF="rpc2_manual-7.html#Multicast">XXX</A><@@ref>IntPartXXX</A>.</LI>
</OL>
<P><B> Credits </B>
<P>The original design, implementation and documentation of RPC2 was by
M. Satyanarayanan.  The MultiRPC implementation and chapter were done by Ellen
Siegel.  The extensions to use multicast were done by James Kistler.  Jonathan
Rosenberg contributed to the RP2Gen implementation and chapter.  Comments from
Robert Sidebotham, David Nichols, Vasilis Apostolides, Drew Perkins, Bradley
White, Stephen Hecht and many other users have been helpful in the improvement
of RPC2.
<P>The original design and implementation of LWP was done by Larry Raper.  Its
documentation descends from a manual by Jonathan Rosenberg and Larry Raper,
later extended by David Nichols and M. Satyanarayanan.  Richard Draves, Qi Lu,
Anders Klemets and Gowthami Rajendran helped in revising and improving this
document.
<P><B>RPC2 User Reference</B>
<P>
<HR>
<A HREF="rpc2_manual-2.html">Next</A>
Previous
<A HREF="rpc2_manual.html#toc1">Contents</A>
</BODY>
</HTML>