Results 11 -
16 of
16
Static Lock Capabilities for Deadlock Freedom
"... We present a technique — lock capabilities — for statically verifying that multithreaded programs with locks will not deadlock. Most previous work on deadlock prevention requires a strict total order on all locks held simultaneously by a thread, but such an invariant often does not hold with fine-gr ..."
Abstract
- Add to MetaCart
We present a technique — lock capabilities — for statically verifying that multithreaded programs with locks will not deadlock. Most previous work on deadlock prevention requires a strict total order on all locks held simultaneously by a thread, but such an invariant often does not hold with fine-grained locking, especially when data-structure mutations change the order locks are acquired. Lock capabilities support idioms that use fine-grained locking, such as mutable binary trees, circular lists, and arrays where each element has a different lock. Lock capabilities do not enforce a total order and do not prevent external references to data-structure nodes. Instead, the technique reasons about static capabilities, where a thread already holding locks can attempt to acquire another lock only if its capabilities allow it. Acquiring one lock may grant a capability to acquire further locks; in data-structures where heap shape affects safe locking orders, the heap structure can induce the capability-granting relation. Deadlock-freedom follows from ensuring that the capabilitygranting relation is acyclic. Where necessary, we restrict aliasing with a variant of unique references to allow strong updates to the capability-granting relation, while still allowing other aliases that are used only to acquire locks while holding no locks. We formalize our technique as a type-and-effect system, demonstrate it handles realistic challenging idioms, and use syntactic techniques (type preservation) to show it soundly prevents deadlock.
StableDeterministicMultithreading through Schedule Memoization
"... Adeterministicmultithreading(DMT)systemeliminates nondeterminism in thread scheduling, simplifying the development of multithreaded programs. However, existing DMT systems are unstable; they may force a program to (ad)venture into vastly different schedules even for slightly different inputs or exec ..."
Abstract
- Add to MetaCart
Adeterministicmultithreading(DMT)systemeliminates nondeterminism in thread scheduling, simplifying the development of multithreaded programs. However, existing DMT systems are unstable; they may force a program to (ad)venture into vastly different schedules even for slightly different inputs or execution environments, defeating many benefits of determinism. Moreover, few existingDMTsystemsworkwithserverprogramswhose inputs arrive continuously and nondeterministically. TERN is a stable DMT system. The key novelty in TERN is the idea of schedule memoization that memoizes past working schedules and reuses them on future inputs,makingprogrambehaviorsstableacrossdifferent inputs. A second novelty in TERN is the idea of windowingthatextendsschedulememoizationtoserverprograms by splitting continuous request streams into windows of requests. Our TERN implementation runs on Linux. It operates as user-space schedulers, requiring no changes to theOS and only afew lines of changes tothe application programs. We evaluated TERN on a diverse set of 14 programs (e.g., Apache and MySQL) with real and synthetic workloads. Our results show that TERN is easy to use, makes programs more deterministic and stable, and has reasonable overhead. 1
Can Deterministic Replay be an Enabling Tool for Mobile Computing?
"... Deterministic record and replay is fast becoming a vital technology in desktop and server computing environments. Yet, the applicability of this technology to computation run on small, mobile devices such as cell phones has not yet been explored. We argue that there are several potential uses of rep ..."
Abstract
- Add to MetaCart
Deterministic record and replay is fast becoming a vital technology in desktop and server computing environments. Yet, the applicability of this technology to computation run on small, mobile devices such as cell phones has not yet been explored. We argue that there are several potential uses of replay that are especially beneficial when applied to mobile phones: dual execution on cloud or cloudlet computers to reduce latency and possibly phone energy use, operation shipping for file synchronization, and offloading of expensive security and reliability checks to remote servers. In this paper, we explore these potential uses, as well as some of the unique challenges posed by implementing replay on phones. 2.
POUR L'OBTENTION DU GRADE DE DOCTEUR ÈS SCIENCES PAR
, 2011
"... It is notoriously difficult to develop reliable, high-performance distributed systems that run over asynchronous networks. Even if a distributed system is based on a well-understood distributed algorithm, its implementation can contain errors arising from complexities of realistic distributed enviro ..."
Abstract
- Add to MetaCart
It is notoriously difficult to develop reliable, high-performance distributed systems that run over asynchronous networks. Even if a distributed system is based on a well-understood distributed algorithm, its implementation can contain errors arising from complexities of realistic distributed environments or simply coding errors. Many of these errors can only manifest after the system has been running for a long time, has developed a complex topology, and has experienced a particular sequence of low-probability events such as node resets. Model checking or systematic state space exploration, which has been used for testing of centralized systems, is also not effective for testing of distributed applications. The aim of these techniques is to exhaustively explore all the reachable states and verify some user-specified invariants on them. Although effective for small software systems, for more complex systems such as distributed systems the exponential increase in number of explored states, manifests itself as a problem at the very early stages of search. This phenomenon, which is also known as exponential state space explosion problem, prevents the model checker
A Study of Linux File System Evolution
"... We conduct a comprehensive study of file-system code evolution. By analyzing eight years of Linux file-system changes across 5079 patches, we derive numerous new (and sometimes surprising) insights into the file-system development process; our results should be useful for both the development of fil ..."
Abstract
- Add to MetaCart
We conduct a comprehensive study of file-system code evolution. By analyzing eight years of Linux file-system changes across 5079 patches, we derive numerous new (and sometimes surprising) insights into the file-system development process; our results should be useful for both the development of file systems themselves as well as the improvement of bug-finding tools. 1

