Group: sequences
Topic: asynchronous processing
Topic: client-server model for distributed systems
Topic: communication port
Topic: concurrency control by monitors
Topic: control file
Topic: data flow languages
Topic: implementing distributed systems and applications
Topic: interprocess communication
Topic: I/O streams
Topic: parameter passing by message
Topic: remote procedure call
Topic: Unix pipes
Topic: data flow machines
| |
Summary
Multiple processes can communicate by messages passed through queue buffers. An information queue usually consists of a buffer, a sending process and a receiving process, but the buffer is unnecessary and multiple readers or writers may be defined. The same process may be both reader and writer. There may be a response-acknowledge queue for sending results and synchronizing messages. With multiple readers and writers, the processes are non-deterministic due to timing conditions. From the viewpoint of a single process, an information queue is a control vector or process sequencer. A network of processes interconnected by information queues is a data flow program. (cbb 5/80)
Subtopic: message passing
Quote: a message is a typed collection of data objects. They may contain an address space, pointers, and capabilities for ports
| Quote: use process groups for procedural message-passing systems; labeled by process name and numeric index
| Quote: message-passing is the major alternative to monitors [»bacoDF10_2000]
| Quote: message-passing usually restricts the allowable data types; e.g., occam only transmits scalars and array of scalars
| Subtopic: formal protocol
Quote: Sing# sends strongly typed messages over bidirectional channels; a state machine defines the channel's protocol [»taneAS5_2006]
| Subtopic: streams
Quote: the stream model replaces a memory cell with a pipeline and enque/deque operations [»wegnP_1979b]
| Subtopic: data-driven
Quote: a data-driven program is like a data-flow network with processing elements and data queues [»dennPJ_1980]
| Quote: avoid timing-dependent behavior if all processes are data driven by messages received from one sender and processed in order [»dennPJ_1980]
| Subtopic: work queue
Quote: use work queues instead of thread per connection or thread per work unit [»smaaB2_2006]
| Quote: keep number of threads near the number of CPUs
| Subtopic: message queue as port
Quote: on a full port, a task can suspend, error, or post one message for future transmission with acknowledgment [»acceM6_1986]
| Subtopic: message queue as future
Quote: use futures for concurrent return values, event objects, and macro-dataflow programming; wait until value is assigned; assign-once [»chriTW2_2002]
| Subtopic: wait-free channel
Quote: use wait-free, allocation-free channels to transfer data between high and low frequency tasks; wait-free for reader or writer [»spooD6_2006]
| Subtopic: buffering
Quote: buffer principle--a buffer pool smoothes short-term variations between consumers and producers, avoids needless blocking [»finkRA_1986]
| Subtopic: message-passing and remote calls
Quote: in a message-passing system, the sender can use procedure call semantics while the receiver use message queue semantics [»liskB10_1981]
| Quote: message passing is convenient for intra-machine communication while remote procedure call is best for inter-machine communication [»cormGV5_1988]
| Subtopic: source/destination vs. channel
Quote: in most large systems, programmers want to send messages to a destination, rather than through a channel
| Quote: conversational continuity: a process needs to reply to the sender even though the original message was forwarded [»wilsGV_1995]
| Quote: most programmers use general-purpose routers to allow them to send messages between arbitrary processes
| Subtopic: state messages
Quote: state messages for single-writer multiple-reader; short, non-blocking, circular buffer; 1/4 the overhead for small messages [»zubeKM10_2001]
| Subtopic: message queues
Quote: input messages stored in a queue, only removed when completely processed [»giffDK12_1985]
| Quote: a queued model of communication allows local time for each process and avoids issues of simultaneity [»stroRE5_1985]
| Subtopic: asynchronous vs. synchronous
Quote: synchronized communication simplifies programming, no buffers, efficient, data not lost, one process waits for the other [»mayD_1987]
| Quote: use asynchronous communication because can be as efficient as synchronous and more flexible [»giffDK7_1985, OK]
| Quote: parallel processes usually don't care what happens to results; an asynchronous 'out' statement is better than a monitor call [»carrN4_1989]
| Quote: an earlier version of Amoeba has asynchronous RPC; a dreadful decision, impossible to program [»taneAS12_1990]
| Quote: with unsynchronized communication, failure to acknowledge data can lead to timing effects [»mayD_1987]
| Quote: nonblocking message sending increases concurrency at an excessively high cost
| Quote: it is easy to implement buffering as a process that uses unbuffered, synchronized communication
| Subtopic: large message
Quote: Mach sends a large message as copy-on-write data via a temporary kernel address map [»acceM6_1986]
| Subtopic: examples
Quote: in Thoth and V, messages are for communication and processes are for concurrency [»cherDR4_1984]
| Quote: Pilot provides interprocess communication via network streams; same machine optimization, routers, sockets; like PUP and TCP [»redeDD2_1980, OK]
| Quote: a Pilot server listens for requests on an advertised network address; new network streams are assigned to a different network address [»redeDD2_1980]
| QuoteRef: cbb_1973 ;;[reading (QuoteRef: mckeWM_1974) info queues-- create, destroy ,send, receive, conditional receive and send with and receive with interrupt (send and tell someone)
| QuoteRef: cbb_1973 ;;1/12/74 infoqueues deal with information (delivered particularly) while events deal with presence (delivered globally)
| Subtopic: problems with message passing
Quote: procedural message passing is more complicated than data-parallel or shared-variable programs; use an application builder [»wilsGV_1995]
|
Related Topics
Group: sequences (7 topics, 97 quotes)
Topic: asynchronous processing (30 items)
Topic: client-server model for distributed systems (25 items)
Topic: communication port (40 items)
Topic: concurrency control by monitors (24 items)
Topic: control file (10 items)
Topic: data flow languages (33 items)
Topic: implementing distributed systems and applications (41 items)
Topic: interprocess communication (29 items)
Topic: I/O streams (17 items)
Topic: parameter passing by message (31 items)
Topic: remote procedure call (44 items)
Topic: Unix pipes (10 items)
Topic: data flow machines (14 items)
|