[comp.unix.shell] Dataflow Shells

dcheney@dcheney.austin.ibm.com (David Cheney) (02/22/91)

I am looking for information on dataflow architecture, both hardware and
software based.  I remembered seeing David Korn's reference (in Intro to KSH)
to 2dsh, allowing "the setup of more complicated networks of processes
than just pipelines".  The reference identifies M. Rochind (Marc?) as the
author of a Bell Technical Memo on the subject.  Korn extensions include
read/write from multiple fd.  Anybody had any experience with this, or know
where I can learn more?   Finally, ever heard anything regarding OS support
for networks of pipes?

Thanks in advance,
                                                                      
David J. Cheney   (512)823-3799    IBM Advanced Workstation Division, Zip 2401
dcheney@dcheney.austin.ibm.com            11400 Burnet Road, Austin, TX  78758

brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (02/22/91)

In article <5503@awdprime.UUCP> dcheney@dcheney.austin.ibm.com (David Cheney) writes:
> "the setup of more complicated networks of processes
> than just pipelines".

I haven't seen any information on 2dsh except for occasional references
on the net. I have a tool that understands things like

  prog1  3|X  --- prog2 ---  Y|4  prog3
         X|  prog4 --- prog5  |Y

This is the same as prog1 | prog2 | prog3 and prog4 | prog5, except that
prog1 has descriptor 3 as a pipe to prog4's input, and prog5 has its
output as a pipe to prog3's descriptor 4. The spacing is just for fun,
--- is the same as |, | is really an abbreviation for 1|X ; X|0 where X
is a unique pipe name, and there are a few extensions. At some point
I'll clean this up and send it to comp.sources.somethingorother.

> Finally, ever heard anything regarding OS support
> for networks of pipes?

There's no need for it.

---Dan

libes@cme.nist.gov (Don Libes) (02/22/91)

In article <17062:Feb2120:31:0291@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes:
>In article <5503@awdprime.UUCP> dcheney@dcheney.austin.ibm.com (David Cheney) writes:
>> "the setup of more complicated networks of processes
>> than just pipelines".
>
>I haven't seen any information on 2dsh except for occasional references
>on the net. I have a tool that understands things like
>
>  prog1  3|X  --- prog2 ---  Y|4  prog3
>         X|  prog4 --- prog5  |Y

Some other work along these lines was cited in my Summer 1990 USENIX
paper on expect:

  gsh [3] is based on the Bourne shell, but handles graphs of processes,
  such as sending the output of one process to two processes, or
  building a set of three process in a cycle.  ....

  MTX [8] is a screen-based pipe manager.  It solves the same set of
  problems as gsh, although the interface is mouse-oriented instead of
  keyboard-oriented.  In addition, MTX can rearrange connections in
  use.  It does [this by interposing processes with ptys and hence is
  not as fast as gsh].

  [3] Chris McDonald and Trevor Dix, "Support for Graphs of Processes in
  a Command Interpreter", Software: Practice & Experience, Volume 18
  Number 10, p.  1011-1016, October 1988.

  [8] Stephen Uhler, "MTX - A Shell that Permits Dynamic Rearrangement
  of Process Connections and Windows", Proceedings of the Winter 1990
  USENIX Conference, Washington, D.C., January 22-26, 1990.

Don Libes          libes@cme.nist.gov      ...!uunet!cme-durer!libes