Thuật toán TO bảo thủ

Một phần của tài liệu tìm hiểu một số thuật toán điều khiển tương tranh trong cơ sở dữ liệu phân tán (Trang 59 - 61)

6. Cấu trúc luận văn

3.2.3.2.Thuật toán TO bảo thủ

Điểm bất lợi chính yếu của thuật toán TO cơ bản là các bộ đếm là độc lập. Điều này dẫn đến trƣờng hợp bộ đếm của một vị trí riêng nào đấy trục trặc. Kết quả là có thể có nhiều sự huỷ bỏ cho đến khi bộ đếm của các vị trí thấp tiến đến bằng với bộ đếm của các vị trí khác. Cách giải quyết vấn đề này là giữ lại một bộ đếm đƣợc đồng bộ hoá mà không cần có sự giao tiếp giữa các vị trí vì rằng điều đó sẽ rất tốn kém. Một ví dụ của bộ đếm nhƣ vậy là đồng hồ hệ thống.

Trong thuật toán TO bảo thủ, bộ lập lịch dành một hàng đợi cho mỗi TM. Hàng đợi bao gồm các thao tác đọc và ghi đã sắp hàng trong hàng đợi RQ và WQ. Ý tƣởng là nên trì hoãn việc thực hiện thao tác cho đến khi chắc rằng không có thao tác TS nào nhỏ hơn khác nữa.

Nhƣ vậy các thao tác trong hàng đợi đƣợc sắp theo thứ tự tăng dần của thời nhãn và chúng đƣợc thự thi theo cùng thứ tự.

Hình 3.9: Sơ đồ thuật toán BTO bảo thủ

Cho TS(Q) là nhãn thời gian của thao tác đầu tiên trong hàng đợi. Quá trình so sánh luôn thực hiện với thao tác đầu tiên trong bất kỳ hàng đợi nào. Hai trƣờng hợp tƣơng ứng của thuật toán TO bảo thủ đƣợc trình bày dƣới đây dƣới dạng ngôn ngữ giả:

Thuật toán TO bảo thủ:

read: if TS(T) < WTS(x) then “từ chối” read else

if lock_queue(x) # and TS(T) > min{TS(T‟) | T‟ lock_queue(x)} then

“chèn” read(x) vào read_queue(x); else

begin

• “thực hiện” read(x);

• RTS(x) := max{RTS(x), TS(T)}; end;

lock: if TS(T) < max{RTS(x), WTS(x)} then “từ chối” lock else “chèn” lock(x) vào lock_queue(x);

write: lr_queue := lock_queue(x) read_queue(x);

if TS(T) > min{TS(T‟) | T‟ lr_queue(x)} then “chèn” write(x) vào write_queue(x); else

begin

- “thực hiện write(x);

- “xoá lock tƣơng ứng” trong lock_queue(x);

- WTS(x) := TS(T);

- “kiểm tra các thao tác có thể thực hiện đƣợc” trong

read_queue(x) và write_queue(x) end;

Thuật toán TO bảo thủ làm giảm số lần phải khởi động lại các thao tác bằng cách sử dụng hàng đợi. Tuy nhiên khi bộ TM không có bất kỳ thao tác nào để thực hiện thì nó phải gửi các thao tác giả đến SC, vì vậy nó biết rằng các thao tác sau đó sẽ có thời nhãn lớn hơn hoặc bằng thời nhãn giả đã gửi đi.

Một phần của tài liệu tìm hiểu một số thuật toán điều khiển tương tranh trong cơ sở dữ liệu phân tán (Trang 59 - 61)