Isolator: Dynamically Ensuring Isolation in Concurrent Programs

Proceedings of the Symposium on Architectural Support for Programming Languages and Operating Systems (ASPLOS) |

Published by Association for Computing Machinery, Inc.

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.