Types for Safe Locking (ESOP ’ 99) Cormac Flanagan and Martίn Abadi SRC, Compaq Presenter: Shin SAITO [shin]
Pitfalls in Parallel Programming n 並列プログラミングの落とし穴: – 競合 (race condition) – デッドロック (deadlock)
Outline Target language n Race-free property n Extensions n Future work n
Syntax e Exp : : = —V p (: : = unit | x | x: t. e ) (値)
Examples new-lock x: m in let y = refm 1 in sync x !y n P 2 new-lock x: m in let y 1 = refm 1 f = y {m}: Refm Int. (y : = !y + 1) in sync x ( f y 1) n P 1
Abstract Machine (2/4) n 評価の例: P 1 new-lock x: m in new-lock y: n in let z = refm 1 in sync y !z n 初期状態: ( , , P 1)
Abstract Machine (3/4) n 状態遷移: – ( , , new-lock x: m in new-lock y: n in let z = refm 1 in sync y !z) → ([l 1 0], , new-lock y: n in let z = refol 1 1 in sync y !z) → ([l 1 0, l 2 0], , let z = refol 1 1 in sync l 2 !z)
Typing Rules - for subtyping n subpermission – E├ p, E├ q, p q n subtype E├ p q rule – E├ s 1 t 1, E├ t 2 s 2, E├ p q p q E├ (t 1 → t 2) (s 1 → s 2) n subtyping – E; p├ e : t, E├ p q, E├ t s E; q├ e: s
Race-free Property n スレッド T がセル r にアクセス – f = E[ !r ] or f = E[ r : = V ] – E : evaluation context E : : = [] | E e | V E | refm E | !E | E : = e | r : = E | sync E e | in-sync l E
Extensions n Polymorphism over Lock Types – ロック変数を引数に n Existential Types n Readers-writer Locks n Deadlock-free types
Deadlock Elimination n Deadlock –T= in-sync l 1 (sync l 2 e 1) | in-sync l 2 (sync l 1 e 2) のようなスレッドを含んでいる状態 n Key Idea – Lock type に順序を導入 – new-lock x: m : : (M 1, M 2) in e l l Mi は lock type の集合 順序: M 1 m M 2