Locks are used to synchronize concurrent access to shared data. However, lock-based synchronization for concurrent programming is difficult to write and can lead to problems such as deadlocks or priority inversion. As an alternate concurrency control mechanism, transactional memory has been proposed; it eliminates many of the pitfalls of lock-based programming but its overhead prohibits runtime performance.
This thesis presents permission-based optimizations for efficient software transactional memory. The main technical contribution is access permissions that combine concurrency control information and object aliasing. In this approach, concurrency control intent is expressed through annotations based on access permissions. Our translation mechanism then tracks permissions through method implementations and optimizes transactional memory. Our results show that this technique increases the performance of transactional memory.
여러 어플리케이션이 공유자원에 동시에 접근하는 것을 제어하기 위해 Lock 기반의 동기화방식이 사용되고 있다. 그러나, Lock 기반의 병렬 프로그래밍 동기화 방식은 구현하기가 힘들 뿐만 아니라, 데드락이나 우선순위 전환과 같은 문제점을 야기할 수 있다. 그래서, 이를 대신할 병렬처리 방식으로 트랙잭션 메모리가 제안되었다. 이는 Lock기반의 많은 문제점들을 방지하도록 하였지만, 실행성능면에서는 현격한 저하를 가져왔다.
이 논문은 접근권한을 제어하여 소프트웨어 트랜잭션 메모리를 최적화하는 방법을 제시한다. 접근권한의 제어는 병렬처리를 위한 정보와 객체의 정보를 함께 결합시켜 프로그램을 수행시키는 방법으로 이 논문의 주된 내용이다. 이 접근방법에서는 접근권한을 이용하여 병렬 프로그래밍을 처리하려는 개발자의 의도가 자바 어노테이션을 통해 표현된다. 그러한 개발자의 의도는 소프트웨어 트랙잭션 메모리 프레임워크에 의해 컴파일되고 런타임시 트랙잭션 메모리를 최적화하게 된다. 이 논문에서는 실험을 통해 이 기법이 소프트웨어 트랙잭션 메모리의 실행성능을 증가시킨다는 것을 보여준다.