Kiến trúc vòng logic

Một phần của tài liệu Cơ bản về hệ điều hành (Trang 121 - 122)

Thuật toán bầu thủ lĩnh sẽ hết sức đơn giản nếu cho tr−ớc kiến trúc cố định kết nối mọi QT cộng tác. Do kiến trúc chỉ đ−ợc dùng để thuận tiện truyền thông, giả thiết kiến trúc đơn giản nhất là kiến trúc vòng logic.

Vòng logic là dễ dàng xây dựng và cho một thuộc tính có một không hai là TĐ đ−ợc gửi từ bất kì nút nào cũng có thể trở về nút đó, biểu diễn đủ một vòng thao tác hoặc quảng bá mà không cần thêm tri thức.

Để tìm QT có độ −u tiên cao nhất trong vòng logic, QT khởi tạo bắt đầu tuần hoàn TĐ nhờ gắn vào TĐ độ −u tiên (hoặc định danh id) của mỗi nút dọc theo vòng. Khi TĐ quay trở lại nút khởi tạo, nó chọn QT có độ −u tiên cao nhất trong TĐ và quảng bá định danh thủ lĩnh mới tới mọi nút, một vòng nữa gọc theo vòng. Thuật toán có thể đ−ợc cải tiến theo hai h−ớng. Thứ nhất, không cần thiết phải thu thập mọi định danh vào TĐ đơn. Để tìm định danh lớn nhất, mỗi nút đơn giản chỉ chuyển tiếp giá trị lớn hơn giữa định danh của nó và giá trị nhận đ−ợc trên đ−ờng truyền tới nút tiếp theo. Theo cách này, định danh cực đại đ−ợc đ−ợc nổi lên dọc theo vòng và cuối cùng thu đ−ợc nút thủ lĩnh. Thứ hai, nút rơi vào tiến trình bầu cử không cần quan tâm đến TĐ ngoại trừ TĐ chứa giá trị cao hơn so với định danh của bản thân nó.

Thuật toán vòng lôgic cải tiến do Chang và Roberts phát triển, đ−ợc trình bày trong hình 4.22.

Nút khởi tạo khởi động participant = true và send (id) tới nút tiếp theo ; For mỗi nút_QT,

receive(value); case

value > id: participant := true, send (value);

value < id and participant == false: participant := true, send (id); value = id: công bố thủ lĩnh

end case

Hình 4.22. Thuật toán bầu cử vòng của Chang và Robert

Mỗi QT đều có biến cục bộ là participant (đ−ợc khởi tạo là false) cho biết QT này đã tham gia vào tiến trình bầu cử hay ch−a. QT khởi tạo dị bộ bắt đầu bầu cử bằng việc gửi TĐ chứa định danh của nó. Mỗi QT nhận TĐ so sánh định danh của nó với giá trị tại TĐ. Giá trị lớn hơn đ−ợc chuyển tiếp tới nút tiếp theo và QT đặt giá trị cho biến participant=True.

Một QT đã tham gia tiến trình bầu cử, nhận đ−ợc TĐ bầu cử có giá trị định danh nhỏ hơn của nó thì nó không chuyển tiếp TĐ nữa. Thủ lĩnh tìm đ−ợc khi TĐ mang giá trị cực đại đi đủ một vòng và trở về nút nút có định danh lớn nhất. Khi đó, thủ lĩnh gửi định danh của nó lên toàn bộ vòng, thông báo tới mọi nút về bộ phối hợp mới và đăth giá trị biến participant của các nút đó là False.

Tình huống bình th−ờng, khi chỉ có một bộ khởi tạo, thuật toán của Chang và Robert mất trung bình N/2 TĐ để đạt đ−ợc nút định danh lớn nhất và mất khoảng N TĐ khác để quay trở về. Nh− vậy, độ phức tạp thời gian và TĐ của thuật toán là O(N). Độ phức tạp cao hơn trong tr−ờng hợp đặc biệt khi mọi nút đều khởi phát việc bầu cử cùng lúc. Nếu không tối −u, N khởi tạo bầu cử chiếm mỗi cái 0(N) TĐ, và tổng cộng có 0(N2). đ−ợc gửi. Nh− vậy, tr−ờng hợp tốt nhất và tồi nhất của thuật toán vòng lôgic t−ơng ứng là O(N) O(N2), phụ thuộc vào định danh các nút trên vòng đã đ−ợc xếp tăng dần hoặc giảm dần.

Một số thuật toán bầu thủ lĩnh vòng với độ phức tạp TĐ trong khoảng O(NlogN) đã đ−ợc đề xuất. T− t−ỏng của các thuật toán này là giảm khởi tạo bầu cứ từ nút độ −u tiên thấp càng nhiều càng tốt, bất luận thứ tự kiến trúc của các nút. Điều này thực hiện bằng cách so sánh định danh một nút với định danh hai nút kề cận của nó. Nút khởi tạo ở trạng thái chủ động nếu có định danh lớn hơn định danh của hai nút kề cận. Ng−ợc lại nó trở thành bị động và chỉ đ−ợc quyền nhận TĐ. Cách này loại bỏ hiệu quả ít nhất một nửa các nút mỗi vòng chuyển TĐ và kết quả chỉ còn log(N).

H−ớng tiếp cận này đòi hỏi vòng hai chiều. Với vòng một chiều, có hiệu quả t−ơng đ−ơng với so sánh ba nút khi dùng bộ đệm l−u hai TĐ liên tiếp, tr−ớc khi một nút đ−ợc xác định là chủ động hoặc bị động.

Một phần của tài liệu Cơ bản về hệ điều hành (Trang 121 - 122)