Combining Static Concurrency Analysis with Symbolic Execution
IEEE Transactions on Software Engineering
Detecting access anomalies in programs with critical sections
PADD '91 Proceedings of the 1991 ACM/ONR workshop on Parallel and distributed debugging
Efficient context-sensitive pointer analysis for C programs
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Selecting locking primitives for parallel programming
Communications of the ACM
Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
Time, clocks, and the ordering of events in a distributed system
Communications of the ACM
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Static conflict analysis for multi-threaded object-oriented programs
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Hybrid dynamic data race detection
Proceedings of the ninth ACM SIGPLAN symposium on Principles and practice of parallel programming
RacerX: effective, static detection of race conditions and deadlocks
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
RaceTrack: efficient detection of data race conditions via adaptive tracking
Proceedings of the twentieth ACM symposium on Operating systems principles
Runtime Analysis of Atomicity for Multithreaded Programs
IEEE Transactions on Software Engineering
LOCKSMITH: context-sensitive correlation analysis for race detection
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Compilers: Principles, Techniques, and Tools (2nd Edition)
Compilers: Principles, Techniques, and Tools (2nd Edition)
Goldilocks: a race and transaction-aware java runtime
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
MapReduce: simplified data processing on large clusters
OSDI'04 Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation - Volume 6
Granularity of locks in a shared data base
VLDB '75 Proceedings of the 1st International Conference on Very Large Data Bases
Intel® threading building blocks
Journal of Computing Sciences in Colleges
Recommendation Systems for Software Engineering
IEEE Software
Hi-index | 0.00 |
Operating system kernels are complex software systems. The kernels of todays mainstream OSs, such as Linux or Windows, are composed from a number of modules, which contain code and data. Even when providing synchronous interfaces (APIs) to the programmer, large portions of the OS kernel operate in an asynchronous manner. Synchronizing access to kernel data structures therefore is a central problem in OS kernels running on todays multicore and multiprocessor hardware. With the need to utilize future multi- and manycore processors, managing the synchronization problem becomes central to all multithreaded control-parallel applications. Since only little software is written from scratch, understanding the intended use of locking constructs and their relation to shared data structures will become critical to all programmers. Built upon our experiences with developing code inside the Windows kernel, we have developed the KAdvice approach, which helps to analyze locking structures in an existing codebase. KAdvice applies static analysis to call graphs and code dependencies to recommend appropriate locking patterns when accessing certain data structures. KAdvice has itself proven very useful in context of students' programming projects based upon the Windows Research Kernel (WRK). However, our approach is more general and applicable not only to OS kernels but to control-parallel software in general.