Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!rutgers!ames!ucbcad!ucbvax!sdcsvax!darrell From: darrell@sdcsvax.UUCP Newsgroups: mod.os Subject: Re: Submission for mod-os Message-ID: <2705@sdcsvax.UCSD.EDU> Date: Thu, 12-Feb-87 08:25:13 EST Article-I.D.: sdcsvax.2705 Posted: Thu Feb 12 08:25:13 1987 Date-Received: Fri, 13-Feb-87 22:05:42 EST Sender: darrell@sdcsvax.UCSD.EDU Organization: U of Rochester, CS Dept, Rochester, NY Lines: 46 Approved: mod-os@sdcsvax.uucp In article <2699@sdcsvax.UCSD.EDU> cogito@cs.vu.nl (Jennifer Steiner and Robbert van Renesse) suggest the following definitions: > > Definition. A distributed application is an application > carried out by two or more processors. > > Definition. A distributed system consists of two or more > processors which have the ability to commun- > icate with one another. Other recent submissions have made an additional point which I would like to second: in order to be "distributed" an application or system must not rely on shared memory. At the application level, this means that processes use a communication mechanism based on some form of message passing. (I consider RPC to be a form of message passing.) At the hardware level, it means that physical memory is local. I agree with Steiner and van Ranesse that a non-distributed application can run on a distributed system that simulates shared memory. It is of course possible to cite examples where the line is hard to draw. Cm*, for example, might or might not be considered to support shared memory, depending on whether you count the microcode of the Kmap as "hardware". At a higher level, the tuple space of Linda might or might not be considered a message-passing abstraction, depending on one's point of view. I find it useful to keep distinct the meanings of the words "concurrent", "parallel", and "distributed." In the interests of broadening the discussion, I suggest the following definitions: "Concurrent" implies the simultaneous existence of more than one thread of control. "Parallel" implies the simultaneous *execution* of more than one thread of control. "Distributed" implies interaction between threads of control on processors that share no physical memory. Parallel and distributed both imply concurrent. Most distributed computations are parallel. Coroutines are concurrent but not parallel. -- Michael L. Scott University of Rochester (716) 275-7745 scott@rochester.arpa scott%rochester@CSNET-RELAY {decvax, allegra, seismo, cmcl2}!rochester!scott