semantic atomicity for multithreaded programs
play

Semantic Atomicity for Multithreaded Programs Jacob Burnim, George - PowerPoint PPT Presentation

EECS EECS Electrical Engineering and Electrical Engineering and Computer Sciences Computer Sciences B ERKELEY P AR L AB B ERKELEY P AR L AB P A R A L L E L C O M P U T I N G L A


  1. EECS EECS Electrical Engineering and Electrical Engineering and Computer Sciences Computer Sciences B ERKELEY P AR L AB B ERKELEY P AR L AB P A R A L L E L C O M P U T I N G L A B O R A T O R Y Semantic Atomicity for Multithreaded Programs � Jacob Burnim, George Necula, Koushik Sen � Parallel Computing Laboratory � University of California, Berkeley �

  2. EECS Parallel Correctness is Hard Electrical Engineering and Computer Sciences B ERKELEY P AR L AB ! Difficult to write correct parallel software. � " Key: Interference between parallel threads. � " Atomicity – freedom from harmful interference; a fundamental parallel correctness property. � ! Today : Semantic atomicity . � " Specifying atomicity with respect to user- defined, semantic equivalence. � " Efficiently testing such specifications. � " Overall Goal: Lightweight, useful specs to help programmers find and fix parallelism bugs. � 2

  3. EECS Outline Electrical Engineering and Computer Sciences B ERKELEY P AR L AB ! Overview + Motivation � ! Background: Atomicity � ! Specifying Semantic Atomicity � ! Testing Semantic Atomicity � ! Experimental Evaluation � ! Conclusion � 3

  4. EECS Background: Atomicity Electrical Engineering and Computer Sciences B ERKELEY P AR L AB ! Atomicity a non-interference property . � " Block of code is atomic if it behaves as if executed all-at-once and without interruption. � " Interference from other threads is benign – cannot change overall program behavior. � 4

  5. EECS Background: Atomicity Electrical Engineering and Computer Sciences B ERKELEY P AR L AB ! Atomicity a non-interference property . � " Block of code is atomic if it behaves as if executed all-at-once and without interruption. � Atomic specification . � int bal = 0; � Programmer intends deposit(int a) { � that this code is atomic. � @atomic { � int t = bal; � bal = t + a; � Want to check specification. � } � } � Is the code actually atomic? � 5

  6. EECS Background: Atomicity Electrical Engineering and Computer Sciences B ERKELEY P AR L AB ! Atomicity a non-interference property . � " Block of code is atomic if it behaves as if executed all-at-once and without interruption. � Thread 1: � Thread 2: � deposit(10) � int bal = 0; � deposit(5) � deposit(int a) { � t = 0 � @atomic { � t = 0 � int t = bal; � bal = 10 � bal = t + a; � bal = 5 � } � } � Atomicity specification does not hold. � 6

  7. EECS Background: Atomicity Electrical Engineering and Computer Sciences B ERKELEY P AR L AB ! Atomicity a non-interference property . � " Block of code is atomic if it behaves as if executed all-at-once and without interruption. 
 int bal = 0; � With CAS, updates to deposit(int a) { � balance are atomic. � @atomic { � int t = bal; � while (!CAS(&bal, t, t+a)) � t = bal; � Atomicity specification } � } � does hold. � 7

  8. EECS Background: Atomicity Electrical Engineering and Computer Sciences B ERKELEY P AR L AB ! Formally: Two semantics for a program 
 P with specified atomic blocks. � " Interleaved: Threads interleave normally. � Final 
 Initial 
 State s 1 � State s 0 � interleaved execution E " Serial: When one thread opens an atomic block, no other thread runs until it closes. � Initial 
 Final 
 serial execution E State s 0 � State s 1 ’ � 8

  9. EECS Background: Atomicity Electrical Engineering and Computer Sciences B ERKELEY P AR L AB ! Formally, program P is atomic iff: � " For all interleaved executions E yielding s 1 , 
 there exists a serial E ’ yielding an identical final state. � ∀ interleaved executions Final 
 State s 1 � Initial 
 State s 0 � s 1 == s 1 ’ � q.equals(q’) � ∃ serial execution � Final 
 State s 1 ’ � 9

  10. EECS Outline Electrical Engineering and Computer Sciences B ERKELEY P AR L AB ! Overview � ! Background: Atomicity � ! Specifying Semantic Atomicity � ! Testing Semantic Atomicity � ! Experimental Evaluation � ! Conclusion � 10

  11. EECS Motivating Example Electrical Engineering and Computer Sciences B ERKELEY P AR L AB ConcurrentLinkedQueue q; � q.add(1); q.add(1); � Thread 1: Thread 2: � @atomic { @atomic { � q.remove(1); q.remove(1); � } } � ! Michael & Scott non-blocking queue, in 
 the Java standard library � ! Internally, a linked list with lazy deletion. � 11

  12. EECS Motivating Example Electrical Engineering and Computer Sciences B ERKELEY P AR L AB Thread 1: Thread 2: � @atomic { @atomic { � q.remove(1); q.remove(1); � } } � ! In any serial execution: � head: � 1 � 1 � null � remove(1) � head: � 1 � null � remove(1) � head: � null � 12

  13. EECS Motivating Example Electrical Engineering and Computer Sciences B ERKELEY P AR L AB Thread 1: Thread 2: � @atomic { @atomic { � q.remove(1); q.remove(1); � } } � ! But in an interleaved execution: � 1 � 1 � head: � null � remove(1) � remove(1) � head: � null � null � 13

  14. EECS Motivating Example Electrical Engineering and Computer Sciences B ERKELEY P AR L AB Thread 1: Thread 2: � @atomic { @atomic { � q.remove(1); q.remove(1); � } } � ! Traditional atomicity requires: � null � null � ∀ interleaved executions Final 
 State s 1 � Initial 
 State s 0 � s 1 == s 1 ’ � q.equals(q’) � ∃ serial execution � Final 
 State s 1 ’ � 14

  15. EECS Motivating Example Electrical Engineering and Computer Sciences B ERKELEY P AR L AB Thread 1: Thread 2: � @atomic { @atomic { � q.remove(1); q.remove(1); � } } � ! Traditional atomicity requires: � null � null � ∀ interleaved executions Final 
 State s 1 � ! Initial 
 State s 0 � s 1 == s 1 ’ � q.equals(q’) � ∃ serial execution � Final 
 null � State s 1 ’ � 15

  16. EECS Motivating Example Electrical Engineering and Computer Sciences B ERKELEY P AR L AB Thread 1: Thread 2: � @atomic { @atomic { � q.remove(1); q.remove(1); � } } � Replace with user-defined 
 ! Traditional atomicity requires: � semantic equivalence. � null � null � ∀ interleaved executions Final 
 State s 1 � ! Initial 
 State s 0 � s 1 == s 1 ’ � q.equals(q’) � ∃ serial execution � Final 
 null � State s 1 ’ � 16

  17. EECS Semantic Atomicity Electrical Engineering and Computer Sciences B ERKELEY P AR L AB Thread 1: Thread 2: � @atomic { @atomic { � q.remove(1); q.remove(1); � } } � Replace with user-defined 
 semantic equivalence. � null � null � ∀ interleaved executions Final 
 State s 1 � Initial 
 " ( s 1 , # s 1 ) State s 0 � q.equals(q’) � ∃ serial execution � Final 
 null � State s 1 ’ � 17

  18. EECS Semantic Atomicity Example Electrical Engineering and Computer Sciences B ERKELEY P AR L AB Thread 1: Thread 2: � @atomic { @atomic { � q.remove(1); q.remove(1); � } } � Atomicity predicate: q.equals(q’) � ∀ interleaved executions Final 
 State s 1 � Initial 
 " ( s 1 , # s 1 ) State s 0 � q.equals(q’) � ∃ serial execution � Final 
 State s 1 ’ � 18

  19. EECS Bridge Predicates Electrical Engineering and Computer Sciences B ERKELEY P AR L AB Thread 1: Thread 2: � @atomic { @atomic { � q.remove(1); q.remove(1); � } } � Atomicity predicate: q.equals(q’) � Bridge predicate. � ! Burnim, Sen, “Asserting and Checking Determinism for Multithreaded Programs”, FSE 2009, CACM 2010. � 19

  20. EECS Atomicity vs. Determinism Electrical Engineering and Computer Sciences B ERKELEY P AR L AB ! Semantic Atomicity : � ∀ interleaved executions Final 
 ` State s 1 � Initial 
 State s 0 � Final 
 " ( s 1 , # s 1 ) ∃ serial execution � State s 1 ’ � ! Semantic Determinism : � ∀ interleaved executions Final 
 ` Initial 
 State s 1 � State s 0 � Final 
 " ( s 1 , # s 1 ) ∀ interleaved executions � State s 1 ’ � 20

  21. EECS Semantic Atomicity Example Electrical Engineering and Computer Sciences B ERKELEY P AR L AB int bal = 0; � int conflicts = 0; � With CAS, updates to balance are atomic. � deposit(int a) { � @atomic { � int t = bal; � while (!CAS(&bal, t, t+a)) { � t = bal; � conflicts += 1; � “Performance counter” } � of # of CAS failures. � } � } � Atomicity predicate: bal == bal’ � 21

  22. EECS Semantic Atomicity Example Electrical Engineering and Computer Sciences B ERKELEY P AR L AB ConcurrentList list; � Thread 1: Thread 2: � @atomic { @atomic { � ... ... � list.add(1); list.add(3); � ... ... � list.add(2); list.add(4); � } } � Atomicity predicate: eqSets(list,list’) � ! If list is [1,3,2,4], an atomicity violation? � " User must specify intended atomicity. � 22

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend