Abstract
Concurrent programs written in a machine-level language are being used in many areas, but the verification of such programs brings various new challenges to the programming language community. Most of existing contributions on verifying the safety properties of concurrent programs are for high-level languages, specifications, or calculi in the literature. Due to the lack of abstraction at a low level, additional work is needed to extend these methods to machine-level language. This paper describes an approach to integrate Petri nets into low-level concurrent programs to form a new programming model (abstract machine). A program in the programming model is a restricted version of colored Petri net, with transitions colored by assembly codes for machine-level threads, and places colored by shared data consisting of memory locations or registers. Existing analysis and verification approaches for usual Petri nets can be applied indirectly for such a low-level concurrent program.
Similar content being viewed by others
References
Xavier Leroy. Bytecode verification for Java smart card. Software Practice Experience, 2002, 32: 319–340
Necula G C, Lee P. The design and implementation of a certifying compiler. In: PLDI’ 98 Proceedings of the ACM SIGPLAN 1998 Conference on Programming Language Design and Implementation, New York: ACM, 1998. 333–344
Morrisett G, Crary K, Glew N, et al. Stack-based typed assembly language. Comput Sci, 1998, 1473: 28–52
Morrisett G, Crary K, Glew N, et al. TALx86: A realistic typed assembly language. In: Proceedings of Workshop on Compiler Support for System Software, ACM SIGPLAN, 1999. 25–35
Myers AC. Jflow: Practical mostly-static information flow control. In: POPL’ 99 Proceedings of the 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, New York: ACM, 1999
Yu D C, Hamid N A, Shao Z. Building certified lbraries for PCC: Dynamic storage allocation. Sci Comput Programming, 2004, 50: 101–127
Burdy L, Huisman M, Pavlova M. Preliminary design of BML: A behavioral interface specification language for java bytecode. In: Proceedings of 10th International Conference, FASE Heidelberg: Springer-Verlag Berlin, 2007. 215–229
Sekar R, Venkatakrishnan V N, Basu S, et al. Model-carrying code: A practical approach for safe execution of untrusted applications. ACM SIGOPS Operating Syst Rev, 2003, 37: 15–28
Yu DC, Shao Z. Verification of safety properties for concurrent assembly code. In: ICFP’ 04 Proceedings of the ninth ACM SIGPLAN International Conference on Functional Programming, Snowbird: ACM, 2004
Hoare C A R. Communicating sequential processes. Commun ACM, 1978, 21: 666–677
Milner R. Communicating and Mobile Systems: The π-Calculus. Cambridge: Cambridge University Press, 1999
Resig W. Petri Nets: An Introduction, vol.4 of EATCS monographs on Theoretical Computer Science. Berlin: Springer, 1985
Chandy K M, Misra J. Parallel Program Design A Foundation. MA: Addison-Wesley Publishing Company, Inc., 1988
Jensen K. Coloured Petri Nets: Basic Concepts, Analysis Methods and Practical Use, Volume 1, EATCS Monographs in Computer Science. Heidelberg: Springer, 1992
Hoare C A R. An axiomatic basis for computer programming. Commun ACM, 1969, 12: 576–580
O’Hearn P W, Reynolds J C, Yang H. Local reasoning about programs that alter data structures. Comput Sci Logic, 2001, 2142: 1–19
Reynolds J C. Separation logic: a logic for shared mutable data structures. In: 17th Annual IEEE Symposium on Logic in Computer Science, Copenhagen, 2002. 55–74
Girault C, Valk R. Petri Nets for System Engineering: A Guide to Modeling, Verification, and Applications. Berlin: Springer, 2003
Liang Y Y. Study on verification of concurrent low-level programs based on certifying compilers. Dissertation ofMaster’s Degree, Tsinghua University, 2007
Bornat R, Calcagno C, Peter O’Hearn, et al. Permission accounting in separation logic. In POPL’05 Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of programming languages. New York: ACM Press, 2005. 259–270
Hayman J, Winskel G. Independence and concurrent separation logic. In: 21st Annual IEEE Symposium on Logic in Computer Science, Seattle, 2006. 147–156
O’Hearn P W. Resources, concurrency and local reasoning. Theor Comput Sci, 2007, 375: 271–307
Harris T, Cristal A, Unsal O S, et al. Transactional memory: An overview. IEEE Micro, 2007, 3: 8–29
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Wang, S., Dong, Y. A verifiable low-level concurrent programming model based on colored Petri nets. Sci. China Inf. Sci. 54, 2013–2027 (2011). https://doi.org/10.1007/s11432-011-4300-1
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11432-011-4300-1