Áp dụng bài toán phân công công việc cho bài toán tô đồ thị phẳng bằng sáu màu:

Một phần của tài liệu Khả năng chịu lỗi trong hệ thống phân tán luận văn thạc sĩ (Trang 40)

màu:

Thuật toán này cũng như thuật toán trước , vẫn áp dụng ổn định đã trình bày. Trong thuật này không có Master mà các process tự phân công công việc theo thuật toán ở trên.

Thuật toán cho process p:

Dữ liệu:

- p_tid : tid của process,

- p_index : chỉ số công việc process p đảm nhận, - p_L : số lượng công việc p đang đảm nhận, - q_index : chỉ số công việc process q đảm nhận, - q_L : số lượng công việc q đang đảm nhận,

- danhan_k[N] : nếu danhan_k[i]=1 thì p đã nhận các thông tin về công việc thứ i, - p_karr[N]: nếu danhan_k[i]=1 thì p đang đảm nhận công việc i,

- x[N] : giá trị đỉnh, xác định hướng cạnh ( kết hợp với chỉ số đỉnh), - c[N] : màu tô đỉnh.

begin

p_L=1;

repeat

If có một process q vừ khởi tạo then begin

Nhận q_tid,q_index của q; Kết nối với p;

Nếu process p đang đảm nhận q_index thì p_L = p_L-1; end

(v_index, v_L) = (p_index, p_L) ; For all process q

begin

If p đang đảm nhận q_index (kể cả process p_index) hoặc process q ngưng

hoạt động then

danhan_k[q_index]=1; If p đang đảm nhận q_index then

p_karr[q_index]=1; end

Gởi <p_index, p_L, p_karr> cho các process q;

while(nhận chưa đủ <p_index, p_L, p_karr> từ các q còn hoạt động) /* k : danhan_k[k]=0 */

begin

If có process q ngưng hoạt động then

begin

Nhận q_index của q;

danhan_k[q_index]=1; // xem như đã nhận các thông tin từ q end

If có thông điệp từ process q then

begin

Nhận q_tid,q_index,q_L, q_karr, q_giá trị của q;

If p không đảm nhận q_index then

begin

For k = 0 to N-1

If q_karr[k]=1 then

danhan_k[k]=1; // đã nhận thông điệp k mà q đảm nhận, // k_giá trị

If (q_index , q_L) < (v_index, v_L) then

(q_index , q_L) = (v_index, v_L);

end

end // while

If (q_index , q_L)= (v_index, v_L) then

/* p là process có ít công việc nhất và có chỉ số bé nhất */ begin

Tìm chỉ số k nhỏ nhất chưa có process đảm nhận , gán k cho p; p_L++; // số công việc tăng lên 1

end

If mọi đỉnh k được đảm nhận bởi một process then Tính x ,c ;

until thỏa điều kiện kết thúc;

end. /*kết thúc process*/

CHUƠNG 5 : KẾT QUẢ THỰC NGHIỆM 5.1 Kết quả thực nghiệm của thuật toán Bracha – Toueg :

Một phần của tài liệu Khả năng chịu lỗi trong hệ thống phân tán luận văn thạc sĩ (Trang 40)