1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng Lập trình phân tán

292 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 292
Dung lượng 26,11 MB

Nội dung

TRƯỜNG ĐẠI HỌC THUỶ LỢI KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM Bài giảng LẬP TRÌNH PHÂN TÁN Hà Nội 09/2021 TRƯỜNG ĐẠI HỌC THUỶ LỢI Khoa Công Nghệ Thông Tin Bộ Môn Công Nghệ Phần Mềm LẬP TR[.]

TRƯỜNG ĐẠI HỌC THUỶ LỢI KHOA CÔNG NGHỆ THÔNG TIN BỘ MƠN CƠNG NGHỆ PHẦN MỀM Bài giảng LẬP TRÌNH PHÂN TÁN Hà Nội - 09/2021 TRƯỜNG ĐẠI HỌC THUỶ LỢI Khoa Công Nghệ Thông Tin Bộ Môn Công Nghệ Phần Mềm LẬP TRÌNH PHÂN TÁN Giảng viên: TS Lê Nguyễn Tuấn Thành Email: thanhlnt@tlu.edu.vn ĐT: 0898158945 LẬP TRÌNH ĐỒNG THỜI & PHÂN TÁN TỔNG QUAN MÔN HỌC Giảng viên: Lê Nguyễn Tuấn Thành Email: thanhlnt@tlu.edu.vn Giới thiệu chung ▪Tên mơn học: Lập trình Phân tán ▪Tên tiếng Anh: Distributed Programming ▪Mã mơn học: CSE423 ▪Số tín chỉ: (LT: 2, TH/BT/TL: 1) ▪Số tiết: 30 - Lý thuyết 15 - Thực hành Mục tiêu môn học ▪Cung cấp kiến thức, toán kỹ cho lập trình đồng thời, lập trình song song lập trình phân tán ▪Cung cấp kiến thức tảng để phát triển ứng dụng đồng thời phân tán Terminology ▪ Concurrency, Parallelism, Distribution ▪ Concurrent programming ▪ Thread, Process, Locks, Safety, Liveness, ▪ Deadlock, Livelock, Resource starvation, ▪ Critical section, ▪ Atomic operations/statements and variables ▪ Synchronization ▪ Semaphore, Monitor ▪ Distributed programming ▪ Clock synchronization ▪ Happened-before ▪ Client-Server, RMI, RPC ▪ Graph theory ▪ Bài 1: Những khái niệm sở ▪ Bài 2: Bài toán loại trừ lẫn ▪ Bài 3: Những sở đồng hóa Nội dung mơn học ▪ Bài 4: Lập trình phân tán ▪ Bài 5: Mơ hình chế đồng hồ ▪ Bài 6: Bài toán phân phối tài nguyên ▪ Bài 7: Kiểu thứ tự thơng điệp ▪ Bài 8: Bài tốn lựa chọn người lãnh đạo Yêu cầu với sinh viên ▪ Tham dự lớp nghe giảng đầy đủ ▪ Thảo luận, làm tập lớp Piazza (cộng điểm) ▪ Website môn học: sites.google.com/site/cse423fall2018/ ▪ Lớp học ảo: ▪ Cách đánh giá: ▪ Điểm trình (chuyên cần + thực hành + điểm cộng): 50% ▪ Điểm thi hết môn (trắc nghiệm): 50% Tài liệu tham khảo ▪ Concurrent and Distributed Computing in Java, Vijay K Garg, University of Texas, John Wiley & Sons, 2005 ▪ Tham khảo: ▪ Principles of Concurrent and Distributed Programming, M Ben-Ari, Second edition, 2006 ▪ Foundations of Multithreaded, Parallel, and Distributed Programming, Gregory R Andrews, University of Arizona, Addison-Wesley, 2000 ▪ The SR Programming Language: Concurrency in Practice, Benjamin/Cummings, 1993 ▪ Xử lý song song phân tán, Đoàn văn Ban, Nguyễn Mậu Hân, Nhà xuất Khoa học Kỹ thuật, 2009 LẬP TRÌNH ĐỒNG THỜI & PHÂN TÁN BÀI 1: NHỮNG KIẾN THỨC CƠ SỞ Giảng viên: Lê Nguyễn Tuấn Thành Email: thanhlnt@tlu.edu.vn Giao diện Election ▪ Phương thức getLeader() trả định danh tiến trình chọn lãnh đạo ▪ Nếu định danh tiến trình lãnh đạo chưa biết, phương thức khóa người lãnh đạo chọn Bà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ự toán loại trừ lẫn ▪ Trong toán, quan tâm đến việc chọn số tiến trình, gọi tiến trình đặc quyền ▪ Các giải pháp dựa người điều phối cho tốn mutex khơng thể áp dụng cho toán bầu cử người lãnh đạo ▪ Lý do: việc định tiến trình đóng vai trị người điều phối giữ token tương đương với toán bầu cử người lãnh đạo Bài toán bầu cử: Giải pháp (2) ▪ Thuật toán mutex Lamport áp dụng cho tốn bầu cử ▪ Tiến trình vào CS xem người lãnh đạo ▪ Tuy nhiên thuật tốn khơng tổng quát, do: ▪ Nền tảng giao tiếp mạng phía phải kết nối hồn tồn ▪ Các thơng điệp phải truyền theo thứ tự FIFO ▪ Mỗi tiến trình phải giao tiếp với tiến trình khác Bài toán bầu cử: Giải pháp (3) Trong trường hợp tiến trình hệ thống phân tán xếp theo hình trịn, tồn thuật tốn hiệu toán bầu cử Thuật tốn dựa vịng trịn Ring-based algorithms u cầu ▪Các thuật toán cho toán bầu cử người lãnh đạo giả định tiến trình có định danh Thuật toán Chang-Roberts ▪ Đảm bảo tiến trình với định danh lớn lựa chọn 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 ▪ 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 tổng số tiến trình hệ thống, khơng biết định danh tiến trình khác 10 Các bước thực (1) Mỗi tiến trình Pi gửi thơng điệp tự ứng cử (election) với định danh cho tiến trình bên trái ▪ Nếu chưa nhận thơng điệp từ tiến trình với định danh cao Khi Pi nhận thông điệp election từ tiến trình bên phải: ▪ Tiến trình chuyển tiếp thông điệp với id lớn id sang bên trái ▪ Ngược lại (e.g id thơng điệp nhỏ id nó), tiến trình nuốt thơng điệp 11 Các bước thực (2) Nếu tiến trình Pk nhận lại thơng điệp tự ứng cử (election) ▪ Nó biết thân tiến trình lãnh đạo thơng báo cách gửi thông điệp leader tới tất tiến trình khác Khi tiến trình Pk nhận lại thơng điệp leader ▪ Nó hiểu tất tiến trình khác biết tiến trình lãnh đạo 12 public 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 startElection() { awake = true; sendMsg(next, "election", number); } } 13 Đánh giá: trường hợp tồi & tốt Độ phức tạp thông điệp trường hợp xấu Độ phức tạp trung bình O(N log 14 Thuật tốn Hirschberg-Sinclair (1) ▪ Giả sử việc truyền thơng vịng trịn theo chiều ▪ Có thể gửi thơng điệp sang bên trái bên phải ▪ Ý tưởng: thực việc bầu cử tập tiến trình với số lượng tăng dần sau vòng bầu cử ▪ Một tiến trình Pi cố gắng bầu cho vịng r ▪ Chỉ tiến trình thắng vịng r tiến vào vịng r+1 15 Thuật tốn Hirschberg-Sinclair (2) ▪ Tiến trình Pi tiến trình lãnh đạo vịng r Pi có định danh lớn tất tiến trình với khoảng cách nhỏ 2r tính từ Pi ▪ Hai tiến trình bầu lãnh đạo sau vịng r phải có khoảng cách 2r ▪ Sau vịng r, có nhiều N/(2r-1 + 1) tiến trình lãnh đạo ▪ Sau vịng, số lượng tiến trình lãnh đạo giảm đi, sau O(log N) vịng cịn xác tiến trình lãnh đạo ▪ Ở vịng có nhiều O(N) thơng điệp, tổng số thơng điệp O(N log N) 16 Ví dụ ▪ Khởi đầu: ▪ Tất tiến trình người lãnh đạo ▪ Vòng 0: ▪ 6, 7, người lãnh đạo ▪ Vòng 1: ▪ 7, người lãnh đạo ▪ Vòng 2: ▪ người lãnh đạo 17 Tài liệu tham khảo ▪ Concurrent and Distributed Computing in Java, Vijay K Garg, University of Texas, John Wiley & Sons, 2005 ▪ Tham khảo: ▪ Principles of Concurrent and Distributed Programming, M Ben-Ari, Second edition, 2006 ▪ Foundations of Multithreaded, Parallel, and Distributed Programming, Gregory R Andrews, University of Arizona, Addison-Wesley, 2000 ▪ The SR Programming Language: Concurrency in Practice, Benjamin/Cummings, 1993 ▪ Xử lý song song phân tán, Đoàn văn Ban, Nguyễn Mậu Hân, Nhà xuất Khoa học Kỹ thuật, 2009 18

Ngày đăng: 02/10/2023, 13:38

TỪ KHÓA LIÊN QUAN