Bài giảng Lập trình đồng thời và phân tán: Bài 7 - Lê Nguyễn Tuấn Thành

35 64 0
Bài giảng Lập trình đồng thời và phân tán: Bài 7 - Lê Nguyễn Tuấn Thành

Đ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

Bài giảng Lập trình đồng thời và phân tán - Bài 7: Bài toán sắp thứ tự thông điệp cung cấp cho người học các kiến thức: Thứ tự FIFO, thứ tự nhân quả, thứ tự đồng bộ, thứ tự toàn bộ cho thông điệp multicast. Mời các bạn cùng tham khảo.

LẬP TRÌNH ĐỒNG THỜI & PHÂN TÁN BÀI 7: BÀI TỐN SẮP THỨ TỰ THƠNG ĐIỆP Giảng viên: Lê Nguyễn Tuấn Thành Email: thanhlnt@tlu.edu.vn Tính khơng xác định (1) ▪ Các chương trình phân tán khó thiết kế kiểm thử tính chất khơng xác định ▪ Nguyên nhân: thứ tự khác thơng điệp lần thực thi ▪ Một tính tốn bất đồng hồn tồn khơng có giới hạn thứ tự thông điệp ▪ Cho phép tối đa đồng thời ▪ Tuy nhiên: KHÓ thiết kế thuật toán cho thứ tự giao tiếp bất đồng hồn tồn ▪ Do thuật tốn phải tính đến tất thứ tự có việc truyền thơng điệp Tính khơng xác định (2) Mong muốn: kiểm sốt tính chất khơng xác định chương trình phân tán ▪ Bằng cách kiểm sốt kiểu thứ tự thơng điệp có hệ thống phân tán NỘI DUNG ▪ Thứ tự FIFO ▪ Thứ tự nhân ▪ Thứ tự đồng ▪ Thứ tự tồn cho thơng điệp multicast ▪ Thuật toán tập trung ▪ Thuật toán Lamport ▪ Thuật tốn Skeen Bài giảng có sử dụng hình vẽ sách “Concurrent and Distributed Computing in Java, Vijay K Garg, University of Texas, John Wiley & Sons, 2005” Thứ tự FIFO FIFO ordering Thứ tự FIFO ▪ Nhiều hệ thống phân tán giới hạn việc phân phối thông điệp theo thứ tự FIFO ▪ Giúp đơn giản hoá thiết kế thuật toán ▪ Ví dụ: sử dụng giả thiết thứ tự FIFO thuật toán Lamport cho toán truy cập tài nguyên chia sẻ ▪ Tuy nhiên: chương trình vài tính chất đồng thời ▪ Khi nhận thông điệp không tuân theo thứ tự FIFO, việc xử lý phải bị trì hoãn Thứ tự FIFO Định nghĩa ▪  Thứ tự FIFO Thuật tốn (1) ▪ Mỗi tiến trình lưu ma trận M[1 N, N] ▪ Phần tử M[j,k] tiến trình Pi lưu lại số lượng thơng điệp gửi từ tiến trình Pj cho tiến trình Pk, biết tiến trình Pi Thứ tự FIFO Thuật toán (2) ▪  10 Thứ tự nhân Causal ordering Thứ tự đồng Thuật toán ▪ Thêm thông điệp điều khiển (ack, request, permission) để đảm bảo thứ tự đồng ▪ Những thông điệp điều khiển không cần tuân theo thứ tự đồng ! ▪ Sử dụng loại thông điệp Thơng điệp lớn: gửi tiến trình có định danh lớn tới tiến trình có định danh nhỏ Thơng điệp nhỏ: gửi tiến trình có định danh nhỏ tới tiến trình có định danh lớn ▪ Một tiến trình trạng thái: active (chủ động) passive (thụ động) ▪ Ban đầu tất tiến trình trạng thái active 21 Thứ tự đồng Thuật tốn (3) Tiến trình Pi trạng thái active gửi thơng điệp lớn (tới tiến trình Pj có định danh nhỏ hơn, i > j) ▪ Sau gửi, Pi chuyển sang trạng thái passive nhận thơng điệp ack từ tiến trình Pj ▪ Chú ý: ▪ Tiến trình trạng thái passive gửi nhận thông điệp, trừ thơng điệp ack 22 Thứ tự đồng Thuật tốn (4) Để tiến trình Pj gửi thơng điệp nhỏ tới tiến trình Pi có định danh lớn (j < i), Pj cần cho phép từ Pi ▪ Pj gửi thơng điệp request lúc ▪ Pi cho phép (gửi thông điệp permission) Pi trạng thái active ▪ Sau đó, Pi chuyển sang trạng thái passive Pi nhận thông điệp nhỏ từ Pj 23 24 Thuật toán thứ tự đồng 25 Thứ tự tồn cho thơng điệp đa hướng Total ordering for multicast messages Thứ tự tồn cho thơng điệp đa hướng ▪ Thứ tự toàn bộ: ▪ Nếu tiến trình Pi gửi thơng điệp đa hướng x, y tới tiến trình Pj, Pk,… tất tiến trình nhận thơng điệp theo thứ tự (x,y y, x) ▪ Lưu ý: ▪ Điều khơng ám thứ tự thứ tự Nhân chí FIFO ▪ Xét trường hợp Pi gửi thông điệp: m1 sau m2 ▪ Nếu tất tiến trình nhận m2 trước m1, thứ tự tồn thỏa mãn, nhiên không thoả mãn thứ tự FIFO 26 Thứ tự tồn bộ: Thuật tốn ▪Sử dụng lại thuật toán cho truy cập tài nguyên chia sẻ ▪ Thuật toán mutex tập trung ▪ Thuật toán Lamport ▪Thuật toán Skeen 27 Thuật toán tập trung cho thứ tự tồn Khi tiến trình Pi muốn multicast thông điệp ▪ Pi gửi thông điệp cho tiến trình điều phối ▪ Tiến trình điều phối lưu hàng đợi yêu cầu Khi yêu cầu, gửi từ tiến trình Pj đó, thực hiện, tiến trình điều phối multicast thơng điệp 28 Thuật tốn Lamport cho thứ tự toàn ▪ Thay đổi thuật toán mutex Lamport cho toán thứ tự toàn bộ, với giả thiết: ▪ Thứ tự FIFO thông điệp ▪ Một thông điệp broadcast tới tất tiến trình khác ▪ Mơ multicast cách sử dụng thông điệp broadcast ▪ Mỗi tiến trình gồm có vector: ▪ đồng hồ vector (sử dụng cho dấu thời gian) ▪ hàng đợi (lưu thông điệp chưa phân phối) 29 Thuật toán Lamport: Các bước thực Khi Pi muốn gửi thông điệp broadcast: ▪ Pi gửi thông điệp với dấu thời gian tới tiến trình khác Khi Pj nhận thông điệp broadcast ▪ Thông điệp dấu thời gian lưu hàng đợi Pj ▪ Một thông điệp ack dấu thời gian tương ứng gửi ngược tiến trình gửi Pi Một tiến trình Pk phân phối thông điệp với dấu thời gian t nhỏ hàng đợi nếu: ▪ Pk nhận thơng điệp ack có dấu thời gian lớn t từ tất tiến trình khác 30 Thuật tốn Skeen cho thứ tự tồn ▪ Thuật tốn u cầu số lượng thơng điệp tương ứng với số lượng tiến trình nhận (m) ▪ Thay N-1 tiến trình thuật tốn Lamport ▪ Mỗi tiến trình lưu đồng hồ logic 31 Thuật tốn Skeen: Các bước thực (1) Khi tiến trình Pi muốn gửi thơng điệp multicast ▪ Pi gửi thông điệp với dấu thời gian tới tiến trình đích Khi tiến trình Pk nhận thơng điệp ▪ Pk đánh dấu thơng điệp chưa-thể-chuyển-đi (undeliverable) ▪ Pk gửi ngược giá trị đồng hồ logic lời đề xuất cho tiến trình gửi (Pi) 32 Thuật tốn Skeen: Các bước thực (2) Khi tiến trình gửi Pi nhận lời đề xuất gửi từ tiến trình đích ▪ Pi lấy giá trị max dấu thời gian tất đề xuất, gọi giá trị đề-xuất-cuối-cùng ▪ Pi gửi đề xuất cuối đến tiến trình đích Khi Pk nhận đề xuất cuối thông điệp ▪ Pk đánh dấu thơng điệp có-thể-chuyển-đi (deliverable) ▪ Một thơng điệp xử lý có dấu thời gian nhỏ hàng đợi Pk 33 P1 P2 P3 Tiến trình P0 multicast thơng điệp msg tới tiến trình P1 P2 Khi P1 P2 nhận thông điệp, chúng đánh dấu chưa-thể-chuyển-đi gửi đề xuất với giá trị dấu thời gian tương ứng P0 lấy giá trị lớn dấu thời gian đề xuất gửi từ P1, P2 gửi đề-xuất-cuối-cùng (4) cho P1, P2 P1, P2 đánh dấu msg có-thể-chuyển-đi xử lý thơng điệp 34 có dấu thời gian nhỏ hàng đợi 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 35 ... thông điểm (point-to-point) 17 Thứ tự Đồng Thứ tự không đồng 18 Thứ tự đồng (2) ▪  Điều kiện SYNC Chứng minh: với kiện e f hệ thống phân tán thứ tự đồng bộ, thì:   19 Thứ tự đồng ≥ Thứ tự nhân... dấu thời gian tới tiến trình khác Khi Pj nhận thông điệp broadcast ▪ Thông điệp dấu thời gian lưu hàng đợi Pj ▪ Một thông điệp ack dấu thời gian tương ứng gửi ngược tiến trình gửi Pi Một tiến trình. .. nhiên: chương trình vài tính chất đồng thời ▪ Khi nhận thông điệp không tuân theo thứ tự FIFO, việc xử lý phải bị trì hỗn Thứ tự FIFO Định nghĩa ▪  Thứ tự FIFO Thuật toán (1) ▪ Mỗi tiến trình lưu

Ngày đăng: 15/05/2020, 23:04

Tài liệu cùng người dùng

Tài liệu liên quan