⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc684.txt

📁 RFC 相关的技术文档
💻 TXT
📖 第 1 页 / 共 2 页
字号:
Network Working GroupRFC #684NIC #32252April 15,1975    A Commentary on Procedure Calling as a Network Protocol                        Richard Schantz                           BBN-TENEXPreface_______This RFC is being issued as a first step in an attempt to  stimulatea dialog on some issues in designing a distributed computing system.In particular, it considers the approach taken in a design set forthin  RFC #674, commonly known as the "Procedure Call Protocol" (PCP).In the present document, the concentration is on what we believe  tobe the shortcomings of such a design approach.Note at the outset that this is not the first time we are  providinga critical commentary on PCP.  During the earlier PCP design stages,we met with the PCP designers for  a  brief  period,  and  suggestedseveral  changes,  many  of  which became part of PCP Version 2.  Wehasten to add, however, that the nature of  those  suggestions  stemfrom  an entirely different point of view than those presented here.Our original suggestions, and also some subsequent ones, were mainlyaddressing  details  of implementation.  In this note the concern ismore with the concepts underlying the PCP design than with  the  PCPimplementation.This note is being  distributed  because  we  feel  that  it  raisescertain  issues  which  have not been adequately addressed yet.  ThePCP designers are to  be  congratulated  for  providing  a  detailedwritten  description  of  their  ideas,  thereby  creating a naturalstarting  point  for  a  discussion  of  distributed  system  designconcepts.  It is the intent of this note to stimulate an interactionamong individuals involved with distributed computing,  which  couldperhaps  result in systems whose designs don't preclude their use inprojects  other  than  the  one  for  which  they  were   originallyconceived.The ideas  expressed  in  this  RFC  have  benefited  from  numerousdiscussions with Bob Thomas, BBN-TENEX, who shares the point of viewtaken.          A COMMENTARY on PROCEDURE CALLING         Page   2Introduction____________     While the Procedure Call Protocol (PCP) and its use within  theNational  Software  Works (NSW) context attacks many of the problemsassociated with integrating independent computing systems to  handlea  distributed  computation,  it  is  our  feeling  that  its designcontains flaws which should prevent its widespread use, and  in  ourview,  limit  its overall utility.  We are not voicing our objectionto the use of PCP, in its current  definition,  as  the  base  levelimplementation  vehicle for the NSW project.  It is already too latefor any such objection, and PCP may, in fact, be very effective  forthe  NSW  implementation,  since they are proceeding in parallel andhave probably influenced each other.   Rather,  we  are  voicing  anobjection  to  the  "PCP philosophy", in the hope of preventing thistype of protocol from becoming the  de-facto  network  standard  fordistributed  computation,  and in the hope of influencing the futuredirection of this and similar efforts.     Some of the objectionable aspects of PCP, it can be argued, aredifferences  of  individual  preference, and philosophers have oftenindicated that you cannot argue about  tastes.   We  have  tried  toavoid  such  arguments in this document.  Rather, we consider PCP inlight  of  our  experience  in   developing   distributed   systems.Considered  in  this  way,  we  feel  that  PCP  and  its underlyingphilosophy have flaws which  make  it  inappropriate  as  a  generalpurpose protocol and virtual programming system for the constructionof distributed software systems.  It is  our  opinion  that  PCP  isprobably  complete  in  the  sense that one can probably do anythingthat is required using its primitives.  A key  issue  then,  is  notwhether this function or that function can be supported.  Rather, tous an important question is how easy it is to do  the  things  whichexperience has indicated are important to distributed computing.  Inaddition, a programming discipline dedicated to network applicationsshould  pay  particular  attention  to  coercing its users away fromactions which systems programming in general and network programmingin particular have shown to be pitfalls in system implementation.A Point of View_ _____ __ ____     At the outset, we fully support the aspects of the  PCP  designeffort  that  have  gone  into  systematizing  the  interaction  andagreements between distributed  elements  to  support  inter-machinecomputing.   This  includes  the  definition of the various types ofreplies, the  standardization  of  the  data  structure  format  forinter-machine  exchange,  and  the process creation primitives whichextend the machine boundaries.  Such notions are basic and  must  bepart  of any distributed system definition.  Our main concern is notwith these efforts.          A COMMENTARY on PROCEDURE CALLING         Page   3     Rather, we take exception to PCP's underlying premise: that theprocedure  calling  discipline  is  the  starting point for buildingmulti-computer systems.  This premise leads to a model which  has  acentral  point  for the entire algorithm control, rather than a morenatural (in network situations) distributed control accomplished  bycooperating   independent   entities   interacting   through  commoncommunication paths.  While the procedure call may be an appropriatebasis  for  certain  applications,  we  believe  that it can neitherdirectly  nor  accurately  model  the   interactions   and   controlstructures that occur in many distributed multi-computer systems.     Much of what follows may seem to be a pedagogic  argument,  andPCP supporters may take the position of "who cares what you call it,its doing the same thing".  Our reply is that it is  very  importantto achieve a clear and concise model of distributed computation, andwhile the PCP  model  does  not  require  "poor  implementation"  ofdistributed  systems, neither does it make "good implementation" anyeasier, nor does it prohibit ill-advised programming  practices.   Amodel  stressing the dynamic interconnection of somewhat independentcomputing  entities,  we  feel,  adheres  more  to  the  notions  ofdefensive  programming,  which  we  have  found to be fundamental tobuilding usable multi-machine implementations.     The rest of this RFC discusses what we feel to be some  of  theshortcomings of a procedure call protocol.Limitations of Procedure Calling Across Machines___________ __ _________ _______ ______ ________     First and foremost, it is our contention that procedure callingshould  not  be  the  basis for multi-machine interactions.  We feelthat a request and reply protocol along  with  suitably  manipulatedcommunication paths between processes forms a model better suited tothe situation  in  which  the  network  places  us.   In  a  networkenvironment  one has autonomous computing entities which have agreedon their cooperation, rather than a master process forcing executionof a certain body of code to fulfill its computing needs.  In such aconfiguration, actions required of a process are  best  accommodatedindirectly (by request) rather than directly (by procedure call), inorder to maintain the integrity of the constituent processes.     Procedure calling is most  often  a  very  primitive  operationwhose   implementation   often   requires   only  a  single  machineinstruction.  In addition, it is usually true that procedure callingis  usually  not  within  the  domain of the operating system.  [TheMultics intersegment procedure  calling  mechanism  may  present  anexception  to  this,  until  linkage is complete.  In the remote PCPcase, however, linkage  can  never  be  complete  in  the  sense  ofsupporting  a  fast transfer of control between modules].  Processesand communication paths between processes, however,  are  undeniablyoperating   system   constructs.   In  an  environment  where  localprocedure calling was "cheap", it would be ill-advised to  blur  the          A COMMENTARY on PROCEDURE CALLING         Page   4distinction  between  a local (inexpensive in time and effort) and aremote procedure call, which obviously  requires  a  great  deal  ofeffort  by  the "PCP system", if not by the PCP user.  It also seemsto  be  the  case  that  the  cost  of  blurring  the   local/remotedistinction  at  the  procedure call level will be found in the morefrequent use of a less efficient local procedure calling  mechanism.Interprocess communication, on the other hand, (at least with regardto stream or  message  oriented  channels  and  not  just  interruptsignals)   is  generally  regarded  as  having  a  significant  costassociated with it.   Message  sending  is  always  an  interprocessaction,  and  requires  system intervention always.  There is not assubstantial a difference between the IPC of local processes and  theIPC  of  remote  processes,  as  between  local and remote procedurecalling.  PCP is suggestive of a model in which processes exist thatspan machine boundaries to provide inter-machine subroutine calling.Yet the PCP documentation has not advocated the notion of a  processthat  spans  machine  boundaries,  and  rightfully  so  since such acreation would cause innumerable problems.  Since procedure  callingis more suitable as an intra-process notion, it seems to be a betteridea to take the interprocess communication framework and extend  itto  have  a uniform interpretation locally and remotely, rather thanto extend the procedure calling model.  It is  also  our  contentionthat  a  model  which relies on procedure calling for its basis doesnot take into account the special nature of the network environment,and  that  such  an  environment  can  be more suitably handled in amessage passing model.  Furthermore, we feel that programming  as  awhole,  even  purely  local computing, will benefit from paying moreattention to such areas as reliability and  robustness,  which  havebeen  brought to the forefront through experience with an oftentimesunreliable network and  collection  of  hosts.   An  IPC  model,  byemphasizing  the  connections  between  disjoint processes, seems to

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -