On Communicating Finite-State Machines
Journal of the ACM (JACM)
Getting Erlang to talk to the outside world
Proceedings of the 2002 ACM SIGPLAN workshop on Erlang
Language Primitives and Type Discipline for Structured Communication-Based Programming
ESOP '98 Proceedings of the 7th European Symposium on Programming: Programming Languages and Systems
A Case for Message Oriented Middleware
Proceedings of the 13th International Symposium on Distributed Computing
SVL: A Scripting Language for Compositional Verification
FORTE '01 Proceedings of the IFIP TC6/WG6.1 - 21st International Conference on Formal Techniques for Networked and Distributed Systems
Slack Elasticity in Concurrent Computing
MPC '98 Proceedings of the Mathematics of Program Construction
Analysis of interacting BPEL web services
Proceedings of the 13th international conference on World Wide Web
MOM vs. RPC: Communication Models for Distributed Applications
IEEE Internet Computing
Synchronizability of Conversations among Web Services
IEEE Transactions on Software Engineering
Language support for fast and reliable message-based communication in singularity OS
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
Singularity: rethinking the software stack
ACM SIGOPS Operating Systems Review - Systems work at Microsoft Research
Multiparty asynchronous session types
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Analyzing singularity channel contracts
Proceedings of the eighteenth international symposium on Software testing and analysis
Verification of programs with half-duplex communication
Information and Computation
CADP 2006: a toolbox for the construction and analysis of distributed processes
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Context-bounded analysis of concurrent queue systems
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Precise dynamic analysis for slack elasticity: adding buffering without adding bugs
EuroMPI'10 Proceedings of the 17th European MPI users' group meeting conference on Recent advances in the message passing interface
Choreography conformance via synchronizability
Proceedings of the 20th international conference on World wide web
Deciding choreography realizability
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Efficient verification of halting properties for MPI programs with wildcard receives
VMCAI'05 Proceedings of the 6th international conference on Verification, Model Checking, and Abstract Interpretation
Reachability analysis of communicating pushdown systems
FOSSACS'10 Proceedings of the 13th international conference on Foundations of Software Science and Computational Structures
Multiparty session types meet communicating automata
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
Channel properties of asynchronously composed petri nets
PETRI NETS'13 Proceedings of the 34th international conference on Application and Theory of Petri Nets and Concurrency
Hi-index | 0.00 |
Message-based communication is an increasingly common interaction mechanism used in concurrent and distributed systems where components interact with each other by sending and receiving messages. It is well-known that verification of systems that use asynchronous message-based communication with unbounded FIFO queues is undecidable even when the component behaviors are expressed using finite state machines. In this paper we show that there is a sub-class of such systems, called synchronizable systems, for which certain reachability properties (over send actions and over states with no pending receives) remain unchanged when asynchronous communication is replaced with synchronous communication. Hence, if a system is synchronizable, then the verification of these reachability properties can be done on the synchronous version of the system and the results hold for the asynchronous case. We present a technique for deciding if a given system is synchronizable. Our results are applicable to a variety of domains including verification and analysis of interactions among processes at the OS level, coordination in service-oriented computing and interactions among distributed programs. In this paper we focus on analysis of channel contracts in the Singularity OS. Our experimental results show that almost all channel contracts in the Singularity OS are synchronizable, and, hence, their properties can be analyzed using synchronous communication semantics.