Lo i tr l n nhau

ạ ừ ẫ

i quy t v n đ lo i tr l n nhau cho hai b x i thu t sau v i m c đích gi ớ ụ ậ ả ề ạ ừ ẫ ế ấ ộ ử ả Cho gi lý p0 và p1

Gi ả i thu t 1 ậ

Bi n chung ph n ế ầ

Turn có giá tr ban đ u là 0 ị ầ

V i m i b x lý pi ỗ ộ ử ớ

Đo n vào ạ

wait until Turn = i

Đo n raạ

Turn := 1 - i

i thu t trên th a mãn nh ng tính ch t nào sau đây : lo i tr l n nhau, không có ả ạ ừ ẫ ữ ấ ỏ Gi khóa ch t, không có khóa đóng, có c n ch ? Gi i thích vì sao. ậ ế ậ ả ờ

Gi ả i thu t 1: ậ

ạ ừ ẫ ể ấ ờ ộ ỉ - Có tính ch t lo i tr l n nhau: do t đo n vào và có ID = Turn nên s vào đ c đo n găng i b t kỳ th i đi m nào ch có m t BXL trong ạ ấ ượ ẽ ạ ạ

thi trong đo n găng và ra ngoài, khi đó t ả ế ừ ở ạ ạ ế ị t BXL i v a ỉ ượ ể ớ ị ẽ ạ i - Có khóa ch t: vì ta gi c đo n vào (vì đo n ra, giá tr Turn = 1-i. Do đó ch có BXL 1-i m i có th vào đ ạ Turn lúc này có giá tr là 1-i). Tuy nhiên n u BXL 1-i không có nhu c u s d ng tài ầ ử ụ ế i ti p t c mu n s d ng tài nguyên thì BXL i s không nguyên trong khi BXL i l bao gi c đo n vào. H th ng s b deadlock. vào đ ạ ế ụ ệ ố ố ử ụ ẽ ị ượ ạ ờ

Do gi i thu t có khóa ch t nên gi i thu t có khóa đóng và không có c n ch ả ế ậ ả ậ ậ ờ

Gi ả i thu t 2 ậ

Bi n chung ph n ế ầ

Flag[0] và Flag[1] có giá tr ban đ u là true ầ ị

Turn có giá tr ban đ u là 0 ị ầ

V i m i b x lý pi ỗ ộ ử ớ

Đo n vào ạ

wait until Flag[1 - i] = false or Turn = i

Đo n raạ

Flag[i] := false

i thu t trên th a mãn nh ng tính ch t nào sau đây : lo i tr l n nhau, không có ả ạ ừ ẫ ữ ấ ỏ Gi khóa ch t, không có khóa đóng, có c n ch ? Gi i thích vì sao. ậ ế ả ậ ờ

Gi i thu t 2 không có tính ch t lo i tr l n nhau do ả ạ ừ ẫ ậ ấ

- Đ u tiên, BXL 0 đo n vào do lúc đ u Turn = 0 ầ ở ạ ầ

- Vì BXL 0 đo n vào nên n u nó vào đo n găng và đo n ra thì nó s ở ế ạ ạ ở ạ ẽ thi t l p Flag[0] = false, còn Turn = 0 ế ậ

ả ế ề ề ệ ờ đo n vào và do đó s cùng - Ti p theo, c hai BXL 0 và 1 đ u th a mãn đi u ki n ch là wait until ở ẽ ạ Flag[1 - i] = false or Turn = i nên s đ u đo n găng m t lúc, vi ph m tính lo i tr l n nhau ạ ỏ ẽ ề ở ạ ừ ẫ ạ ộ

trong đo n vào thì BXL còn l ở ạ ạ i ch a ch c s ư l n nhau nên có th c ạ ấ ạ ừ ẫ ắ ẽ ở ể ả Có khóa ch t: Do m t BXL đang ộ ế trong đo n găng do gi hai BXL đ u ậ ả trong đo n vào ề ở i thu t không có tính ch t lo i tr ạ

Vì gi i thu t có khóa ch t nên có khóa đóng và không có c n ch ả ế ậ ậ ờ