Tackling Concurrency and Timing Problems
- 847 Downloads
7.1 Abstract
Concurrent systems, either hardware or software, are notoriously difficult to design correctly in large part due to the complexities of nondeterministic execution. A concurrent system can perform many different correct computations for a given input sequence because the absolute order of execution is dependent on factors which cannot be known at design/compile time. Synchronization constructs are used to restrict the set of possible computations to correct computations only, but insertion of synchronization constructs is a manual and error-prone task. The detection of synchronization errors is made difficult because the manifestation of an error can depend on operation timing, which can change between executions. We define a class of synchronization errors and define the timing requirements to ensure the detection of these errors. We provide a coverage metric which can be used to determine whether or not a given test execution is sufficient to detect the defined class of synchronization errors.
Preview
Unable to display preview. Download preview PDF.
References
- [1]Ben-Ari M (1990) Principles of concurrent and distributed programming. Prentice Hall International (UK) LtdGoogle Scholar
- [2]Dijkstra EW (1968) Cooperating sequential processes, programming languages, 43–112Google Scholar
- [3]Hoare CAR (1974) Monitors: an operating system structuring concept. Communications of the ACM 17(10): 549–557CrossRefzbMATHGoogle Scholar
- [4]Brinch Hansen P (1973) Operating system principles. Prentice Hall, Englewood Cliffs, NJGoogle Scholar
- [5]Brinch Hansen P (1978) Distributed processes: a concurrent programming concept. Communications of the ACM 21: 934–941zbMATHGoogle Scholar
- [6]Hoare CAR (1978) Communicating sequential processes. Communications of the ACM 21: 666–667CrossRefzbMATHGoogle Scholar
- [7]Zhang Q, Harris IG (2001) A Validation fault model for timing-induced functional errors. In: International Test Conference, 813–820Google Scholar
- [8]Rapps S, Weyuker EJ (1985) Selecting software test data using data flow information. IEEE Transactions on Software Engineering SE-11(4): 367–375Google Scholar
- [9]Chakraborty S, Dill DL (1997) Approximate algorithms for time separation of events. In International Conference on Computer-Aided Design, 190–198Google Scholar
- [10]Harris IG (2003) Fault models and test generation for hardware-software covalidation. IEEE Design and Test of Computers 20(4): 40–47Google Scholar