Output Guards and Nondeterminism in “Communicating Sequential Processes”
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communicating sequential processes
Communications of the ACM
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A preliminary architecture for a basic data-flow processor
ISCA '75 Proceedings of the 2nd annual symposium on Computer architecture
A difference in efficiency between synchronous and asynchronous systems
STOC '81 Proceedings of the thirteenth annual ACM symposium on Theory of computing
Distributed algorithms for synchronizing interprocess communication within real time
STOC '81 Proceedings of the thirteenth annual ACM symposium on Theory of computing
Fast allocation of nearby resources in a distributed system
STOC '80 Proceedings of the twelfth annual ACM symposium on Theory of computing
Local and global properties in networks of processors (Extended Abstract)
STOC '80 Proceedings of the twelfth annual ACM symposium on Theory of computing
Deadlock- and livelock-free packet switching networks
STOC '80 Proceedings of the twelfth annual ACM symposium on Theory of computing
Concepts and Notations for Concurrent Programming
ACM Computing Surveys (CSUR)
Real-Time Synchronization of Interprocess Communications
ACM Transactions on Programming Languages and Systems (TOPLAS)
Real time resource allocation in distributed systems
PODC '82 Proceedings of the first ACM SIGACT-SIGOPS symposium on Principles of distributed computing
Hi-index | 0.00 |
This paper concerns the fundamental problem of synchronizing communication between distributed processes whose speeds (steps per real time unit) vary dynamically. Communication must be established in matching pairs, which are mutually willing to communicate. We show how to implement a distributed local scheduler to find these pairs. The only means of synchronization are boolean "flag" variables, each of which can be written by only one process and read by at most one other process.No global bounds in the speeds of processes are assumed. Processes with speed zero are considered dead. However, when their speed is nonzero then they execute their programs correctly. Dead processes do not harm our algorithms' performance with respect to pairs of other running processes. When the rate of change of the ratio of speeds of neighbour processes (i.e., relative acceleration) is bounded, then any two of these processes will establish communication within a constant number of steps of the slowest process with high likelihood. Thus our implementation has the property of achieving relative real time response. We can use our techniques to solve other problems such as resource allocation and implementation of parallel languages such as CSP and ADA. Note that we do not have any probability assumptions about the system behavior, although our algorithms use the technique of probabilistic choice.