Bài giảng Lập trình đồng thời và phân tán: Bài 8 - Lê Nguyễn Tuấn Thành
Thông tin tài liệu:
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình đồng thời và phân tán: Bài 8 - Lê Nguyễn Tuấn Thành LẬPTRÌNHĐỒNG BÀI 8: THỜI BÀI TOÁN BẦU CỬ & 1PHÂN TÁN Giảng viên: Lê Nguyễn Tuấn Thành Email: thanhlnt@tlu.edu.vn NỘI DUNG ▪Bài toán bầu cử ▪Thuật toán dựa trên vòng tròn ▪Thuật toán Chang-Roberts ▪Thuật toán Hirschberg-SinclairBài giảng có sử dụng hình vẽ trong cuốn sách “Concurrent and Distributed Computing in Java, Vijay K. Garg, 2University of Texas, John Wiley & Sons, 2005”Bài toán bầu cử▪ Một bài toán quan trọng trong hệ thống phântán là Bài toán bầu cử tiến trình lãnh đạo▪ Tiến trình lãnh đạo có thể được sử dụng nhưngười điều phối trong những thuật toán tậptrung cho bài toán mutex 3Giao diện Election▪ Phương thức getLeader() trả về định danh của tiến trình được chọn là lãnh đạo▪ Nếu định danh của tiến trình lãnh đạo chưa được biết, thì phương thức này sẽ khóa cho đến khi người lãnh đạo được chọn. 4Bài toán bầu cử:Giải pháp (1)▪ Bài toán bầu cử người lãnh đạo tương tự nhưbài toán loại trừ lẫn nhau ▪ Trong cả 2 bài toán, chúng ta đều quan tâm đến việc chọn ra một trong số các tiến trình, được gọi là tiến trình đặc quyền▪ Các giải pháp dựa trên người điều phối chobài toán mutex không thể áp dụng cho bàitoán bầu cử người lãnh đạo ▪ Lý do: việc quyết định tiến trình nào đóng vai trò người điều phối hoặc giữ token là tương đương với bài toán bầu cử người lãnh đạo 5Bài toán bầu cử:Giải pháp (2)▪ Thuật toán mutex của Lamport có thể ápdụng cho bài toán bầu cử ▪ Tiến trình đầu tiên đi vào CS được xem là người lãnh đạo▪ Tuy nhiên thuật toán này không tổng quát,do: ▪ Nền tảng giao tiếp mạng phía dưới phải kết nối hoàn toàn ▪ Các thông điệp phải truyền đi theo thứ tự FIFO ▪ Mỗi tiến trình phải giao tiếp với mọi tiến trình khác 6Bài toán bầu cử:Giải pháp (3)Trong trường hợp các tiến trình trong hệ thốngphân tán được sắp xếp theo hình tròn, tồn tạicác thuật toán hiệu quả hơn của bài toán bầucử 78 Thuật toán dựa trên vòng tròn Ring-based algorithmsYêu cầu▪Các thuật toán cho bài toán bầu cửngười lãnh đạo giả định rằng các tiếntrình có định danh duy nhất 9Thuật toán củaChang-Roberts▪ Đảm bảo rằng tiến trình với định danh lớnnhất được lựa chọn là tiến trình lãnh đạo▪ Mỗi tiến trình: ▪ Chỉ gửi thông điệp cho hàng xóm bên trái của nó và ▪ Chỉ nhận thông điệp từ hàng xóm bên phải▪ Các tiến trình không biết được tổng số tiếntrình trong hệ thống, cũng như không biếtđịnh danh của các tiến trình khác 10Các bước thực hiện (1)1. Mỗi tiến trình Pi gửi thông điệp tự ứng cử (election) cùng với định danh của nó cho tiến trình bên trái ▪ Nếu nó chưa nhận được thông điệp nào từ một tiến trình với định danh cao hơn2. Khi Pi nhận được thông điệp election từ tiến trình bên phải: ▪ Tiến trình chuyển tiếp các thông điệp với id lớn hơn id của nó sang bên trái ▪ Ngược lại (e.g id của thông điệp nhỏ hơn id của nó), tiến trình nuốt thông điệp đó 11Các bước thực hiện (2)3. Nếu tiến trình Pk nhận lại được thông điệp tự ứng cử (election) của mình ▪ Nó sẽ biết bản thân mình là tiến trình lãnh đạo và thông báo bằng cách gửi thông điệp leader tới tất cả tiến trình khác4. Khi tiến trình Pk nhận lại thông điệp leader của mình ▪ Nó hiểu rằng tất cả tiến trình khác đều đã biết nó là tiến trình lãnh đạo 12public class RingLeader extends Process implements Election { int number; int leaderId = -1; int next; boolean awake = false; … public synchronized int getLeader(){ while (leaderId == -1) myWait(); return leaderId; } public synchronized void handleMsg(Msg m, int src, String tag) { int j = m.getMessageInt(); // get the number if (tag.equals(election)) { if (j > number) sendMsg(next, election, j); // forward the message else if (j == number) // I won! sendMsg(next, leader, myId); else if ((j < number) && !awake) startElection(); } else if (tag.equals(leader)) { leaderId = j; notify(); if (j != myId) sendMsg(next, leader, j); } } public synchronized void startEle ...
Tìm kiếm theo từ khóa liên quan:
Lập trình đồng thời Lập trình phân tán Kỹ thuật lập trình Distributed programming Bài toán bầu cử Thuật toán Hirschberg-SinclairGợi ý tài liệu liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 266 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 208 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 195 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 168 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 153 0 0 -
Báo cáo thực tập Công nghệ thông tin: Lập trình game trên Unity
27 trang 118 0 0 -
Giáo trình về phân tích thiết kế hệ thống thông tin
113 trang 114 0 0 -
LUẬN VĂN: Tìm hiểu kỹ thuật tạo bóng cứng trong đồ họa 3D
41 trang 109 0 0 -
Bài giảng Kỹ thuật lập trình - Chương 10: Tổng kết môn học (Trường Đại học Bách khoa Hà Nội)
67 trang 106 0 0 -
Giáo trình Nhập môn lập trình VB6: Phần 2
184 trang 93 0 0 -
Giáo trình Nhập môn lập trình VB6: Phần 1
246 trang 85 0 0 -
Giáo trình toán rời rạc - Phụ lục 2
15 trang 85 0 0 -
Nghiên cứu triển khai nội địa hóa máy tính thương hiệu Việt Nam
585 trang 83 0 0 -
Giáo trình Lập trình hướng đối tượng với Java: Phần 2 - Trần Thị Minh Châu, Nguyễn Việt Hà
141 trang 75 0 0 -
Cách chia sẻ File, dữ liệu mạng Lan trong Windows Xp
10 trang 61 0 0 -
Giáo trình Ngôn ngữ lập trình C++: Phần 2 - TS. Vũ Việt Vũ
107 trang 58 0 0 -
Luận văn: TÌM HIỂU KỸ THUẬT LẬP TRÌNH NETWORK SERVICE CHO WINDOW
39 trang 55 0 0 -
Bài giảng Kỹ thuật lập trình: Chương 7 - Trần Quang
28 trang 52 0 0 -
Phân tích và thiết kế giải thuật: Các kỹ thuật thiết kế giải thuật - Chương 5
0 trang 51 0 0 -
LUẬN VĂN: Nghiên cứu phương pháp phát hiện thông tin ẩn giấu trong ảnh JPEG 2000
37 trang 48 0 0