In a computing system environment having a main memory and a queuing mechanism with a plurality of queues in said memory, said memory being shared between a plurality of independent processes running on at least one host and at least one I/O adapter, a method for controlling movement of data between any host and any network including a set of devices, comprising the steps of:
- providing a finite-state machine (FSM) in said main memory,
- providing in said FSM, two disjoint sets of states, one of which representing state-values processed by said host and set by said adapter, and said other set representing state-values processed by said adapter and set by said host;
- using each of said set of states to provide free-running, non-deadlocking processes within said host and said adapter so that said processes sequence circularly and continuously through a vector related to said FSMS;
- providing a circular data queue in said vector as to provide a set of storage blocks within said main memory for an input or an output buffer;
- using said processes and said queues, moving data quickly without any need to initiate any distinct input/output requests or any interruptions by said host processor for completion of each data movement.