Thuật toán Central Coordinator• Một tiến trình được bầu chọn làm điều phối viên coordinator • Điều phối viên trung tâm cấp quyền để nhập vào CS - Để nhập CS, tiến trình gửi một tin nhắn
Trang 2NỘI DUNG
Giới thiệu
Loại trừ tương hỗ không dựa trên Token
Loại trừ tương hỗ dựa trên Token
Thuật toán bầu cử
Kết luận
DUYTAN
UNIVERSITY
Trang 4• Loại trừ tương hỗ : là quá trình truy
cập đồng thời của các tiến trình với một tài nguyên hoặc dữ liệu được chia sẻ,
thực hiện theo cách loại trừ lẫn nhau.
• Trong hệ thống phân tán không có các biến chia sẻ có thể sử dụng để thực hiện loại trừ lẫn nhau.
DUYTAN
UNIVERSITY
Loại trừ tương hỗ (Mutual Exclusion)
GIỚI THIỆU
Trang 5• Đối với tài nguyên được quản lý bởi một máy chủ
mà thực hiện với khóa riêng của mình cùng với các cơ chế cần thiết để đồng bộ hóa các truy cập vào các
nguồn tài nguyên thì loại trừ tương hỗ và đồng bộ hóa
là liên quan trong suốt cho quá trình truy cập vào các tài nguyên này (xãy ra cho các hệ thống cơ sở dữ liệu
xử lý giao dịch)
• Thường thì có không đồng bộ hóa được xây dựng trong thực hiện bảo vệ các nguồn tài nguyên (file, hiển thị cửa sổ, các thiết bị ngoại vi, )
GIỚI THIỆU
Loại trừ tương hỗ (Mutual Exclusion)
Trang 6• Để xử lý nhiều tiến trình thường sử dụng nhiều vùng găng
- Khi một tiến trình yêu cầu đọc hoặc cập nhật liệu, đầu tiên đi vào một vùng găng để loại trừ lẫn nhau và đảm bảo rằng không có quá trình khác sẽ sử dụng cấu trúc dữ liệu được chia sẻ cùng một lúc
• Loại trừ tương hỗ thông qua :
- Kiểm tra và thiết lập phần cứng
Trang 7• Thuật toán loại trừ tương hỗ phải đối phó với sự chậm trễ thông điệp và thiếu hoặc không đoán
trước thông tin về trạng thái của hệ thống
•Ba cách tiếp cận cơ bản để loại trừ lẫn nhau trong
hệ thống phân tán:
1 Phương pháp tiếp cận dựa trên Token
2 Phương pháp tiếp cận không dựa trên Token
3 Phương pháp tiếp cận dựa trên Quorum
Loại trừ tương hỗ đối với hệ thống phân tán
Trang 8Phương pháp tiếp cận dựa trên Token
• Một thẻ bài(token) duy nhất được chia sẻ giữa các site
• Một site được phép vào CS của nó nếu nó sở hữu token.
• Loại trừ lẫn nhau được đảm bảo bởi vì token
là duy nhất.
• Các thuật toán tiêu biểu : Token Ring, Agrawala Second
Trang 9Ricart-• Sử dụng hai hoặc nhiều vòng liên tiếp các thông điệp được trao đổi giữa các site để xác định site đó
sẽ nhập vào CS tiếp theo
• Các thuật toán tiêu biểu: Central Coordinator, Ricart- Agrawala
Phương pháp tiếp cận không dựa trên Token
Trang 10DUYTAN
UNIVERSITY
Phương pháp tiếp cận dựa trên Quorum
• Mỗi site yêu cầu sự cho phép để thực hiện CS từ một tập hợp con của các site (được gọi là một số đại biểu cần thiết)
• Hai Qourum bất kỳ chứa một common site
• Common site này chịu trách nhiệm để đảm bảo rằng chỉ có một yêu cầu được thực hiện ở bất cứ lúc nào
Trang 11Thuật toán Central Coordinator
• Một tiến trình được bầu chọn làm điều phối viên (coordinator)
• Điều phối viên trung tâm cấp quyền để nhập vào CS
- Để nhập CS, tiến trình gửi một tin nhắn yêu cầu với điều phối viên và sau đó chờ đợi trả lời (trong thời gian chờ đợi quá trình có thể tiếp tục với các công việc khác)
- Trả lời từ điều phối viên cho quyền vào CS
- Sau khi hoàn thành công việc trong CS, tiến trình thông báo cho điều phối viên
Trang 12DUYTAN
UNIVERSITY
Thuật toán Central Coordinator
Trang 13• Lược đồ này là đơn giản và dễ thực hiện.
• Chiến lược này đòi hỏi có chỉ ba tin nhắn mỗi lần yêu cầu sử dụng trên CS
Vấn đề xãy ra :
- Điều phối viên có thể trở thành quá tải thắt cổ chai
- Điều phối viên “chết” thất bại của critical point :
+ Nếu điều phối viên bị treo, một điều phối viên mới phải được tạo
+ Điều phối viên có thể là một trong những tiến trình cạnh tranh để truy cập, một thuật toán bầu cử đã được chạy trong để chọn một và chỉ có một điều phối viên mới được chọn
Thuật toán Central Coordinator
Trang 14DUYTAN
UNIVERSITY
Thuật toán Ricart-Agrawala
• Trong môi trường phân tán, thuật toán này sử dụng multicast và đồng hồ logic (không sử dụng điều phối viên trung tâm).
• Giả định các kênh truyền thông thực hiện theo quy tắc FIFO
• Sử dụng hai loại thông điệp: REQUEST và REPLY
Trang 15• Tiến trình yêu cầu đăng nhập vào CS phải :
- Soạn thông điệp có chứa:
+Identifier (machine ID, process ID)
+Tên tài nguyên
+Nhãn/dấu thời gian Lamport (dấu thời gian hoàn toàn phần Lamport)
- Gởi thông báo yêu cầu đến tất cả các tiến trình khác cạnh tranh với cùng một tài nguyên
- Nó được cho phép nhập vào CS khi tất cả các tiến trình đã trả lời tin nhắn này cho phép
- Truy cập vào găng, sử dụng tài nguyên
Thuật toán Ricart-Agrawala
Trang 16DUYTAN
UNIVERSITY
• Khi các tiến trình nhận yêu cầu:
- Nếu tiến trình nhận không quan tâm: gởi OK đến tiến trình gởi
- Nếu tiến trình đang ở trong CS : Không trả lời và add
yêu cầu vào hàng đợi
- Nếu tiến trình vừa nhận/ gởi thông điệp :
+So sánh nhãn thời gian Sớm nhất sẽ chiến thắng
+Nếu tiến trình nhận thua cuộc : gởi OK
+Nếu tiến trình nhận thắng cuộc, không trả lời và add
vào hàng đợi
• Khi tiến trình thực hiện xong trên CS
- Gởi OK đến tất cả các tiến trình trên hàng đợi
Thuật toán Ricart-Agrawala
Trang 17Thuật toán Ricart-Agrawala
Trang 18- Sự thất bại của bất kỳ tiến trình tham gia ngăn chặn hoạt động tiến trình khác nếu không có biện pháp phục hồi đặc biệt được thực hiện.
Thuật toán Ricart-Agrawala
Trang 19Thuật toán Lamport
• Mỗi tiến trình duy trì yêu cầu hàng đợi
- Có yêu cầu loại trừ lẫn nhau
• Yêu cầu critical section:
- Tiến trình Pi gởi request(i, T i) đến tất các các node
- Yêu cầu vị trí trên hàng đợi riêng của nó
- Khi 1 tiến trình Pj nhận một yêu cầu, nó trả về một nhãn thời gian ack
Lamport time
Trang 20DUYTAN
UNIVERSITY
Đăng nhập vào CS:
- Pi nhận được một tin nhắn (ack hoặc release) từ mỗi
tiến trình khác với một dấu thời gian lớn hơn Ti
- Yêu cầu của Pi có dấu thời gian sớm nhất trong hàng đợi của nó
- Sự khác biệt với Ricart-Agrawala:
+ Mọi tiến trình đều đáp ứng trở lại
+ Tiến trình quyết định dựa trên xem yêu cầu của nó là sớm nhất trong hàng đợi của nó
Thuật toán Lamport
Trang 21Releasing critical section:
- Hủy bỏ yêu cầu từ hàng đợi của chính nó
- Gởi 1 nhãn thời gian thông điệp release
- Khi một tiến trình nhận được một thông điệp release
+ Loại bỏ yêu cầu cho tiến trình đó từ hàng đợi của nó
Điều này có thể gây ra cho nó có dấu thời gian sớm nhất trong hàng đợi cho phép nó để truy cập vào CS
Thuật toán Lamport
Trang 22DUYTAN
UNIVERSITY
Thuật toán Token Ring
• Đơn giản nhất để giải quyết loại trừ lẫn nhau :
sắp xếp n tiến trình P1, P2, Pn trong một vòng logic
• Vòng tròn logic được tạo ra bằng cách cho mỗi tiến
trình địa chỉ của một tiến trình khác là láng giềng của
mình theo hướng chiều kim đồng hồ
• Vòng tròn logic không liên quan đến các mối liên kết vật lý giữa các máy tính
Trang 23• Thuật toán
- Token được khởi tạo cho 1 tiến trinh nào đó
- Token được truyền từ 1 tiến trình đến tiến trình láng giềng của nó quanh vòng tròn
- Khi 1 tiến trình yêu cầu đăng nhập vào CS, nó sẽ đợi cho đến khi nó nhận 1 token từ tiến trình láng giềng bên trái của nó và sau đó nó giữ lại nó, sau khi lấy token nó nhập vào
- CS, sau khi nó rời khỏi CS, nó trả lại token cho tiến trình hàng xóm của mình theo ngược chiều kim đồng
Trang 24DUYTAN
UNIVERSITY
• Nó có thể mất từ 1 đến n-1 tin nhắn để có được token.Tin nhắn được gửi quanh vòng ngay cả khi tiến trình không yêu cầu token
Thuật toán này hoạt động tốt trong các trạng thái tải nặng, khi có một xác suất cao mà tiến trình nhận được token muốn vào CS Nó hoạt động kém trong các trường hợp tải nhẹ
• Nếu một tiến trình lỗi, tiến trình không thể được thực hiện cho đến khi cấu hình lại được áp dụng để trích xuất các tiến trình
từ vòng.
• Nếu quá trình nắm giữ token không thành công, một tiến trình duy nhất có thể được chọn, sẽ tạo lại token và vượt qua nó dọc theo vòng tròn
Thuật toán Token Ring
Trang 25• Ưu điểm
- Đảm bảo loại trừ tương hỗ
- Xác định được thứ tự của các tiến trình
- Hiện tượng “đói - Starvation” tài nguyên xãy ra khi
số tiến trình quá lớn
• Các vấn đề xãy ra
- Nếu bị mất thẻ (quá trình chết) hệ thống có khả
năng rơi vào tình trạng bế tắc
• Không đảm bảo trật tự theo FIFO
- Xãy ra : tiến trình khác thực hiện không mong muốn
Thuật toán Token Ring
Trang 26DUYTAN
UNIVERSITY
Thuật toán Ricart-Agrawala Second
• Đây là thuật toán cải tiến của Agrawala đầu tiên, nhưng sử dụng token, nhằm:
- Giảm lưu lượng thông điệp trao đổi
- Khắc phục trường hợp khi có tiến trình chết làm ngăn chặn hoạt động của tiến trình khác
Trang 27THUẬT TOÁN BẦU CỬ
• Nhiều thuật toán được sử dụng trong các hệ thống phân tán yêu cầu một điều phối viên.
Ví dụ, các thuật toán loại trừ tương hỗ trong thuật toán Central Coordinator
• Thuật toán bầu cử được thiết kế lựa nhằm chọn một điều phối viên.
Trang 28- Không có tác hại (không mở rộng thêm lưu lượng) trong nhiều cuộc bầu cử đồng thời
• Bầu cử có thể cần thiết khi hệ thống được khởi tạo, hoặc nếu điều phối viên bị treo hoặc chết
THUẬT TOÁN BẦU CỬ
Trang 30- mỗi tiến trình Pi này có tham số ei để giữ số tiến trình của điều phối viên
+ i, ei = không xác định hoặc ei = P, trong ∀
đó P là tiến trình không bị rơi với id cao nhất + Tất cả các tiến trình thiết lập ei = P, hoặc quá trình khác đã bị lỗi hoặc chết
THUẬT TOÁN BẦU CỬ
Trang 31Thuật toán Bully
• Tiến trình P gởi thông điệp election đến tất cả tiến trình với ID cao hơn nếu phát hiện điều phối viên bị lỗi hoặc chết
• Tiến trình có số hiệu cao "kẻ bắt nạt -bully“, loại tiến trình có số hiệu thấp khỏi cuộc bầu cử, cho đến khi chỉ có một tiến trình vẫn còn duy trì
• Khi một tiến trình khởi động lại, nó kích hoạt một cuộc bầu cử Nếu nó có số hiệu cao nhất,
nó sẽ giành chiến thắng.
Trang 32DUYTAN
UNIVERSITY
• Tiến trình P sẽ gửi một tin nhắn bầu cử cho tất cả các tiến trình số hiệu cao hơn trong hệ thống Nếu tiến trình không phản hồi, P sẽ trở thành điều phối viên Nếu một tiến trình số hiệu cao hơn (Q) phản ứng, nó sẽ gửi P tin nhắn : chấm dứt vai trò của P của trong thuật toán
2
1
5 6
3 7
0 4
0
OK election
election election
Thuật toán Bully
Trang 336
3 7
3 7
0 4
2 4 0
OK election
election election
Thuật toán Bully
Trang 34nó và sau đó gửi n-2 thông điệp điều phối viên
có định danh thấp nhất bắt đầu cuộc bầu cử, nó
sẽ gửi : n-1 tin nhắn bầu cử đến các tiến trình
mà bản thân chúng bắt đầu đến mỗi người trong một cuộc bầu cử : O (n2) tin nhắn
Thuật toán Bully
Trang 35Thuật toán Ring
• Thuật toán này giả định rằng các tiến trình được sắp xếp trong một vòng logic và mỗi tiến trình được biết thứ tự của các tiến trình trên vòng
• Quá trình này có thể “dừng lại " hệ thống bị lỗi: thay vì gửi đến tiến trình j, gửi cho k + 1.
• Hệ thống bị lỗi là không có phản hồi trong một khoảng thời gian cố định.
Trang 36DUYTAN
UNIVERSITY
• P nghĩ rằng điều phối viên đã bị chết, xây dựng một thông điệp bầu cử, trong đó có số ID riêng của mình
• Gởi đến tiến trình sống đầu tiên
• Mỗi quá trình thêm số hiệu riêng của nó và chuyển
Trang 37• Khi tin nhắn trả về P (kiểm tra trên danh sách), nó thấy quá trình ID riêng của mình trong danh sách và biết rằng vòng tròn là hoàn tất.
• P lưu thông điệp Coordinator với số hiệu mới cao nhất
Trang 38DUYTAN
UNIVERSITY
KẾT LUẬN
Trong môi trường phân tán không có biến chia
sẻ (Semaphores) và kernel địa phương sử dụng
để thực hiện loại trừ tương hỗ
• Có hai phương pháp : Dựa vào token và không dựa vào token
• Thuật toán Central Coordinator dựa trên
biến điều phối viên sẵn có của một quá trình
mà xử lý tất cả các yêu cầu và cung cấp độc quyền truy cập tài nguyên
Trang 39• Thuật toán Ricart-Agrawala được dựa trên thỏa
thuận phân tán hoàn toàn loại trừ lẫn nhau Một yêu cầu multicast cho tất cả các quá trình cạnh tranh với một nguồn tài nguyên và truy cập được cung cấp khi tất cả các tiến trình đã trả lời yêu cầu Thuật toán là tốn kém
về lưu lượng truy cập tin nhắn, và thất bại bất kỳ tiến trình nào cũng ngăn chặn sự hoạt động của tiến trình
KẾT LUẬN
Trang 40KẾT LUẬN
Trang 41• Thuật toán Token Ring rất đơn giản giải
quyết loại trừ lẫn nhau Được yêu cầu rằng các quy trình được sắp xếp một trên vòng tròn ảo Các token là vĩnh viễn thông qua từ một tiến trình khác và tiến trình hiện đang nắm giữ token
có độc quyền đối với các nguồn tài nguyên Thuật toán này hiệu quả trong các tình huống nặng nề về tải.
KẾT LUẬN
Trang 42DUYTAN
UNIVERSITY
• Đối với các ứng dụng phân tán bầu cử là cần thiết để chọn một điều phối viên được thỏa thuận trong số tất cả các tiến trình
• Thuật toán Bully đòi hỏi các tiến trình để biết chính
xác của tất cả các tiến trình khác, tiến trình với định danh cao nhất, trong số những tiến trính đó là được chọn Tiến trình được phép thất bại trong quá trình bầu cử
• Thuật toán Ring-based đòi hỏi tiến trình này được bố
trí trong một vòng logic với định danh cao nhất được
chọn Về tính trung bình, các thuật toán dựa trên Ring
là hiệu quả hơn sau đó các thuật toán Bully.
KẾT LUẬN
Trang 43TÀI LIỆU THAM KHẢO
[1] Colin J Fidge (February 1988)
"Timestamps in Message-Passing Systems That Preserve the Partial Ordering"
In K Raymond (Ed.) Proc of the 11th Australian Computer Science
Conference (ACSC'88) pp 56–66 Retrieved 2009-02-13.
[2].Mattern, F (October 1988), "Virtual Time and Global States of Distributed Systems", in Cosnard, M., Proc Workshop on Parallel and Distributed
Algorithms, Chateau de Bonas, France: Elsevier, pp 215–226
[3].lmeida, Paulo; Baquero, Carlos; Fonte, Victor (2008),
"Interval Tree Clocks: A Logical Clock for Dynamic Systems" , in Baker,
Theodore P.; Bui, Alain; Tixeuil, Sébastien, Principles of Distributed Systems,
Lecture Notes in Computer Science, 5401, Springer-Verlag, Lecture Notes in Computer Science, pp 259–274
[4] Torres-Rojas, Francisco; Ahamad, Mustaque (1999), "Plausible clocks: constant size logical clocks for distributed systems", Distributed Computing (Springer Verlag) 12 (4): 179–195
Trang 44DUYTAN
UNIVERSITY
TÀI LIỆU THAM KHẢO
1993
Trang 45THANKS !