Graph-Based Algorithms for Boolean Function Manipulation
IEEE Transactions on Computers
Handbook of theoretical computer science (vol. B)
Competitive Markov decision processes
Competitive Markov decision processes
Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
Journal of the ACM (JACM)
Game interpretation of the deadlock avoidance problem
Communications of the ACM
Finite State Markovian Decision Processes
Finite State Markovian Decision Processes
CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Design and Synthesis of Synchronization Skeletons Using Branching-Time Temporal Logic
Logic of Programs, Workshop
FOCS '98 Proceedings of the 39th Annual Symposium on Foundations of Computer Science
STOC '82 Proceedings of the fourteenth annual ACM symposium on Theory of computing
RacerX: effective, static detection of race conditions and deadlocks
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
Capriccio: scalable threads for internet services
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
QEST '04 Proceedings of the The Quantitative Evaluation of Systems, First International Conference
Hard Real-time Computing Systems: Predictable Scheduling Algorithms And Applications (Real-Time Systems Series)
Code aware resource management
Proceedings of the 5th ACM international conference on Embedded software
Faster Solutions of Rabin and Streett Games
LICS '06 Proceedings of the 21st Annual IEEE Symposium on Logic in Computer Science
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Sketching concurrent data structures
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Stochastic Games with Finitary Objectives
MFCS '09 Proceedings of the 34th International Symposium on Mathematical Foundations of Computer Science 2009
Journal of Computer and System Sciences
Compositional algorithms for LTL synthesis
ATVA'10 Proceedings of the 8th international conference on Automated technology for verification and analysis
Automatic inference of memory fences
Proceedings of the 2010 Conference on Formal Methods in Computer-Aided Design
Quantitative synthesis for concurrent programs
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Automatic fine-grain locking using shape properties
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Compiling what to how: technical perspective
Communications of the ACM
The complexity of stochastic rabin and streett games
ICALP'05 Proceedings of the 32nd international conference on Automata, Languages and Programming
Synthesis of Reactive(1) designs
Journal of Computer and System Sciences
Finitary winning in ω-regular games
TACAS'06 Proceedings of the 12th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Hi-index | 0.00 |
Multithreaded programs coordinate their interaction through synchronization primitives like mutexes and semaphores, which are managed by an OS-provided resource manager. We propose algorithms for the automatic construction of code-aware resource managers for multithreaded embedded applications. Such managers use knowledge about the structure and resource usage (mutex and semaphore usage) of the threads to guarantee deadlock freedom and progress while managing resources in an efficient way. Our algorithms compute managers as winning strategies in certain infinite games, and produce a compact code description of these strategies. We have implemented the algorithms in the tool Cynthesis. Given a multithreaded program in C, the tool produces C code implementing a code-aware resource manager. We show in experiments that Cynthesis produces compact resource managers within a few minutes on a set of embedded benchmarks with up to 6 threads.