intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Tính khả tuần tự của lịch thao tác trong cơ chế Lock

Chia sẻ: Lê Trinh | Ngày: | Loại File: PDF | Số trang:12

633
lượt xem
33
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

- Đánh dấu tất cả lệnh Unlock. - Xét tuần tự từng lệnh Unlock: o Giả sử đang xét lệnh Unlock (A) của giao tác Ti. o Với mỗi lệnh Lock (A) của các giao tác Tj (j I ) được thực hiện sau lệnh này, vẽ 1 cung hướng từ Ti  Tj. - Nếu đồ thị không có chu trình  Lịch S khả tuần tự.

Chủ đề:
Lưu

Nội dung Text: Tính khả tuần tự của lịch thao tác trong cơ chế Lock

  1. Tính khả tuần tự của lịch thao tác trong cơ chế Lock.
  2. 1. Cơ chế Lock 2. Cơ chế Lock 2 giai đoạn (2 Phases Locking) 3. Bài tập và hướng dẫn: CHÚ Ý: Quy ước: Để thuận lợi cho việc biểu diễn các thao tác theo thời gian, 1 thao tác được viết dưới dạng MiTj. Trong đó: - M là tên thao tác, có thể là Read, Write, Lock, Unlock, Rlock … - Với i là thứ tự theo thời gian từ trên xuống. - Với j là mã số của giao tác, ví dụ T1,T2 … Tj.
  3. TÍNH KHẢ TUẦN TỰ CỦA LỊCH THAO TÁC TRONG CƠ CHẾ LOCK I. CƠ CHẾ LOCK : 1. Đặc điểm: Chỉ xét các thao tác Lock và Unlock để xét tính khả tuần tự của lịch. 2. Đồ thị khả tuần tự ( cơ chế lock ) - S là tập các giao tác T1,T2,T3…Tn - Xét các thao tác Mi có dạng Lock(A) và Unlock(A). - Nếu Ti có 1 thao tác dạng Unlock(A), Tj có thao tác tiếp theo sau đó có dạng Lock(A) thì vẽ 1 cung có hướng từ Ti Tj . - Lịch thao tác khả tuần tự  đồ thị không có chu trình . Ví dụ 1: Time T1 T2 1 Lock(A) 2 Read (A)  a1 3 Unlock(A) 4 Lock(A) 5 Read(A)  a2 6 a2 + 1  a2 7 Write(a2)  A 8 Unlock(A) 9 a1 + 1  a1 10 Lock(A) 11 Write(a1) A 12 Unlock(A)  Hướng dẫn: - T1 thực hiện Unlock3T1(A) sau đó T2 thực hiện Lock4T2(A)  ta có : T1  T2 - T2 thực hiện Unlock8T2(A) sau đó T1 thực hiện Lock10T1(A)  ta có: T2  T1
  4. - Kết luận: Đồ thị có chu trình  Lịch S không khả tuần tự. 3. Cách xây dựng đồ thị khả tuần tự: - Đánh dấu tất cả lệnh Unlock. - Xét tuần tự từng lệnh Unlock: o Giả sử đang xét lệnh Unlock (A) của giao tác Ti. o Với mỗi lệnh Lock (A) của các giao tác Tj (j I ) được thực hiện sau lệnh này, vẽ 1 cung hướng từ Ti  Tj. - Nếu đồ thị không có chu trình  Lịch S khả tuần tự. Ví dụ 2: Cho lịch S như sau. Xét tính khả tuần tự của lịch S. Time T1 T2 T3 T4 1 Lock(A) 2 Lock(A) 3 Lock(B) 4 Unlock(A) 5 Unlock(B) 6 Lock(B) 7 Unlock(A) 8 Lock(B) 9 Lock(A) 10 Unlock(B) 11 Lock(C) 12 Unlock(A) 13 Lock(A) 14 Unlock(A) 15 Unlock(B) 16 Unlock(C)
  5.  HƯỚNG DẪN: B1. Đánh dấu ( tô đậm như trên hình vẽ trên) B2: Lần lượt xét các Unlock ( có dạng UnlockxTy(X) với x là thứ tự thời gian và y là thứ tự giao tác):  Xét Unlock4T2(A) của T2 trên ĐVDL là A: o Ta có: Lock9T1(A) và Lock13T4(A) thực hiện sau thao tác đó nên  Ta có 2 cung sau: T2  T1 và T2  T4  Xét Unlock5T2(B) của T2 trên ĐVDL là B: o Ta có: Lock6T1(B) và Lock8T4(B) thực hiện sau thao tác đó nên  Ta có 2 cung sau: T2 T1 và T2 T4  Xét Unlock7T3(A) của T3 trên ĐVDL là A: o Ta có: Lock9T1(A) và Lock13T4(A) thực hiện sau thao tác đó nên  Ta có 2 cung sau: T3  T1 và T3  T4  Xét Unlock10T4(B) của T4 trên ĐVDL là B: o Sau thao tác trên không có giao tác Tj nào thực hiện Lock(B) nên ta không tìm được thêm cung nào.  Xét Unlock12T1(A) của T1 trên ĐVDL là A: o Ta có: Lock13T4(A) thực hiện sau thao tác trên nên ta có cung : T1T4  Xét các Unlock14T4(A), Unlock15T1(B) và Unlock16T1(C) ta có: o Sau các thao tác này không có các giao tác khác thực hiện Lock trên ĐVDL tương ứng nên ta không tìm được thêm cung nào nữa.
  6. B3: Vẽ đồ thị. Sau bước 2 ta có các cung và đồ thị tương ứng sau: Cung ĐVDL T2T1 A,B T2T4 A,B T3T1 A T3T4 A T1T4 B Nhận xét đồ thị không có chu trình:  Lịch S khả tuần tự theo thứ tự thực hiện sau:  T2  T3  T1  T4 hoặc  T3  T2  T1  T4
  7. II. KHÓA 2 GIAI ĐOẠN (2 PL , Two Phase Lock): 1. Điều kiện thỏa nghi thức khóa 2 giai đoạn (2PL): - Sau khi thực hiện thao tác Unlock (A ) không thực hiện lại thao tác Lock (A) nào cả. - Trước khi thực hiện thao tác Lock (A) không tồn tại 1 thao tác Unlock(A) nào cả. - Ví dụ: T2 T1 Lock(A) Lock(A) Read(A) Read(A) Unlock(A) Lock(B) Lock(B) Read(B) Read(B) B=B+A B=B+A Write(B) Write(B) Unlock(A) Unlock(B) Unlock(B) Thỏa nghi thức 2PL Không thỏa nghi thức 2PL 2. Quy tắc xét lịch thao tác khả tuần tự: - S là tập các giao tác T1,T2,T3… Tn. - Xét các thao tác Mi có dạng Lock(A) và Unlock(A). o Nếu Ti thực hiện thao tác Rlock(A) hoặc WLock(A) và trong giao tác Tj thực hiện sau đó thao tác Wlock(A) thì vẽ cung từ Ti  Tj . (tạm gọi là cung kiểu 1) o Nếu Ti thực hiện thao tác Wlock(A) , và trong Tj thực hiện thao tác Rlock(A) sau khi Ti thực hiện xong thao tác Unlock(A) nhưng trước khi các thao tác khác thực hiện thao tác Wlock(A) thì vẽ 1 cung từ Ti  Tj . (tạm gọi là cung kiểu 2) - Lịch thao tác khả tuần tự  đồ thị không có chu trình.
  8. II. BÀI TẬP : 1. Bài tập 1 : Cho lịch S như sau : Time T1 T2 1 RL(A) 2 Read(A) 3 UL(A) 4 RL(B) 5 Read(B) 6 UL(B) 7 WL(A) 8 Read(A) 9 A=A+B 10 Write(A) 11 UL(A) 12 WL(B) 13 Read(B) 14 B=B+A 15 Write(B) 16 UL(B) a. Xét lịch S có khả tuần tự hay không? b. Giao tác nào trong 2 giao tác T1, T2 không thỏa 2PL. Hướng dẫn: a. Xét tính khả tuần tự của S. - Giao tác T1 thực hiện Rlock1T1(A), sau đó T2 thực hiện Wlock7T2(A), ta có cung : T1  T2 - Giao tác T2 thực hiện Rlock4T2(B) sau đó T1 thực hiện Wlock12T1(B),ta có cung : T2  T1
  9. - Kết luận: Đồ thị có chu trình  Lịch không khả tuần tự. b. Xét thỏa tính chất 2PL - Xét T1: RLock(A)  Read (A)  Unlock(A)  Wlock(B)  Read(B)  B=B+A  Write(B)  Ulock(B). o Ta có : Wlock(B) thực hiện sau Unlock (A)  T1 không thỏa 2PL. - Xét T2: RLock(B)  Read(B)  Unlock(B)  Wlock(A)  Read(A)  A=A+B  Write(A)  Unlock(A) . o Ta có: Wlock(A) thực hiện sau Unlock(B)  T2 không thỏa 2PL.
  10. 2. Bài tập 2: Cho lịch S như sau. Time T1 T2 T3 T4 1 RL(A) 2 RL(A) 3 WL(B) 4 UL(A) 5 WL(A) 6 UL(B) 7 RL(B) 8 UL(A) 9 RL(B) 10 RL(A) 11 UL(B) 12 WL(C) 13 UL(A) 14 WL(B) 15 UL(B) 16 UL(B) 17 UL(C) a. Xét S có khả tuần tự không b. Các giao tác T1, T2, T3, T4 có thỏa 2PL không.  HƯỚNG DẪN: a. Xét tính khả tuần tự. Cách 1:  Xét trên đơn vị dữ liệu A(màu cam), xét lần lượt từ trên xuống các Rlock và Wlock trên ĐVDL A: o T2 thực hiện Rlock1T2(A) sau đó T3 thực hiện Wlock5T3(A) nên ta có cung: T2  T3. o T3 thực hiện Wlock5T3(A) rồi thực hiện Unlock8T3(A), sau đó T1 thực hiện Rlock10T1(A)  ta có cung T3 T1. o Rlock2T3(A) của T3 và Rlock10T1(A) không tạo thêm cung nào vì sau nó không có thao tác Wlock(A) nào cả.  Xét trên đơn vị dữ liệu B(màu xanh dương), ta cũng xét các thao tác Rlock và Wlock lần lượt từ trên xuống, ta có:
  11. o T2 thực hiện Wlock3T2(B) (xét cung kiểu 1):  Ta có T4 thực hiện Wlock14T4(B) sau thao tác trên của T2 nên ta có cung: T2  T4. o T2 thực hiện Wlock3T2(B) sau đó thực hiện Unlock6T2(B) (xét cung kiểu 2) và:  T1 thực hiện Rlock7T1(B) ngay sau đó mà chưa có bất kì 1 giao tác nào khác T1 thực hiện Wlock(B) nên T1 phải thực hiện sau T2 . Ta có cung: T2 T1.  Tương tự với giao tác T4 với thao tác Rlock9T4(B). Ta có cung: T2 T4. o T1 thực hiện Rlock7T1(B):  T4 thực hiện Wlock14T4 (B) sau thao tác trên của T1 nên ta có cung: T1 T4. o Việc xét các thao tác Rlock9T4(B) và Wlock14T4(B) không tạo thêm cung nào mới vì sau các thao tác trên không tồn tại 1 thao tác Wlock(B) và Rlock(B) nào trên các giao tác khác T4.  Xét trên ĐVDL C (màu xanh lá cây): o Dễ dàng thấy được, việc xét các thao tác trên ĐVDL này không thể tạo thêm cung mới nào vì tất cả các thao tác đều thuộc T1. Như vậy, sau khi xét lần lượt các thao tác cho từng ĐVDL ta có danh sách các cung và đồ thị sau: Cung ĐVDL T2T3 A T3T1 A T2T1 B T2T4 B T1T4 B Nhận xét: Đồ thị không có chu trình. Kết luận: S khả tuần tự : T2  T3  T1  T4
  12. Cách 2: Sau câu b bên dưới ta thấy được rằng, T1, T2,T3,T4 đều thỏa 2PL và S thỏa 3 quy tắc (1),(2),(3) nên việc đồ thị ưu tiên của S tồn tại 1 chu trình là vô lý (xem thêm trong tài liệu và slide của cô) nên  S khả tuần tự. b. Xét thỏa 2PL Giao tác Thỏa Ghi chú 2PL T1 Thỏa T2 Thỏa T3 Thỏa T4 Thỏa Dạng nâng cấp khóa
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2