Sriram Rajamani, G Ramalingam, Venkatesh Prasad Ranganath, and Kapil Vaswani
In this paper, we focus on concurrent programs that use locks to achieve isolation of data accessed by critical sectionsof code. We present Isolator, an algorithm that guarantees isolation in well-behaved threads of a program that obey a locking discipline even in the presence of ill-behaved threads that disobey the locking discipline. Isolator uses code instrumentation, data replication, and virtual memory protection to detect isolation violations and delays ill-behaved threads to ensure isolation. Our instrumentation scheme requires access only to the code of well-behaved threads. We have evaluated Isolator on several benchmark programs and found that Isolator can ensure isolation with reasonable runtime overheads. In addition, we present three general desiderata, safety, isolation, and permissiveness, forany scheme that attempts to ensure isolation, and formally prove that Isolator satisfies all of these desiderata.
In Proceedings of the Symposium on Architectural Support for Programming Languages and Operating Systems (ASPLOS)
Publisher Association for Computing Machinery, Inc.
Copyright © 2007 by the Association for Computing Machinery, Inc. Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from Publications Dept, ACM Inc., fax +1 (212) 869-0481, or email@example.com. The definitive version of this paper can be found at ACM’s Digital Library --http://www.acm.org/dl/.