Thuật toán Ricart và Agrawala: Cải tiến của hàng đợi tập trung

Một phần của tài liệu XÂY DỰNG GIẢI PHÁP ĐỒNG BỘ HÓA TIẾN TRÌNH TRÊN HỆ PHÂN TÁN VỚI 4 SERVER (Trang 25 - 26)

Mục tiêu là để giảm việc chuyển thông điệp bằng cách kết hợp các thông điệp REL và REP.

Nếu một trạm đang thi hành miền găng khi một yêu cầu REQ đến, hoặc nếu yêu cầu đang chờ của chính nó có dấu thời gian sớm hơn, nó không đáp ứng yêu cầu đó ngay lập tức. Thay vào đó, nó chờ cho đến khi nó ra khỏi miền găng của nó. Tại thời điểm đó, nó có thể gửi một thông điệp hồi âm/giải phóng đến tất cả các yêu cầu đang chờ.

Một trạm sẽ phải chờ cho đến khi nó nhận được trả lời từ tất cả các trạm còn lại trước khi đi vào miền găng của nó, và yêu cầu của nó vẫn phải còn nằm ở đỉnh của hàng đợi.

Thuật toán này yêu cầu 2(N-1) thông điệp: một nửa cho các yêu cầu, nửa còn lại để trả lời.

Các thời gian lôgic được tạo ra như trong thuật toán Lamport (Hàng đợi phân tán).

Phần yêu cầu của Pi :

+ Gửi đi thông điệp REQ cho tất cả các tiến trình như trong thuật toán Lamport.

+ Truy cập vào CSi sau khi Pi nhận được thông điệp ACK từ tất cả các tiến trình khác.

Phần thu của Pi khi nhận được thông điệp REQ từ Pj :

1. Nếu Pi không muốn truy cập vào miền găng CSi của nó (nó chưa gửi đi thông điệp REQ), thì Pi trả lời với thông điệp ACK.

2. Nếu Pi đang ở trong miền găng CSi thì Pi hoãn lại việc hồi âmcho đến khi nó rời khỏi miền găng CSi.

3. Nếu Pi muốn truy cập vào miền găng CSi (nó đã gửi cho tất cả các tiến trình khác thông điệp REQ), thì Pi so sánh thời gian lôgic ti của thông điệp yêu cầu của chính nó với thời gian lôgic tj của yêu cầu từ Pj :

1* Nếu ti > tj thì Pi trả lời với thông điệp ACK.

2* Nếu ti < tj thì Pi hoãn lại việc hồi âm (cho đến sau khi Pi kết thúc CS tiếp theo).

Các xung đột được giải quyết nhờ vào yêu cầu “sớm hơn”, được xác định bởi các thời gian lôgic.

Ví dụ:

Một phần của tài liệu XÂY DỰNG GIẢI PHÁP ĐỒNG BỘ HÓA TIẾN TRÌNH TRÊN HỆ PHÂN TÁN VỚI 4 SERVER (Trang 25 - 26)

Tải bản đầy đủ (DOCX)

(28 trang)
w