Communicating sequential processes
Communicating sequential processes
Graph-Based Algorithms for Boolean Function Manipulation
IEEE Transactions on Computers
Reachability trees for high-level Petri nets
Theoretical Computer Science
Parallel program design: a foundation
Parallel program design: a foundation
A bridging model for parallel computation
Communications of the ACM
ACM SIGCSE Bulletin
Model Checking in Practice: The T9000 Virtual Channel Processor
IEEE Transactions on Software Engineering
Coloured Petri nets (2nd ed.): basic concepts, analysis methods and practical use: volume 1
Coloured Petri nets (2nd ed.): basic concepts, analysis methods and practical use: volume 1
Better verification through symmetry
Formal Methods in System Design - Special issue on symmetry in automatic verification
IEEE Transactions on Software Engineering - Special issue on formal methods in software practice
The Kent retargetable occam compiler
WoTUG '96 Proceedings of the 19th world occam and transputer user group technical meeting on Parallel processing developments
Communicating and mobile systems: the &pgr;-calculus
Communicating and mobile systems: the &pgr;-calculus
Time, clocks, and the ordering of events in a distributed system
Communications of the ACM
The Theory and Practice of Concurrency
The Theory and Practice of Concurrency
Concurrent and Real Time Systems: The CSP Approach
Concurrent and Real Time Systems: The CSP Approach
Protocol Verification as a Hardware Design Aid
ICCD '92 Proceedings of the 1991 IEEE International Conference on Computer Design on VLSI in Computer & Processors
Deadlock Analysis for a Fault-Tolerant System
AMAST '97 Proceedings of the 6th International Conference on Algebraic Methodology and Software Technology
Breaking and Fixing the Needham-Schroeder Public-Key Protocol Using FDR
TACAs '96 Proceedings of the Second International Workshop on Tools and Algorithms for Construction and Analysis of Systems
NuSMV 2: An OpenSource Tool for Symbolic Model Checking
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
Automated analysis of cryptographic protocols using Mur/spl phi/
SP '97 Proceedings of the 1997 IEEE Symposium on Security and Privacy
Modern concurrency abstractions for C#
ACM Transactions on Programming Languages and Systems (TOPLAS)
ICECCS '06 Proceedings of the 11th IEEE International Conference on Engineering of Complex Computer Systems
Communicating Process Architectures 2007: WoTUG-30
Communicating Process Architectures 2007: WoTUG-30
Model checking nonblocking MPI programs
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
Actors with multi-headed message receive patterns
COORDINATION'08 Proceedings of the 10th international conference on Coordination models and languages
Communicating mobile processes
CSP'04 Proceedings of the 2004 international conference on Communicating Sequential Processes: the First 25 Years
Verifying security protocols: an application of CSP
CSP'04 Proceedings of the 2004 international conference on Communicating Sequential Processes: the First 25 Years
A black-box approach to understanding concurrency in DaCapo
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
To boldly go: an occam-π mission to engineer emergence
Natural Computing: an international journal
Hi-index | 0.00 |
With the commercial development of multicore processors, the challenges of writing multithreaded programs to take advantage of these new hardware architectures are becoming more and more pertinent. Concurrent programming is necessary to achieve the performance that the hardware offers. Traditional approaches present concurrency as an advanced topic: they have proven difficult to use, reason about with confidence, and scale up to high levels of concurrency. This article reviews process-oriented design, based on Hoare's algebra of Communicating Sequential Processes (CSP), and proposes that this approach to concurrency leads to solutions that are manageable by novice programmers; that is, they are easy to design and maintain, that they are scalable for complexity, obviously correct, and relatively easy to verify using formal reasoning and/or model checkers. These solutions can be developed in conventional programming languages (through CSP libraries) or specialized ones (such as occam-π) in a manner that directly reflects their formal expression. Systems can be developed without needing specialist knowledge of the CSP formalism, since the supporting mathematics is burnt into the tools and languages supporting it. We illustrate these concepts with the Santa Claus problem, which has been used as a challenge for concurrency mechanisms since 1994. We consider this problem as an example control system, producing external signals reporting changes of internal state (that model the external world). We claim our occam-π solution is correct-by-design, but follow this up with formal verification (using the FDR model checker for CSP) that the system is free from deadlock and livelock, that the produced control signals obey crucial ordering constraints, and that the system has key liveness properties.