Data flow analysis of distributed communicating processes

Data flow analysis is a technique essential to the compile-time optimization of computer programs, wherein facts relevant to program optimizations are discovered by the global propagation of facts obvious locally. This paper extends several known techniques for data flow analysis of sequential programs to the static analysis of distributed communicating processes. In particular, we present iterative algorithms for detecting unreachable program statements, and for determining the values of program expressions. The latter information can be used to place bounds on the size of variables and messages. Our main innovation is theevent spanning graph, which serves as a heuristic for ordering the nodes through which data flow information is propagated. We consider bothstatic communication, where all channel arguments are constants, and the more difficultdynamic communication, where channel arguments may be variables and channels may be passed as messages.

[1]  Barry K. Rosen Data Flow Analysis for Procedural Languages , 1979, JACM.

[2]  Mogens Nielsen,et al.  A calculus of communicating systems with label passing - ten years after , 1986, Proof, Language, and Interaction.

[3]  Jerome A. Feldman,et al.  High level programming for distributed computing , 1979, CACM.

[4]  Jeffrey D. Ullman,et al.  A Simple Algorithm for Global Data Flow Analysis Problems , 1975, SIAM J. Comput..

[5]  Wolfgang Reisig,et al.  CSP-programs with individual tokens , 1984, European Workshop on Applications and Theory in Petri Nets.

[6]  Matthew Sterling Hecht,et al.  Global data-flow analysis of computer programs. , 1973 .

[7]  S. Purushothaman Iyer,et al.  Towards dataflow analysis of communicating finite state machines , 1989, PODC '89.

[8]  Thomas C. Spillman,et al.  Exposing Side-Effects in a PL/I Optimizing Compiler , 1971, IFIP Congress.

[9]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[10]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[11]  Ben Wegbreit,et al.  Property extraction in well-founded property sets , 1975, IEEE Transactions on Software Engineering.

[12]  Patrick Cousot,et al.  Semantic Analysis of Communicating Sequential Processes (Shortened Version) , 1980, ICALP.

[13]  Richard D. Schlichting,et al.  Understanding and using asynchronous message passing (Preliminary Version) , 1982, PODC '82.

[14]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .

[15]  Gordon D. Plotkin,et al.  A structural approach to operational semantics , 2004, J. Log. Algebraic Methods Program..

[16]  Mark N. Wegman,et al.  A Fast and Usually Linear Algorithm for Global Flow Analysis , 1976, J. ACM.

[17]  Paul G. Spirakis,et al.  Distributed algorithms for synchronizing interprocess communication within real time , 1981, STOC '81.

[18]  D. Walker,et al.  A Calculus of Mobile Processes, Part I , 1989 .

[19]  John H. Reif,et al.  Data flow analysis of communicating processes , 1979, POPL.

[20]  Scott A. Smolka,et al.  The complexity of reachability in distributed communicating processes , 1988, Acta Informatica.

[21]  Nagui Halim,et al.  A New Programming Methodology for Long-Lived Software Systems , 1984, IBM J. Res. Dev..

[22]  Donald E. Knuth,et al.  The Art of Computer Programming, Volume I: Fundamental Algorithms, 2nd Edition , 1997 .