Bài giảng Cơ sở dữ liệu phân tán - Chương 6: Điều khiển tương tranh

ppt 36 trang phuongnguyen 2670
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Cơ sở dữ liệu phân tán - Chương 6: Điều khiển tương tranh", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptbai_giang_co_so_du_lieu_phan_tan_chuong_6_dieu_khien_tuong_t.ppt

Nội dung text: Bài giảng Cơ sở dữ liệu phân tán - Chương 6: Điều khiển tương tranh

  1. CHƯƠNG 6: ĐIỀU KHIỂN TƯƠNG TRANH NGUYỄN MẬU HÂN, PhD. HUE COLLEGE OF SCIENCES - HUE UNIVERSITY
  2. CONTENTS  1. Một số vấn đề điều khiển đồng thời  2. Một số tính chất khi thao tác trên đơn vị dữ liệu  3. Lịch tuần tự và lịch khả tuần tự  4. Sắp xếp các giao tác bằng nhãn thời gian  5. Điều khiển tương tranh bằng cơ chế khóa
  3. CHƯƠNG 6: ĐiỀU KHIỂN TƯƠNG TRANH MỤC ĐÍCH 3
  4. Giới thiệu ➢ Giao tác là một tập hợp các thao tác có thứ tự truy xuất dữ liệu trên CSDL thành một đơn vị công việc logic (xem là một thao tác nguyên tố), chuyển CSDL từ trạng thái nhất quán này sang trạng thái nhất quán khác. ➢ Nguyên lý điều khiển tương tranh: Là quá trình điều khiển giúp cho nhiều giao tác diễn ra đồng thời mà không xảy ra tranh chấp.
  5. Giới thiệu Mất dữĐiều liệu (Lost gì xảy update) ra khi có sựKhóa đụng chờ (Livelockđộ? ) Khóa chết (Deadlock)
  6. Giới thiệu ➢Để ghi nhận sự hoàn tất hay không của một thao tác người ta sử dụng các lệnh sau: BEGIN TRANSACTION Bắt đầu giao tác COMMIT TRANSACTION Kết thúc một giao tác thành công Kết thúc một giao tác không thành công, những thao tác làm ảnh hưởng CSDL trước đó ROLLBACK TRANSACTION được undo, CSDL được trả về tình trạng trước khi thực hiện giao tác. Chỉ mạng ý nghĩa hình thức, thường không sử END TRANSACTION dụng
  7. 1. Một số vấn đề điều khiển đồng thời 1. 1. Mất dữ liệu cập nhật (lost update)➢Ví dụ: Cho quan hệ HANGHOA (MaHH, Tên HH, ĐVT, SLTon) ➢Giả sử: SLTon =20 Transaction Gía trị T1 (bán hàng) T2 (bán hàng) x1 x2 SLTon Begin Transaction Begin Transaction 20 Read(SLTon)→x1 20 20 Read(SLTon)→x2 20 20 20 x1 - 10→x1 10 20 20 x2 - 3→x2 10 17 20 Write x1→SLTon 10 17 10 Write x2→SLTon 10 17 17 Commit T1 Commit T2 17 Lost Update: Thao tác cập nhật của T1 xem như bị mất, không được ghi nhận (do những thay đổi của các giao tác khác ghi đè lên).
  8. 1. Một số vấn đề điều khiển đồng thời 1.2. Đọc dữ liệu chưa commit (uncommitted data) Ví dụ: Cho quan hệ HANGHOA ( MaHH,TenHH, ĐVT, SLTon) SLton = 20 Transaction Transaction Giá trị T1 sửa đổi T1(nhập hàng) T2 (bán hàng) x1 x2 SLton dòng X nhưng chưa commit, Begin transaction 20 transaction T Read (SLton)→ x 20 20 2 1 đọc dòng X. x + 100 → x 120 20 1 1 Transaction T Write x → SLton 120 120 1 1 rollback những Begin transaction 120 gì thay đổi trên Read (SLton)→ x 120 120 2 dòng X → dữ x – 5 → x 120 2 2 liệu mà Write x → SLton 120 115 2 Transaction T Commit T 120 2 2 đang đọc chưa Rollback T 20 1 hề tồn tại.
  9. 1. Một số vấn đề điều khiển đồng thời 1.3. Thao tác đọc không thể lập lại (unrepeatable data) Ví dụ: Xét 2 giao tác sau: T1 T2 Read(A) Read(A) A = A + 10 Print (A) Write (A) Read (A) Print (A) ➢Giả sử A = 20 và 2 giao tác này thực hiện đồng thời theo thứ tự sau:
  10. 1. Một số vấn đề điều khiển đồng thời 1.3. Thao tác đọc không thể lập lại (unrepeatable data) Transaction Giá trị T1 T2 x1 x2 A Begin transaction 20 Read (A) → x1 20 20 Begin transaction Read (A) → x2 20 20 20 x1 +10 → x1 30 20 Print (x2) 30 20 Write x1 → A 30 30 Read (A) → x2 30 30 Commit T2 30 Commit T1
  11. 1. Một số vấn đề điều khiển đồng thời 1.4. Vấn đề bóng ma (phantom) Transaction Ví dụ: T1 thực hiện việc T1 T2 chuyển tiền từ tài Begin transaction khoản A sang tài Read (A) khoản B. Khi T1 A = A – 50 mới chỉ thực hiện Write (A) thao tác trừ số Begin transaction tiền ở tài khoản A Read (A) (chưa cộng số Read (B) tiền vào tài Print (A+B) khoản B) thì T2 Commit T2 muốn xem tổng Read (B) số tiền ở 2 tài B = B+50 khoản → Tổng Write (B) số tiền không Commit T chính xác. 1
  12. 1. Một số vấn đề điều khiển đồng thời ➢Như vậy: ➢ Một tiêu chuẩn để lập lịch các giao tác là việc thực hiện đồng thời các giao tác cho kết quả như khi thực hiện tuần tự các giao tác. ➢ Để giải quyết đụng độ thì phải có “Cơ chế điều khiển tương”.
  13. 2. Một số tính chất khi thao tác trên đơn vị dữ liệu 2.1. Hai thao tác tương thích ➢Hai thao tác Oi và Oj (Oi € Ti, Oj € Tj) gọi là tương thích nếu và chỉ nếu kết quả của việc thực hiện đồng thời Oi và Oj giống như kết quả của việc thực hiện tuần tự Oi rồi đến Oj hoặc Oj rồi đến Oi. T1 T2 Read A→ a1 Read A→ a2 O11 và O21 là O11 a1 + 1 → a1 a2*2 → a2 O21 tương thích Print a1 Print a2 Read A→ a Read A→ a 1 2 O12 và O22 không O12 a1 + 5 → a1 a2*2 → a2 O22 tương thích Write a1→ A Write a2→ A Read A→ a Read A→ a 1 2 O và O không O a + 2 → a a + 7 → a O 13 23 13 1 1 2 2 23 tương thích Write a1→ A Write a2→ A Read B→ b1 O tương thích với O b + 1 → b 14 14 1 1 các thao tác còn lại Write b1→ B
  14. 2. Một số tính chất khi thao tác trên đơn vị dữ liệu 2.2. Hai thao tác khả hoán vị ➢ Hai thao tác Oi và Oj (Oi thuộc Ti, Oj thuộc Tj) là khả hoán vị nếu kết quả thực hiện Oi ,Oj hay Oj, Oi là như nhau. T1 T2 Read A→ a1 Read A→ a2 ➢O và O là khả O11 a1 + 1 → a1 a2*2 → a2 O21 11 21 Print a1 Print a2 hoán vị ➢O và O không Read A→ a1 Read A→ a2 12 22 khả hoán vị O12 a1 + 5 → a1 a2*2 → a2 O22 Write a1→ A Write a2→ A ➢O13 và O23 là khả hoán vị Read A→ a1 Read A→ a2 ➢O khả hoán vị O13 a1 + 2 → a1 a2 + 7 → a2 O23 14 Write a1→ A Write a2→ A với các thao tác còn lại Read B→ b1 O14 b1 + 1 → b1 Write b1→ B
  15. 2. Một số tính chất khi thao tác trên đơn vị dữ liệu Nhận xét: ➢Các thao tác truy xuất các đơn vị dữ liệu khác nhau là tương thích và khả hoán vị ➢Các thao tác truy xuất trên cùng đơn vị dữ liệu: •Nếu có liên quan đến phép cộng, trừ thì khả hoán vị •Read – Read → khả hoán vị •Write – Write → không có tính khả hoán vị •Read – Write → không có tính khả hoán vị •Write – Read → không có tính khả hoán vị Chú ý: Hai thao tác không khả hoán vị thì gọi là xung đột
  16. 3. Lịch tuần tự và lịch khả tuần tự 3.1. Lịch tuần tự (serial schedule) ➢ Một lịch S được lập từ n giao tác T1, T2, .,Tn xử lí đồng thời gọi là lịch tuần tự nếu các thao tác của từng giao tác được thực hiện liên tiếp nhau. Ti Tj Tk Ti Tj Tk R(x) R(x) W(x) R(x) R(y) W(y) R(x) R(y) W(y) W(x) R(y) W(x) Tuần tự Không tuần tự
  17. 3. Lịch tuần tự và lịch khả tuần tự 3.2. Lịch khả tuần tự (serializable schedule) ➢ Một lịch S được lập từ n giao tác T1, T2, .,Tn xử lí đồng thời gọi là lịch khả tuần tự nếu nó cho cùng kết quả với một lịch tuần tự được lập từ n giao tác trên.
  18. 3. Lịch tuần tự và lịch khả tuần tự 3.2. Lịch khả tuần tự (serializable schedule) ➢ Ví dụ 1: Lịch 1 (A = 1, B = 2) Lịch 2 tuần tự (A = 1, B = 2) T1 T2 T1 T2 Read A→ a1 Read A→ a1 a1 + 1 → a1 a1 + 1 → a1 Write a1→ A Write a1→ A Read A→ a2 Read B→ b1 a2*2 → a2 b1 + 1 → b1 Write a2→ A Write b1→ B Read B→ b1 Read A→ a2 b1 + 1 → b1 a2*2 → a2 Write b1→ B Write a2→ A Read B→ b2 Read B→ b2 b2*2 → b2 b2*2 → b2 Write b2→ B Write b2→ B Kết quả Lịch 1Lịch (A = 4, 1 B có= 6) tính khả tuầnKết quả tự Lịch 2 (A = 4, B = 6)
  19. 3. Lịch tuần tự và lịch khả tuần tự 3.2. Lịch khả tuần tự (serializable schedule) ➢ Ví dụ 2: Lịch 1 (A = 1, B = 2) Lịch 2 (A = 1, B = 2) T1 T2 T1 T2 Read A→ a1 Read A→ a2 a1 + 1 → a1 a2*2 → a2 Write a1→ A Read A→ a1 Read B→ b1 a1 + 1 → a1 b1 + 1 → b1 Write a2→ A Write b1→ B Read B→ b2 Read A→ a2 b2*2 → b2 a2*2 → a2 Write a1→ A Write a2→ A Read B→ b1 Read B→ b2 b1 + 1 → b1 b2*2 → b2 Write b1→ B Write b2→ B Write b2→ B Kết quả LịchLịch 1 (A =2 4, không B = 6) có tính khảKết quả tuần Lịch 2tự (A = 2, B = 4)
  20. 3. Lịch tuần tự và lịch khả tuần tự Như vậy ➢ Tính khả tuần tự của các giao tác là điều kiện đủ để tránh đụng độ trong việc truy xuất đồng thời (Một lịch nếu khả tuần tự thì không đụng độ, nếu không có khả tuần tự thì chưa chắc đụng độ) ➢Bộ lập lịch (schedule): Là một bộ phận của DBMS chịu trách nhiệm lập lịch khả tuần tự từ n giao tác xử lí đồng thời, sẽ tiến hành lập lịch các thao tác (thao tác nào sẽ được thực hiện trước, thao tác nào sẽ được thực hiện sau).
  21. 4. Sắp xếp các giao tác bằng nhãn thời gian 4.1. Khái niệm nhãn thời gian (timestamp) ➢Là 1 con số được phát sinh bởi bộ lập lịch, được gán cho mỗi giao tác để chỉ định thời điểm bắt đầu thực hiện giao tác. Nhãn thời gian có tính chất duy nhất và tăng dần ( Ti < Tj ↔ tTi< tTj) ➢Nhãn thời gian của đơn vị dữ liệu: là nhãn thời gian của giao tác cuối cùng có truy cập đến đơn vị dữ liệu đó thành công, hay là nhãn thời gian cao nhất trong số các giao tác có truy cập thành công đến đơn vị dữ liệu đó. T1 T2 T3 tA Read A tA = tT1 Read A tA = tT2 Read A tA = tT3
  22. 4. Sắp xếp các giao tác bằng nhãn thời gian 4.2. Thuật toán sắp xếp toàn phần Procedure Read (Ti, A) Ghi chú: Begin •tA: nhãn thời gian của đơn vị If tA ≤ tTi then dữ liệu A ThựcNhận hiệnxét thao tác •tTi: nhãn thời gian của giao tác ➢Thuật toán chỉ sắp xếp ➢Ví dụ 1: tT1 = 100, tT2 = 120, tA = đọc Ti thứ tự cáctA :=giao tTi tác (thời •Ban đầu t = 0 khi chưa có T1 A T2 tA gianElse bắt đầu) không giao tác truy cập Read A tA = 100 nhằm sắpRollbackxếp trìnhTi và bắttự Procedure Write (T, A) Read A tA = 120 thực hiện các thaoi tác Beginđầu lại với nhãn thời gian A = A + 1 trongmớimỗi giao tác. A = A + 1 If t ≤ t then Write A t = 120 EndA ProcTi A Thực hiện thao Write A tA > tT1 nên T1 phải rollback và tác ghi bắt đầu lại với tA := tTi timestamp mới Else Rollback T và bắt
  23. 4. Sắp xếp các giao tác bằng nhãn thời gian 4.2. Thuật toán sắp xếp toàn phần ➢Trong trường hợpNhậnnày xét rõ ➢Ví dụ 2: t = 100, t = 120, t = 0 T1 T2 A ràng không xảy T1 T2 tA ra đụng độ T1 Read A tA = 100 không cần phải Read A tA = 120 rollback và bắt Read A t = 120 A đầu lại với Read A tA > tT1 nên T1 phải rollback và timestamp mới. bắt đầu lại với Tuy nhiên do timestamp mới thuật toán sắp xếp toàn phần Như vậy: Thuật toán sắp xếp toàn phần : không quan tâm đến tính chất của thao tác dữ liệu không phân (Read/Write) nên chỉ có 1 nhãn thời gian duy nhất biệt tính chất cho 1 đơn vị dữ liệu. Nếu quan tâm đến tính chất của thao tác dữ liệu thì cần 2 nhãn thời gian cho 1 của thao tác dữ đơn vị dữ liệu tương ứng với thao tác đọc và ghi trên liệu là Read đơn vị dữ liệu đó. hay Write nên T vẫn bị
  24. 4. Sắp xếp các giao tác bằng nhãn thời gian 4.3. Thuật toán sắp xếp từng phần Procedure Read (Ti, A) Begin ➢ Mỗi đơn vị dữ liệu If WTS(A) <= tTi then A có 2 nhãn thời gian Thực hiện thao tác đọc RTS và WTS. Ban RTS(A) :=Max(RTS(A),t ) T1(t = T2(t = Ti T1 đầu, RTST2 = WTSRTS(A)= 0 WTS(A) 100) 120) Else ➢ RTS(A) là nhãn Rollback T và bắt đầu lại thời gian của giao tác i Read A 100 với nhãn thời gian mới có timestampRead A lớn120 nhất truyA=A+1cập (Read) thành End Proc A=A+ công1 lên A Procedure Write (Ti, A) ➢ WriteWTS(A) A là nhãn 120 Begin Write A T1 thời gian của giao tác If (RTS(A) <= tTi) and (WTS(A) có timestamprollbacklớn nhất <= tTi) then truy cập (Write) thành Thực hiện thao tác ghi công lên A WTS(A) :=tTi Else Rollback T và bắt đầu lại
  25. 4. Sắp xếp các giao tác bằng nhãn thời gian 4.3. Thuật toán sắp xếp từng phần ➢Nhận xét : Trong thuật toán sắp xếp từng phần, số lượng giao tác bị rollback lại ít hơn trong thuật toán sắp xếp toàn phần (do nếu 2 giao tác chỉ thực hiện «Đọc» thì không gây ra đụng độ) T1 T2 Nhận xét (1) Read A Thuật toán sắp xếp toàn phần : T1 bị rollback ở (3) (2) Read A Thuật toán sắp xếp từng phần : không có rollback (3) Read A T1 T2 Nhận xét (1) Read A Thuật toán sắp xếp toàn phần : T1 bị rollback ở (3) (2) Write A Thuật toán sắp xếp từng phần : T1 bị rollback ở (3) (3) Read A
  26. 5. Điều khiển tương tranh bằng cơ chế khóa 5.1. Khái niệm khóa (lock) ➢Phương pháp thông dụng nhất để điều khiển việc truy xuất các đơn vị dữ liệu là sử dụng khóa (lock). ➢Lock là một đặc quyền truy xuất (access priveleg) lên các đơn vị dữ liêu của các giao tác mà bộ quản lý khóa có thể trao cho một giao tác hay thu hồi lại. Khi 1 giao tác đã khóa (lock) trên 1 đơn vị dữ liệu nào đó thì các giao tác khác không được phép truy cập đến đơn vị dữ liệu đó cho đến khi nó nhả khóa (unlock). ➢ Khi một giao tác T thực hiện được việc lock đơn vị dữ liệu A, ta nói, T đang giữ lock A ➢Tại mỗi thời điểm, chỉ có một tập con các đơn vị dữ liệu bị khóa, vì vậy bộ quản lý khóa có thể lưu các khóa hiện hành trong một bảng khóa (lock table) với các mẫu tin có dạng sau: (A, L, T) (giao tác T có một khóa kiểu L trên đơn vị dữ liệu A).
  27. 5. Điều khiển tương tranh bằng cơ chế khóa 5.2. Kỹ thuật khóa đơn giản ➢Một giao tác khi có yêu cầu truy xuất đến đơn vị dữ liệu thì phải phát ra yêu cầu xin khóa (lock) trên đơn vị dữ liệu đó, nếu yêu cầu này được chấp thuận thì được quyền thao tác và như vậy các giao tác khác sẽ không được phép truy cập đến đơn vị dữ liệu đó cho đến khi giao tác giữ khóa được unlock T1 T2 Nhận xét Không khóa Lock A Read A T T A (5) 1 2 Lock A T2 chờ T1 Read A 5 Read A Unlock Read A 5 A=A+1 A=A+1 5 A=A+1 A=A+1 5 Write A T1 sẽ Write A 6 Write A hoàn tất Write A 6 Unlock A Unlock A trước khi T2 bắt Kỹ thuật khóađầu. Khi đó A=7
  28. 5. Điều khiển tương tranh bằng cơ chế khóa 5.2. Kỹ thuật khóa đơn giản ➢Ví dụ ➢Nhận xét T T 1 2 ✓Nếu không phân biệt khóa Lock A cho thao tác đọc hay viết thì rõ Read A A=A+1 ràng sẽ có nhiều giao tác phải Lock A ✓chờThựcđể đượctế là nhiềuquyềnkhikhóamộttrêngiao1 Read A tácđơnchỉvị dữcầnliệulấy. giá trị của 1 đơn Unlock A Write A vị dữ liệu nhưng không thay đổi Lock B giá trị đó. Read B B=B+1 ✓Vì vậy để giảm bớt tình Write B Unlock B huống phải chờ khi các giao Unlock A tác cùng đọc dữ liệu, người ta đề nghị tách yêu cầu khóa thành 2 yêu cầu khóa riêng biệt.
  29. 5. Điều khiển tương tranh bằng cơ chế khóa 5.3. Kỹ thuật khóa đọc/viết (Readlock/Writelock) * Khóa để đọc (hay Shared lock): một giao tác T chỉ muốn đọc 1 đơn vị dữ liệu A sẽ thực hiện lệnh RLOCK(A), ngăn không cho bất kì giao tác khác ghi giá trị mới của A trong khi T đã khóa A. Tuy nhiên các giao tác khác vẫn có thể giữ 1 khóa đọc trên A cùng lúc với T. * Khóa để ghi (Exclusive lock): một giao tác T muốn thay đổi giá trị của 1 đơn vị dữ liệu A đầu tiên sẽ lấy khóa ghi bằng cách thực hiện lệnh WLOCK(A). Khi 1 giao tác đang giữ 1 khóa ghi trên 1 đơn vị dữ liệu, các giao tác khác không thể lấy được khóa đọc hay khóa ghi trên A cùng một lúc➢Cảvới haiT. khóa đọc và khóa ghi đều được loại bỏ bằng lệnh UNLOCK
  30. 5. Điều khiển tương tranh bằng cơ chế khóa 5.3. Kỹ thuật khóa đọc/viết (Readlock/Writelock) Điều kiện để xin khóa đọc/viết ➢Một yêu cầu xin RLOCK(A) chỉ được chấp thuận nếu A chưa bị khóa bởi 1 WLOCK trước đó. ➢Một yêu cầu xin WLOCK(A) chỉ được chấp thuận nếu A được tự do. Bảng tương thích các loại khóa Lock đang được giữ R-lock W-lock Giao tác yêu R-lock Yes No cầu lock W-lock No No
  31. 5. Điều khiển tương tranh bằng cơ chế khóa 5.3. Kỹ thuật khóa đọc/viết (Readlock/Writelock) Ví dụ (Với đơn vị dữ liệu B=2) Nhận xét T T Ghi chú ➢Lịch thao tác không khả 1 2 tuần tự nên xảy ra lost Rlock B update. Read B → a1 a1=B=2 Unlock B ➢Việc sử dụng cơ chế Rlock B lock không đủ để bảo Read B → a a =B=2 2 2 đảm tính khả tuần tự cho Unlock B ➢Để giải quyết tính a2 + 1 → a2 a2=3 lịch thao tác Wlock B không khả tuần tự. Dùng Write a2 → B B=a2=3 chiến lược lock 2 pha, Unlock B hoặc yêu cầu các giao a1 + 1 →a1 a1=3 Wlock B tác lock các đơn vị dữ Write a1 → B B=a1=3 liệu theo 1 thứ tự cố định Unlock B (Lost Update) nào đó.
  32. 5. Điều khiển tương tranh bằng cơ chế khóa 5.4. Các vấn đề trong kỹ thuật khóa ➢Giả sử khi T1 giải phóng khóa trên A, khóa này được trao lạiLivelockcho T2. Điều gì sẽ xảy ra nếu như trong khi T2 đang đợi nhận khóa, một giao tác T3 khác cũng xin một khóa trên A, và T3 lại được trao khóa này trước T2. Rồi sau khi T3 được trao khóa trên A thì lại có 1 giao tác T4 xin khóa trên A, Và rất có thể T2 phải đợi mãi và chẳng bao giờ nhận được khóa trong khi luôn có 1 giao tác khác giữ khóa trên A, dù rằng có một số lần T có cơ hội nhận được khóa trên Như vậy, Livelock là trường2 hợp 1 giao tác chờ được A. cấp quyền lock trên 1 đơn vị dữ liệu nào đó mà không xác định được thời điểm được đáp ứng yêu cầu. Yêu cầu hệ thống khi trao khóa phải ghi nhận tất cả các thỉnh cầu chưa được đáp ứng, và khi đơn vị dữ liệu A được mở khóa thì trao cho các giao tác đã xin đầu tiên trong số những giao tác đang đợi khóa A. Và khi đó bộ lập lịch (schedulers) sẽ tiến hành thực hiện cơ chế: giao tác nào yêu cầu trước thì được đáp ứng trước (FIFO).
  33. 5. Điều khiển tương tranh bằng cơ chế khóa 5.4. Các vấn đề trong kỹ thuật khóa Deadlock T1 T2 Nhận xét Lock A - T1 chờ T2 unlock B Lock B - T2 chờ T1 unlock A Lock A → Deadlock ➢T1 yêu cầu vàLockđược B trao khóa trên A, còn T2 yêu cầu và được trao khóa trên B. Do đó khi T1 yêu cầu khóa trên B, nó sẽ phải đợi vì T2 đã khóa B. Tương tự khi T2 yêu cầu khóa trên A, nó cũng buộc phải đợi vì T1 đã khóa A. Kết quả là không một giao tác nào tiếp tục hoạt động được: mỗi giao Deadlocktác đều phảilà tìnhđợi trạngcho giao trongtác đókia nhữngmở khóa, giaovà tácchúng có liênđều quanphải đợi khôngnhưng thểchẳng thực baohiệngiờ tiếpnhận cácđược thao khóatác củayêu nócầu mà. phải chờ nhau mãi Bỏ qua (Hủy, làmNgăn lại) ngừa (Chờ theo chiều nhất Phátđịnh) hiện (Đồ thị chờ)
  34. 5. Điều khiển tương tranh bằng cơ chế khóa 5.4. Nghi thức lock 2 giai đoạn (2 phase) ➢Một giao tác thực hiện cơ chế lock 2 phase là một giao tác không thực hiện một lock nào nữa sau khi đã unlock (thực hiện xong hết tất cả các yêu cầu lock rồi mới thực hiện unlock). T1 T2 T3 Số các đơn vị Lock(A) dữ liệu bị giữ lock Unlock(A) Lock(A) Thời Unlock(A) BOT EOT gian Lock(B) t Unlock(B) Lock(B) Phase lock phase unlock Unlock(B) Trong các giao tác trên, T1 và T3 là các giao tác 2 pha, còn T2 thì không
  35. 5. Điều khiển tương tranh bằng cơ chế khóa 5.4. Nghi thức lock 2 giai đoạn (2 phase) Nhận xét ➢Một lịch S được lập từ n giao tác thỏa nghi thức ➢khóaSử dụng2 pha nghi thì khả thức tuần lock tự. 2 giai đoạn chỉ có thể đảm bảo tính khả tuần tự cho lịch thao tác nhưng không thể bảo đảm không xảy ra vấn đề deadlock. T1 T2 Ghi chú Lock A Lock B Lock B T phải chờ T unlock B Lock A 1 2 T phải chờ T unlock A Unlock A 2 1 → deadlock Unlock B Unlock B Unlock A
  36. CHƯƠNG 6: ĐIỀU KHIỂN TƯƠNG TRANH PHÂN TÁN HẾT CHƯƠNG 6 36