hạn lỗi để những bộ phận chưa bị lỗi vẫn hoạt động bình thường trong thành phần liên thông 12 Phát tỏa Đầy đủ Full Broadcast Phát tỏa mọi thông tin có 13 Phát tỏa với Tri thức Bộ phận
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 2MỤC LỤC
LỜI CẢM ƠN 1
MỤC LỤC 2
CÁC THUẬT NGỮ VÀ TỪ VIẾT TẮT 4
DANH SÁCH CÁC HÌNH VẼ 6
MỞ ĐẦU 7
CHƯƠNG 1 HỆ PHÂN TÁN 9
1.1 Khái niệm hệ phân tán 9
1.2 Vai trò của hệ phân tán 9
1.3 Đặc trưng của các hệ phân tán 11
1.4 Mô hình hóa các hệ phân tán 12
1.4.1 Mô hình chuyển thông báo 13
1.4.2 Mô hình với bộ nhớ dùng chung 13
1.4.3 Mô hình xen kẽ 14
1.4.4 Thực hiện và những tính chất của thực hiện 14
1.5 Đánh giá độ phức tạp 16
1.6 Khả năng kháng lỗi và tính tự ổn định 17
1.6.1 Khả năng kháng lỗi 17
1.6.2 Tính chất tự ổn định 17
1.6.3 Vai trò của tự ổn định 18
1.6.4 Đánh giá độ phức tạp 19
CHƯƠNG 2 CÁC GIẢI THUẬT SƠ ĐẲNG 21
2.1 Giới thiệu 21
2.2 Bài toán 23
2.3 Đánh giá độ phức tạp 24
2.4 Giải thuật Phát tỏa Đầy đủ 25
Trang 3CHƯƠNG 3 GIẢI THUẬT CẬP NHẬT VỚI TRI THỨC BỘ PHẬN [3] 32
3.1 Tư tưởng 32
3.2 Giải thuật 33
3.3 Tính đúng đắn và độ phức tạp 37
3.4 Ví dụ một thực hiện 38
CHƯƠNG 4 GIẢI THUẬT AS CẢI TIẾN 44
4.1 Đặt vấn đề 45
4.2 Thực hiện cải tiến 45
4.3 Tính đúng đắn và độ phức tạp 49
4.4 Ví dụ một thực hiện 52
CHƯƠNG 5 GIẢI THUẬT DUY TRÌ DỮ LIỆU CHUNG PHÂN TÁN ÁP DỤNG TRONG THỰC TIỄN 58
5.1 Hệ thống động với tôpô bất kỳ 58
5.2 Dữ liệu chung phân tán 59
5.3 Độ dài dữ liệu không cố định 59
5.4 Khả năng kháng lỗi và tính tự ổn định 60
KẾT LUẬN 63
TÀI LIỆU THAM KHẢO 64
Trang 4Cập nhật được thực hiện lần lượt trên từng bộ xử lý
Thực hiện nhiều Cập nhật Tăng trưởng đồng thời, mỗi Cập nhật Tăng trưởng cho một đoạn dữ liệu
4 Cấu hình Configuration Trạng thái toàn cục của hệ thống bao
gồm trạng thái của các thực thể và trạng thái của các kênh truyền giữa các thực thể
5 Cây bao trùm Spanning tree Cây bao gồm tất cả các nút của một đồ
thị, và mỗi nút xuất hiện duy nhất một lần
6 Đồ thị phụ thuộc Dependency
graph
Độ thị có hướng không chu trình có thêm các phụ thuộc hàm
thì chuyển ngay thông báo này cho bộ xử
Hệ thống bao gồm các thiết bị tính riêng
rẽ có thể giao tiếp với nhau
Trang 5hạn lỗi để những bộ phận chưa bị lỗi vẫn hoạt động bình thường
trong thành phần liên thông
12 Phát tỏa Đầy đủ Full Broadcast Phát tỏa mọi thông tin có
13 Phát tỏa với Tri
thức Bộ phận
Broadcast with Partial
Knowledge
Phát tỏa chỉ những phần dữ liệu thay đổi với mục đích sửa lỗi tại các bộ xử lý nhận
18 Tự ổn định Self-stabilizing Tính chất của hệ thống có thể xuất phát
từ trạng thái bất kỳ luôn thể hiện được hành vi hợp lệ mong muốn
từ một bộ xử lý khác
Trang 6DANH SÁCH CÁC HÌNH VẼ
Hình 2.1 Ví dụ minh họa bài toán Duy trì dữ liệu chung trong hệ phân
tán Trong ví dụ này, có n+1 = 5 bộ xử lý duy trì một khung nhìn với m = 4 mục Nguồn là bộ xử lý 0 Các mục sai so với nguồn được gạch chân Độ sai khác cục bộ là số mục gạch chân tại một bộ xử lý Độ sai khác tổng là ∆ = 7
(24)
Hình 2.2 Một thực hiện của giải thuật Phát tỏa Đầy đủ (n = 4, m =4,
∆ = 7)
(27)
Hình 2.3 Sửa lỗi cho hai bộ xử lý đầu trong một thực hiện của giải
thuật Cập nhật Tăng trưởng (n = 4, m =4, ∆ = 7)
(28)
Hình 3.1 Một trạng thái của hệ thống khi thực hiện giải thuật AS (33)
Hình 3.3 Hình chữ nhật của các tiến trình con của tiến trình Q (35)
Hình 3.4 Hoạt động của một tiến trình (mũi tên biểu diễn thông báo
sửa lỗi )
(36)
Hình 3.5 Một thực hiện của giải thuật AS (vùng chữ nhật đầu tiên) (39)
Hình 4.2 Một thực hiện của giải thuật AS cải tiến (vùng chữ nhật đầu
tiên)
(53)
Hình 5 Khung chung cho các phiên bản tự ổn định của các giải thuật
Cập nhật Tăng trưởng, giải thuật AS, và giải thuật AS cải
(61)
Trang 7MỞ ĐẦU
Trong tính toán phân tán có rất nhiều công việc liên quan đến việc duy trì khung
nhìn (view) đến các đối tượng chung tại các trạm (sites) khác nhau của hệ thống phân
tán Với đối tượng chung là tôpô của hệ thống ta có yêu cầu cập nhật tôpô, hay nếu đối tượng chung là một tài nguyên cụ thể được lưu trữ trên một trạm nào đó ta có yêu cầu liệt kê danh sách tài nguyên trên mỗi trạm, hoặc một cơ sở dữ liệu tổng quát
Các đối tượng này bị tác động bởi những thay đổi, ví dụ liên kết giữa hai nút mạng được thêm mới hay mất đi làm thay đổi tôpô mạng, một tài nguyên được chiếm dụng rồi giải phóng, một bản ghi cơ sở dữ liệu được sửa đổi Như vậy, vấn đề đặt ra ở đây là cần có một cơ chế hiệu quả cho việc cập nhật khung nhìn về đối tượng chung tại các trạm khác nhau
Mục tiêu của luận văn này là xem xét, đánh giá một số giải thuật cập nhật “khung nhìn” về đối tượng chung đó, đồng thời đưa ra đề xuất cải tiến các giải thuật đã xem xét nếu có thể
Các giải thuật duy trì dữ liệu chung trong hệ phân tán, và đặc biệt phương pháp
Phát tỏa với Tri thức Bộ phận, được tìm hiểu trong luận văn này bao gồm Phát tỏa Đầy đủ, Cập nhật Tăng trưởng [4], giải thuật AS [3] Từ các tìm hiểu về giải thuật
trên, tác giả luận văn đã đưa ra một đề xuất cải tiến giải thuật AS Cải tiến này được thực hiện bằng cách cắt bỏ các thông báo dư thừa được sử dụng trong giải thuật AS Kết quả cải tiến được tác giả luận văn đánh giá và chứng minh Ngoài ra, trong luận văn này, tác giả đã quan tâm đến các khía cạnh thực tế khi áp dụng những giải thuật được xem xét hoặc đề xuất, trong đó khả năng kháng lỗi với tính tự ổn định [7] được đặc biệt chú ý Với mỗi giải thuật đã được xem xét hoặc đề xuất, tác giả đã chỉ ra một phiên bản tự ổn định của nó
Luận văn được trình bày trong năm chương với nội dung mỗi chương như sau:
Chương 1 giới thiệu hệ phân tán, các mô hình hệ phân tán, vai trò, đặc trưng của
các hệ phân tán, các khái niệm cơ bản về cấu hình, thực hiện và phương pháp đánh giá
Trang 8độ phức tạp của giải thuật phân tán [1], [8], [9] Phần cuối chương trình bày các vấn đề
về khả năng kháng lỗi với tính chất tự ổn định [7]
Tiếp theo, Chương 2 trình bày bài toán duy trì dữ liệu chung trong hệ phân tán và
các giải thuật sơ đẳng, bao gồm giải thuật Phát tỏa Đầy đủ và giải thuật Cập nhật Tăng trưởng [4] Mô hình bài toán, tiêu chuẩn đánh giá độ phức tạp được trình bày
Với mỗi giải thuật, sau phần xem xét và trình bày giải thuật, tác giả đều đưa ra một ví
dụ minh họa thực hiện của giải thuật
Chương 3 trình bày giải thuật cập nhật với tri thức bộ phận, giải thuật AS [3] Sau
phần trình bày tư tưởng và chi tiết giải thuật là phần chứng minh tính đúng đắn và đánh giá các độ phức tạp Một ví dụ được tác giả đưa ra để minh họa cho hoạt động của giải thuật AS
Trong Chương 4, tác giả đưa ra một đề xuất cải tiến giải thuật AS bằng cách cắt bỏ
các thông báo không cần thiết trong giải thuật AS Hiệu quả tiết kiệm thời gian và thông báo của giải thuật AS cải tiến so sánh với giải thuật gốc được phát biểu và chứng minh Giải thuật cũng được mô tả bằng mã hình thức.Cuối cùng là minh hoạ một thực hiện của giải thuật AS cải tiến
Chương 5 bàn về các thay đổi cần thực hiện để các giải thuật duy trì dữ liệu có thể
thực thi được trong một số vấn đề hiện thực của hệ phân tán, đó là các vấn đề về Hệ thống với tôpô bất kỳ, Dữ liệu chung phân tán, Độ dài dữ liệu thay đổi, Khả năng kháng lỗi và tự ổn định
Chắc chắn, luận văn còn có những thiếu sót trong nội dung cũng như trong trình bày Tác giả của luận văn rất mong nhận được sự đóng góp ý kiến của các thầy cô giáo
và của các anh/chị học viên
Trang 9CHƯƠNG 1 HỆ PHÂN TÁN
1.1 Khái niệm hệ phân tán
Có rất nhiều khái niệm khác nhau về hệ phân tán Một cách tổng quan, hệ phân tán
là tập hợp các thiết bị tính riêng rẽ có thể giao tiếp với nhau Đây là một khái niệm hết sức tổng quát, bao trùm một phạm vi rộng các hệ thống máy tính ngày nay, từ các bộ chíp VLSI đến các bộ đa xử lý, các mạng cục bộ, và Internet Nếu như hệ song song phối hợp nhiều bộ xử lý nhằm giải quyết một vấn đề cho trước một cách nhanh nhất thì hệ phân tán bao gồm một tập các bộ xử lý có chương trình làm việc riêng bán độc lập, vì những lý do gì đó, ví dụ chia sẻ tài nguyên, tăng tính sẵn sàng, khứ lỗi, các bộ
xử lý cần phối hợp hành động với nhau
Ta có thể thấy các hệ phân tán ở khắp mọi nơi Điển hình, các hệ phân tán được sử dụng để chia sẻ tài nguyên và chia sẻ dữ liệu Các máy tính kết nối mạng với nhau có thể dùng chung máy in, máy quét, chia sẻ các tệp tài liệu, chương trình… Tính toán ngang hàng là một kiểu thực hiện của hệ phân tán ngày càng trở nên phổ biến cho việc cung cấp các thiết bị và dịch vụ tính toán Các hệ phân tán nhiều tham vọng hơn cho hiệu năng hoạt động cao bằng cách kết hợp giải các bài toán con một cách song song, đồng thời tăng tính sẵn sàng của hệ thống trong trường hợp một số thiết bị gặp lỗi
1.2 Vai trò của hệ phân tán
Ngày nay hệ phân tán đang trở nên phổ biến vì những vai trò ứng dụng quan trọng của chúng Trước hết, phải kể đến đó là vai trò trao đổi thông tin Các hệ phân tán cho khả năng chia sẻ thông tin rộng rãi và tức thời Lấy ví dụ, thông tin từ hệ thống máy tính đặt tại Sở giao dịch chứng khoán TPHCM có thể được sử dụng bởi hệ thống máy tính đặt tại trụ sở của các công ty chứng khoán thành viên hay cũng có thể chia sẻ đến tận các nhà đầu tư Các thông tin chứng khoán cũng luôn yêu cầu phải có tính chính xác cũng như tức thời rất cao, và hệ phân tán cũng có thể cung cấp những khả năng đảm bảo được điều này
Hệ phân tán cũng cho khả năng chia sẻ thông tin giữa các thiết bị hỗn tạp Một máy tính có thể "nói chuyện" với các máy tính khác loại, các điện thoại cố định, di động,
Trang 10các PDA, … Các hệ phân tán cho khả năng chia sẻ tài nguyên cả phần cứng lẫn phần mềm Các máy tính kết nối mạng có thể dùng chung máy in, có thể chia sẻ các tệp dữ liệu, các tệp chương trình
Thứ hai, bằng việc sao lặp, nhân bản, các hệ phân tán cho độ tin cậy cao Nếu toàn
bộ dữ liệu của một chi nhánh ngân hàng lưu trong máy tính đột nhiên biến mất, người
ta có thể khôi phục lại bằng cách sao phần nhân bản đã được lưu tại một nơi khác trên
hệ thống máy tính của ngân hàng
Thứ ba, thông qua song song hóa, các thực thể trong hệ phân tán có thể chia sẻ
công việc, thực hiện đồng thời công việc chung, do vậy làm tăng hiệu suất hoạt động của hệ thống
Thứ tư, hệ phân tán làm đơn giản việc thiết kế các hệ thống phức tạp Người ta
thường phân một hệ thống phức tạp thành các hệ thống con chuyên dụng và hợp tác với nhau Làm như vậy, không những việc thiết kế đơn giản mà việc thực hiện cũng đơn giản
Các ưu điểm của hệ phân tán so với máy tính cá nhân và so với hệ tập trung được chỉ ra ngắn gọn trong các bảng sau
Bảng 1.1 Ưu điểm của hệ phân tán so với máy tính cá nhân
Chia sẻ dữ liệu Cho phép nhiều người dung cùng truy cập vào một cơ
sở dữ liệu chung Chia sẻ thiết bị Cho phép nhiều người dung dung chung các thiết bị đắt
tiền như máy in màu, máy quét,
Truyền thông Giúp truyền thông giữa người với người dễ dàng hơn,
ví dụ bằng thư điện tử Mềm dẻo Phân công việc cho bất kỳ máy nào sẵn sàng
Trang 11Bảng 1.2 Ưu điểm của hệ phân tán so với hệ tập trung
Hiệu năng Máy tính đa bộ xử lý có hiệu năng cao hơn máy tính
mainframe Tốc độ Tổng năng lực tính toán của một hệ phân tán có thể
cao hơn máy tính mainframe Phân tán Một số ứng dụng chạy trên nhiều máy tính xa nhau về
mặt không gian Tính tin cậy Khi một máy gặp lỗi, toàn bộ hệ thống vẫn có thể làm
1.3 Đặc trưng của các hệ phân tán
Ba đặc trưng, và cũng là những khó khăn điển hình khi thiết kế, của hệ phân tán là: không đồng bộ, thiếu thông tin toàn cục, và không có cơ chế phát hiện sự cố chính xác Một hệ phân tán không có đồng hồ chung Ta cũng không thể đồng bộ hóa đồng
hồ của các bộ xử lý khác nhau vì không biết chắc độ trễ truyền thông Để đạt được tính đồng bộ, ta không thể dùng đồng hồ vật lý mà phải vận dụng các khái niệm và giải thuật nhân quả Tương tự, một hệ phân tán không có bộ nhớ toàn cục chung Các
bộ xử lý không thể biết được trạng thái toàn cục của hệ thống "Hiểu biết" của mỗi bộ
xử lý chỉ có tính cục bộ Do vậy, người thiết kế hệ phân tán, cụ thể là người xây dựng giải thuật phân tán phải xây dựng cơ chế đánh giá các tính toàn cục Ngoài ra, chúng ta không có cơ chế phát hiện sự cố chính xác trong hệ phân tán vì không thể phân biệt được bộ xử lý chậm hay bị sự cố Khi một bộ xử lý gặp sự cố, các bộ xử lý còn lại vẫn
Trang 12phải tiếp tục làm việc để đạt được kết quả như mong muốn Những đặc trưng này thực
sự là những khó khăn khi thiết kế các hệ phân tán
1.4 Mô hình hóa các hệ phân tán
Trong một hệ phân tán, mỗi thực thể (máy tính, bộ xử lý, tiến trình) chạy một chương trình riêng bao gồm tập các lệnh Khi thực hiện lệnh, thực thể thay đổi trạng thái cục bộ của nó Ta có thể mô hình hóa sự thay đổi này bằng cách xem mỗi thực thể
là một máy trạng thái Một hệ phân tán được mô hình hóa bằng tập n máy trạng thái
Ký hiệu máy thứ i là Pi
Truyền thông giữa các thực thể có thể thực hiện bằng cách chuyển thông báo hay
sử dụng bộ nhớ dùng chung Truyền thông bằng cách ghi vào và đọc ra từ bộ nhớ dùng
chung thường hạn chế hệ thống với các thực thể gần nhau về mặt địa lý, ví như hệ thống đa bộ xử lý hay các máy tính đa nhiệm Truyền thông theo cách chuyển thông báo không có giới hạn như vậy, có thể thực hiện trong cả hệ thống mà các thực thể rất
xa nhau về mặt địa lý như các mạng máy tính Hình 1.1 dưới đây là minh họa mô hình tổng quát của các hệ thống phân tán
Hinh 1.1 Mô hình tổng quát hệ thống phân tán
Tùy theo phương pháp truyền thông được sử dụng, ta có mô hình chuyển thông báo hay mô hình với bộ nhớ dùng chung
Trang 131.4.1 Mô hình chuyển thông báo
Trong mô hình chuyển thông báo, các láng giềng trao đổi thông tin cho nhau bằng cách gửi và nhận thông báo Liên kết giữa các thực thể có thể đơn hoặc lưỡng hướng Liên kết đơn hướng từ thực thể Pi đến thực thể Pj được sử dụng để chuyển thông báo
từ Pi đến Pj Ta có thể trừu tượng hóa liên kết đơn hướng trên bằng hàng đợi FIFO qi, jchứa tất cả các thông báo được Pi gửi cho Pj nhưng Pj chưa nhận được Mỗi khi Pi gửi cho Pj một thông báo m, m được đưa vào hàng đợi qi,j Pj có thể nhận m khi nó trên đỉnh hàng đợi qi,j Liên kết lưỡng hướng giữa Pi và Pj có thể được mô hình hóa bằng hai hàng đợi: qi,j cho hướng từ Pi đến Pj và qj,i cho hướng từ Pj đến Pi
Trạng thái của hệ thống phân tán chuyển thông báo tại một thời điểm cụ thể được xác định bởi trạng thái của các bộ xử lý và nội dung của các hàng đợi chứa thông báo
tại thời điểm đó Cấu hình hệ thống (hay cấu hình) được dùng để chỉ trạng thái này
Một cấu hình được ký hiệu c = (s1, s2, …, sn, q1,2 q1,3, …, qi,j, …., qn, n-1), trong đó si, 1
≤ i ≤ n , là trạng thái của Pi và qi, j, i j, là hàng đợi chứa thông báo Pi gửi cho Pj nhưng Pj chưa nhận được Sau đây là minh họa mô hình chuyển thông báo
Hình 1.2 Mô hình chuyển thông báo
1.4.2 Mô hình với bộ nhớ dùng chung
Trong mô hình với bộ nhớ dùng chung, các bộ xử lý trao đổi thông tin cho nhau bằng cách sử dụng chung các ô nhớ Các bộ xử lý có thể ghi vào một tập các ô nhớ và
Trang 14đọc ra từ một tập các ô nhớ khác Cấu hình hệ thống bao gồm trạng thái của các bộ xử
lý và nội dung của các ô nhớ dùng chung Một cấu hình của hệ thống gồm n bộ xử lý
và m ô nhớ dùng chung được ký hiệu c = (s1, s2, …, sn,, r1, r2, …, rm), trong đó si, 1 ≤ i
≤ n, là trạng thái của Pi, rj, 1 ≤ j ≤ m, là nội dung của ô nhớ dùng chung thứ j
Hình 1.3 Mô hình với bộ nhớ dùng chung
1.4.3 Mô hình xen kẽ
Mô hình xen kẽ được sử dụng để lý giải hành vi của hệ thống phân tán Trong mô
hình này, tại mỗi thời điểm có duy nhất một bộ xử lý thực hiện một bước tính (còn gọi
là bước nguyên tử) Mỗi bước nguyên tử bao gồm một số phép tính bên trong bộ xử lý, hay còn gọi là sự kiện tính, và một phép giao, hay còn gọi là sự kiện giao - một phép gửi hoặc nhận trong hệ thống chuyển thông báo hay một phép ghi hoặc đọc trong hệ thống sử dụng bộ nhớ dùng chung
1.4.4 Thực hiện và những tính chất của thực hiện
Trong một hệ thống phân tán, các bộ xử lý có thể thực hiện các bước tính một cách đồng thời; tuy nhiên, chúng ta giả thiết bước tính này không ảnh hưởng đến bước tính khác Điều này đúng trong mô hình chuyển thông báo vì một thông báo được gửi đi không thể nhận được bởi thao tác nhận xảy ra đồng thời với thao tác gửi Trong mô hình bộ nhớ dùng chung, chúng ta giả thiết kiến trúc bộ nhớ dùng chung đảm bảo tuần
Trang 15thao tác đọc từ một ô nhớ là giá trị được ghi vào ô nhớ tại lần ghi cuối cùng vào ô nhớ trước thao tác đọc
Trong các phần sau đây, chúng ta sử dụng thuật ngữ bước cho bước nguyên tử và
ký hiệu một bước (cùng với định danh của bộ xử lý thực hiện bước tính) là a Cấu hình
c2 được gọi là đến được trực tiếp từ cấu hình c1, ký hiệu là c1 a
c2, nếu tồn tại một
bước tính a để từ cấu hình c1, thực hiện bước a, ta được cấu hình c2 Cấu hình c’ được
gọi là đến được từ cấu hình c, ký hiệu c c’, nếu tồn tại các cấu hình ci, 0 ≤ i ≤ n, và
Một thực hiện được gọi là thỏa đáng nếu trong thực hiện đó mọi bước tính áp dụng
được vô hạn lần được thực hiện vô hạn lần Nói cách khác, nếu một bộ xử lý có một bước để thực hiện thì bộ xử lý sẽ thực hiện bước tính đó
Trong các hệ thống phân tán chuyển thông báo, một thông báo có thể bị mất trong khi thực hiện giải thuật Các mã phát hiện lỗi được sử dụng để nhận biết và loại bỏ các thông báo bị ngắt, những thông báo này được xem là thông báo bị mất Để mô hình hóa các hệ thống này, chúng ta mở rộng định nghĩa bước tính để bao hàm sự kiện mất
thông báo (sự kiện môi trường) dạng lossi, j(m) – thông báo m được Pi gửi cho Pjnhưng bị mất và Pj không nhận được Sự kiện lossi, j(m) áp dụng được trên cấu hình cknếu trong ck, qi,j chứa m Kết quả áp dụng lossi, j(m) trên ck được cấu hình ck+1 trong đó
m bị loại khỏi qi,j còn các thành phần khác không thay đổi so với trong ck Khác với các sự kiện tính được thực hiện bởi các bộ xử lý, trong các thực hiện thỏa đáng, chúng
ta không yêu cầu các sự kiện môi trường áp dụng được trên vô hạn lần phải xảy ra vô hạn lần Nói cách khác, ta không yêu cầu tính thỏa đáng phải áp dụng đối với các sự kiện môi trường
Trang 16Một thực hiện thỏa đáng kéo dài vô hạn không có nghĩa là các chương trình cục bộ
không bao giờ kết thúc Để mô hình hóa tính kết thúc của giải thuật, chúng ta định ra
một số trạng thái kết thúc của các bộ xử lý Đây là trạng thái của các bộ xử lý mà một khi đạt được, các bộ xử lý sẽ không bao giờ thay đổi, không gửi/nhận thông báo (đối với mô hình chuyển thông báo) hoặc không làm thay đổi nội dung các biến dùng chung (đối với mô hình với bộ nhớ dùng chung) Cấu hình trong đó tất cả các bộ xử lý không lỗi ở trạng thái kết thúc và không có thông báo treo (đã được gửi nhưng chưa được nhận) nào (với mô hình chuyển thông báo) được gọi là cấu hình kết thúc Một thực hiện kết thúc khi nó đạt đến cấu hình kết thúc
Các hệ thống phân tán được mô tả ở trên thuộc lớp không đồng bộ Trong thực tế,
tồn tại một lớp các hệ phân tán đồng bộ Các thành phần trong hệ phân tán đồng bộ
thường gần nhau về mặt địa lý và được điều khiển bởi một đồng hồ sung Các bộ xử lý thực hiện các phép tính đồng bộ theo nhịp sung đồng hồ Tuy nhiên, chúng ta không quan tâm đến cấu trúc vật lý của hệ thống mà chỉ quan tâm đến tính đồng bộ của nó
Vì tất cả các bộ xử lý thực hiện các phép tính đồng thời nên một thực hiện của hệ thống phân tán đồng bộ đơn giản được ký hiệu là E = (c1, c2, …) và hoàn toàn được xác định từ cấu hình ban đầu, c1
1.5 Đánh giá độ phức tạp
Rõ ràng, để xây dựng các hệ phân tán, chúng ta cần xây dựng các giải thuật phân tán Thực hiện của giải thuật phân tán diễn ra phân tán trên nhiều bộ xử lý Cũng như các giải thuật khác, giải thuật phân tán được đánh giá độ phức tạp trên hai khía cạnh:
độ phức tạp tính toán và độ phức tạp bộ nhớ Thoạt nhìn, việc đánh giá độ phức tạp tính toán dường như trái ngược với tính không đồng bộ của hệ thống phân tán Theo định nghĩa về các hệ thống không đồng bộ, không có giới hạn trên về thời gian xử lý/truyền thông báo Tuy nhiên, để có thể đánh giá và so sánh các giải thuật với nhau,
người ta sử dụng số vòng không đồng bộ để đánh giá độ phức tạp của một thực hiện cụ thể Vòng không đồng bộ (hay vòng) thứ nhất trong thực hiện E là tiền tố ngắn nhất E’
của E sao cho mỗi bộ xử lý thực hiện ít nhất một bước trong E’ Gọi E’’ là hậu tố của
E theo liền sau E’, E=E’E’’ Vòng thứ hai của E là vòng thứ nhất của E’’, vv… Số
Trang 17vòng trong thực hiện của một giải thuật phân tán được dùng để đánh giá độ phức tạp thời gian của giải thuật
Một cách trực quan, định nghĩa vòng không đồng bộ bỏ qua tốc độ của các bộ xử
lý bằng việc kéo dài vòng đủ dài để trong mỗi vòng, bộ xử lý có tốc độ chậm nhất cũng thực hiện được một bước tính
Độ phức tạp thời gian của một hệ thống đồng bộ là số sung trong thực hiện (bằng
Có nhiều phương pháp kháng lỗi, trong đó phương pháp lý tưởng nhất là làm cho
hệ thống có tính tự ổn định để sau khi hệ thống gặp bao nhiêu, bất kỳ loại lỗi gì cũng
có thể tự trở lại trạng thái bình thường và tiếp tục hoạt động tốt
1.6.2 Tính chất tự ổn định
Khái niệm tự ổn định được Dijkstra đưa ra đầu tiên năm 1973 trong bài báo nổi
tiếng “Self-stabilizing systems in spite of distributed control” [7] Tự ổn định, sau đó,
được nghiên cứu như một chuyên ngành thuộc tính toán phân tán
Một hệ tự ổn định có thể xuất phát từ một cấu hình bất kỳ, luôn đảm bảo sẽ thể hiện được hành vi “hợp lệ” mong muốn Nói cách khác, với thực hiện bất kỳ, sau hữu
hạn lần biến đổi cấu hình, ta có chuỗi cấu hình hợp lệ
Trang 18Ta định nghĩa hành vi hợp lệ mong muốn bằng tập các thực hiện hợp lệ được ký hiệu là LE Một tập các thực hiện hợp lệ được xác định cho một hệ thống cụ thể và một bài toán cụ thể Mọi thực hiện của hệ thống tự ổn định có hậu tố xuất hiện trong
LE Ví dụ, với bài toán loại trừ lẫn nhau, thực hiện hợp lệ là thực hiện trong đó tại mọi cấu hình, có nhiều nhất một bộ xử lý nằm trong đoạn găng, và trong đó mọi bộ xử lý được vào đoạn găng vô hạn lần
Một cấu hình c được gọi là an toàn đối với tập thực hiện hợp lệ LE và một giải
thuật A nếu mọi thực hiện thỏa đáng của giải thuật A xuất phát từ c đều thuộc LE Một giải thuật được gọi là tự ổn định đối với tập thực hiện hợp lệ LE nếu mọi thực hiện thỏa đáng của giải thuật đều đạt đến một cấu hình an toàn đối với giải thuật và
LE
1.6.3 Vai trò của tự ổn định
Một hệ thống tự ổn định có thể bỏ qua mọi lỗi Ta tưởng tượng, lỗi xuất hiện đẩy
hệ thống về một trạng thái nào đó Nhờ khả năng tự ổn định, sau lần xuất hiện lỗi cuối cùng, và sau hữu hạn bước chuyển trạng thái nữa, hệ thống trở lại trạng thái hợp lệ và hoạt động bình thường Tính tự ổn định đặc biệt hữu ích đối với các hệ thống động (các bộ xử lý và liên kết có thể được thêm mới, mất chức năng, được khôi phục lại)
Tự ổn định cho chúng ta một cách giải quyết triệt để trong khắc phục lỗi Một hệ thống không thể tránh được lỗi Lỗi có thể do phần cứng, phần mềm, do người sử dụng thiết lập hay nhập liệu sai, … Cách khắc phục lỗi truyền thống là liệt kê ra các lỗi, đồng thời, đưa ra cách giải quyết cho mỗi lỗi Tuy nhiên, cách này chỉ giải quyết được một số lỗi thường gặp Chúng ta không thể kể ra tất cả các lỗi tiềm tàng, do vậy không thể đảm bảo hệ thống không còn lỗi Một khi, hệ thống gặp lỗi lạ, tức là lỗi không có trong danh sách lỗi, nó không biết giải quyết như thế nào và mãi mãi trong trạng thái như vậy Một cách giải quyết khác là khứ lỗi [AS04, Lyn97] Tuy nhiên, cách này cũng chỉ khắc phục được hữu hạn lỗi Khi số lỗi vượt quá hệ số kháng lỗi, hệ thống rơi vào trạng thái lỗi và không thể hoạt động bình thường trừ khi nó được khởi động lại
Trang 191.6.4 Đánh giá độ phức tạp
Cũng như các giải thuật phân tán khác, giải thuật tự ổn định được đánh giá độ phức tạp thời gian dựa trên số vòng không đồng bộ Số vòng trong thực hiện của một giải thuật tự ổn định được dùng để đánh giá độ phức tạp thời gian của giải thuật
Giải thuật tự ổn định không bao giờ kết thúc, và các bộ xử lý phải tiếp tục liên lạc với các láng giềng của chúng Trong mô hình với bộ nhớ dùng chung, các bộ xử lý phải tiếp tục đọc các ô nhớ dùng chung của các láng giềng Trong mô hình chuyển thông báo, các bộ xử lý phải tiếp tục gửi và nhận thông báo Tính chất không kết thúc của giải thuật tự ổn định được giải thích như sau: giả sử các bộ xử lý kết thúc, Pi kết thúc ở trạng thái si Theo tính chất tự ổn định của giải thuật, hệ thống phải đạt đến cấu hình an toàn xuất phát từ bất kỳ cấu hình nào Khi hệ thống được bắt đầu từ cấu hình c tại đó bộ xử lý Pi có trạng thái si, không có bộ xử lý nào thực hiện bất kỳ bước nào, như vậy c là một cấu hình an toàn Do vậy, nhiệm vụ của giải thuật đã đạt được khi mỗi bộ xử lý Pi chỉ có duy nhất một trạng thái si Rõ ràng, nhiệm vụ này không yêu cầu bất kỳ liên lạc nào giữa các bộ xử lý và giải thuật được sử dụng không phải là một giải thuật phân tán
Tính không kết thúc của giải thuật dễ ràng được nhận ra từ mã của giải thuật: mã của giải thuật thường bao gồm một vòng lặp vô hạn chứa các thao tác liên lạc với các láng giềng Ví dụ, trong mô hình với bộ nhớ dùng chung, mã của giải thuật cho một bộ
xử lý Pi thường bắt đầu với các thao tác đọc các ô nhớ dùng chung của láng giềng, theo đó là các thao tác ghi vào các ô nhớ dùng chung cục bộ Số bước cần thiết để thực hiện một lần lặp của vòng lặp vô hạn trong ví dụ này là O(∆), trong đó ∆ là cận trên bậc (số láng giềng) của Pi
Chúng ta mở rộng khái niệm vòng không đồng bộ để có khái niệm chu kỳ không
đồng bộ (hay là chu kỳ) Chu kỳ thứ nhất của thực hiện E là tiền tố ngắn nhất E’ của E
sao cho mỗi bộ xử lý hoàn thành ít nhất một lần lặp của vòng lặp vô hạn trong E’ Gọi E’’ là hậu tố của E liền tiếp sau E’, E = E’E’’ Chu kỳ thứ hai của E là chu kỳ thứ nhất của E’’, vv…
Trang 20Lưu ý rằng nếu mỗi lần lặp của vòng lặp vô hạn bao gồm các thao tác đọc ô nhớ dùng chung của láng giềng, tính toán cục bộ, và ghi vào các ô nhớ dùng chung cục bộ, thì mỗi chu kỳ kéo dài O(∆) vòng
Độ phức tạp thời gian của một hệ thống đồng bộ là số sung trong thực hiện (bằng
Trang 21CHƯƠNG 2 CÁC GIẢI THUẬT SƠ ĐẲNG
2.1 Giới thiệu
Trong tính toán phân tán có rất nhiều công việc liên quan đến việc duy trì khung
nhìn (view) đến các đối tượng chung tại các trạm (sites) khác nhau của hệ thống phân
tán Với đối tượng chung là tôpô của hệ thống ta có yêu cầu cập nhật tôpô, hay nếu đối tượng chung là một tài nguyên cụ thể được lưu trữ trên một trạm nào đó ta có yêu cầu liệt kê danh sách tài nguyên trên mỗi trạm, hoặc một cơ sở dữ liệu tổng quát
Các đối tượng này bị tác động bởi những thay đổi, ví dụ liên kết giữa hai nút mạng được thêm mới hay mất đi làm thay đổi tôpô mạng, một tài nguyên được chiếm dụng rồi giải phóng, một bản ghi cơ sở dữ liệu được sửa đổi Như vậy, vấn đề đặt ra ở đây là cần có một cơ chế hiệu quả cho việc cập nhật khung nhìn về đối tượng chung tại các trạm khác nhau
Một ví dụ điển hình về cập nhật khung nhìn dạng này là bài toán Cập nhật Tôpô (Topology Update) với nhiệm vụ duy trì tại mỗi nút mạng khung nhìn về toàn mạng
trong khi đối mặt với những thay đổi tôpô có thể xuất hiện trong mạng, liên kết được
thêm mới hay bị đứt đoạn Giao thức Cập nhật Tôpô phải đảm bảo thực hiện truyền
những thay đổi này sao cho mọi nút mạng phải được cập nhật, bắt đầu được biết cục
bộ tại hai nút đầu liên kết, tiếp đến sẽ thông báo đến toàn mạng qua một mạng không đồng bộ
Các giao thức Cập nhật Tôpô vẫn đang giữ vai trò quan trọng trong nhiều mạng
thương mại và mạng chính phủ quan trọng của nước Mỹ như ARPANET [16], DECNET [19], và SNA [17] cũng như trong các mạng tốc độ cao mới đây như IBM’s PARIS [18], [2] và NSF/DARPA’s AURORA Các giao thức cập nhật được sử dụng
để quản lý các nhiệm vụ như định tuyến, dự trữ băng thông Một lý do nữa để nghiên
cứu bài toán Cập nhật Tôpô, như chỉ ra trong [4], là Cập nhật Tôpô là thể hiện khó
nhất của bài toán cập nhật cơ sở dữ liệu Cũng chú ý rằng nhiều bài toán phụ thuộc
tôpô như Tìm Đường đi Ngắn nhất và Xây dựng Cây Bao trùm Tối thiểu có thể được
giải quyết một cách cục bộ tại mỗi nút mạng khi các bản sao của tôpô mạng được duy trì tại tất cả các nút
Trang 22Khi xảy ra sự cố gây ra đứt đoạn kết nối trong mạng hoặc có thể do một nguyên nhân bất kỳ nào đó, các nút mạng có thể có các khung nhìn khác nhau về cơ sở dữ liệu chung, một số nút mạng vẫn chứa các bản ghi đã cũ Do vậy, khi kết nối được thiết lập trở lại, sự khác biệt giữa các khung nhìn giữa các nút sẽ cần phải được loại bỏ Hai nút liền kề liên kết được khôi phục gửi khung nhìn cho nhau và thống nhất với nhau một khung nhìn chung Tiếp đó, mỗi nút đương sự sẽ gửi khung nhìn chung đến tất cả các nút trong cùng thành phần liên thông Phát biểu hình thức của bài toán này được cho trong mục 2.2 liền sau đây
Một phương pháp sơ đẳng để thực hiện việc truyền khung nhìn chung đến tất cả các nút trong mạng là phát tỏa thông tin đến tất cả các nút Phương pháp này, được gọi
là Phát tỏa Đầy đủ (Full Broadcast), có thể rất lãng phí về truyền thông vì nó không
tận dụng tri thức có trước trong hệ thống Các nút chỉ cần thông báo về các thay đổi
nếu chúng đã có khung nhìn gần đúng về cơ sở dữ liệu Phương pháp Cập nhật Tăng
trưởng (Incremental Update) [4], [2] tận dụng toàn bộ các tri thức đã có trong hệ
thống, chỉ gửi duy nhất một thông báo trên một lỗi
Phát tỏa Đầy đủ và Cập nhật Tăng trưởng là hai đại diện cho hai thái cực; một thái
cực tốn kém cho truyền thông nhất nhưng có độ phức tạp thời gian gần tối ưu, thái cực
kia hiệu quả nhất cho truyền thông nhưng có độ phức tạp thời gian lớn Trong khi Cập
nhật Tăng trưởng tốt hơn Phát tỏa Đầy đủ ở độ phức tạp truyền thông, nó lại xấu hơn Phát tỏa Đầy đủ khi xét về độ phức tạp thời gian Thực tế này là do Phát tỏa Đầy đủ
đã tận dụng tối đa kỹ thuật dẫn ống (pipeline) thông điệp trong khi Cập nhật Tăng
trưởng không sử dụng kỹ thuật này [5]
Bài toán Phát tỏa với Tri thức Bộ phận (Broadcast with Partial Knowledge), được
phát biểu trong [5], là bài toán cập nhật khung nhìn của tất cả các nút trong khi tận dụng được cả tri thức có trước và cả kỹ thuật dẫn ống - nhằm giảm thiểu cả độ phức tạp thông báo và độ phức tạp thời gian
Một kết quả quan trọng của [4] là bài toán Cập nhật Tôpô có thể rút gọn về bài toán Phát tỏa với Tri thức Bộ phận Cụ thể hơn, mọi giao thức Phát tỏa với Tri thức
Bộ phận có thể chuyển thành giao thức Cập nhật Tôpô với cùng độ phức tạp thời gian
Trang 232.2 Bài toán
Xét một mạng truyền thông không đồng bộ bao gồm n+1 bộ xử lý, mỗi bộ xử lý lưu giữ một dữ liệu cục bộ gồm m bit Sẽ có một bộ xử lý được phân biệt là bộ xử lý
nguồn (source) Bài toán Duy trì dữ liệu chung trong một hệ phân tán yêu cầu tất cả
các bộ xử lý cập nhật dữ liệu riêng của nó sao cho giống dữ liệu riêng của bộ xử lý
nguồn Ngoài ra trong một số giải thuật giả thiết biết láng giềng (neighbor-knowledge)
có thể được sử dụng Giả thiết biết láng giềng nghĩa là, mỗi bộ xử lý biết dữ liệu của các làng giềng của nó Giả thiết này hoàn toàn thực tế trong ngữ cảnh Cập nhật Tô pô
vì khi một liên kết đươc thêm mới hay khôi phục, hai bộ xử lý liền kề cung đó có thể lập tức thông báo cho nhau về dữ liệu của mình
Chúng ta chỉ cần xét trường hợp tôpô mạng là một cây với bộ xử lý nguồn là gốc
của cây đó Giải thiết này hợp với giả thiết khung công việc (framework) được mô tả
trong [4] và trong [2], ở đó thay đổi trong tôpô được phát tỏa thông qua cây bao trùm Hơn nữa, chúng ta chỉ cần giải quyết bài toán trên một chuỗi, với bộ xử lý nguồn ở một đầu của chuỗi Bài toán phát tỏa trên cây bao trùm có thể rút gọn về bài toán phát tỏa trên một chuỗi bằng cách thực hiện lượt duyệt theo chiều sâu cây bao trùm để tạo thành chuỗi
Để đơn giản chúng ta giả thiết mỗi nút biết được vị trí của nó trong chuỗi Điều này
có thể được thực hiện với chi phí tối thiểu bằng cách phát tỏa một thông báo đếm số chặng thông báo đi qua xuất phát từ bộ xử lý nguồn
Để giao thức hoạt động đúng, một giả thiết cần được đảm bảo là mạng tĩnh Liên kết hay nút được thêm vào, mất đi hay khôi phục lại được quản lý bởi một giao thức ở mứcdưới (như trong [4] và [5]), và giao thức này phải được khởi động lại trên một cây mới
Cấu hình hệ thống bao gồm dữ liệu của các bộ xử lý, có thể được biểu diễn như một mảng hai chiều của các bít với cột bên trái nhất là dữ liệu của bộ xử lý nguồn, cột
thứ i từ bên trái sang là dữ liệu của bộ xử lý thứ i trong chuỗi tính từ bộ xử lý nguồn
(xem Hình 2.1) [3]
Trang 24Hình 2.1 Ví dụ minh họa bài toán Duy trì dữ liệu chung trong hệ phân tán Trong
ví dụ này, chúng ta có n+1 = 5 bộ xử lý duy trì một khung nhìn với m = 4 mục Nguồn
là bộ xử lý 0 Các mục sai so với nguồn được gạch chân Độ sai khác cục bộ là số mục
gạch chân tại một bộ xử lý Độ sai khác tổng là ∆ = 7
Dữ liệu được lưu tại mỗi bộ xử lý (gồm m bít) là khung nhìn của nó về dữ liệu
nguồn Nhiệm vụ đặt ra cho các bộ xử lý là cập nhật khung nhìn của chúng mỗi khi dữ liệu nguồn thay đổi sao cho khung nhìn của tất cả các bộ xử lý giống nhau và giống dữ liệu nguồn
Ký hiệu các bộ xử lý trong chuỗi bắt đầu từ bộ xử lý nguồn lần lượt là P0 (nguồn),
P1, , và Pn Gọi x0, x1, , xn lần lượt là dữ liệu/khung nhìn của P0, P1, , Pn tương ứng
Trang 25Nhằm đánh giá mức khai thác tri thức cục bộ đã có, chúng ta sử dụng số đo của [5]
đó là số đo mức độ “đúng” của tri thức tại mỗi bộ xử lý Gọi độ sai khác cục bộ tại một bộ xử lý là số bít trong dữ liệu của nó khác với dữ liệu nguồn Độ sai khác tổng là tổng các độ sai khác cục bộ, và được ký hiệu là ∆ (xem Hình 2.1)
Độ phức tạp thời gian và độ phức tạp truyền thông là các hàm của m, n và ∆
2.4 Giải thuật Phát tỏa Đầy đủ
Giải thuật Phát tỏa Đầy đủ, như đã được giới thiệu ở trên, thực hiện gửi toàn bộ dữ
liệu nguồn đến tất cả các bộ xử lý theo kỹ thuật dẫn ống Bắt đầu là bộ xử lý nguồn gửi
dữ liệu nguồn cho bộ xử lý liền sau nó m bít dữ liệu nguồn được gửi liên tiếp Mỗi bộ
xử lý khác nguồn, khi nhận được bít thứ i của dữ liệu nguồn, chuyển ngay bít đó cho
bộ xử lý kế sau nó nếu nó không phải là bộ xử lý cuối cùng trong chuỗi, và hiệu chỉnh
bít thứ i trong dữ liệu của mình nếu cần Hình 2.2 mô tả một thực hiện của giải thuật Trong ví dụ thực hiện này, hệ thống gồm n+1 = 5 bộ xử lý, số bít dữ liệu của mỗi bộ
xử lý là m = 4 Các bít dữ liệu được đánh số 0, 1, 2, và 3 Những bít dữ liệu khác với
nguồn được in đậm và gạch chân Liên kết giữa hai bộ xử lý liên tiếp không được vẽ ở đây nhưng được hiểu là khoảng trắng giữa hai cột dữ liệu liên tiếp ứng với hai bộ xử lý liền nhau trong chuỗi Trạng thái của các bộ xử lý (các dữ liệu cục bộ của chúng) và trạng thái của các liên kết (bít dữ liệu được truyền trên nó) tại mỗi đơn vị thời gian được biểu diễn trong Hình 2.2 Trong hình này, một liên kết giữa hai bộ xử lý liên tiếp được hiểu là khoảng trắng giữa hai cột dữ liệu ứng với chúng; các số 0 hoặc 1 ghi ở một khoảng trắng chỉ bít 0 hoặc 1 đang được truyền trên liên kết tương ứng
Trang 27Hình 2.2 Một thực hiện của giải thuật Phát tỏa Đầy đủ (n = 4, m =4, ∆ = 7)
Tổng số bít được gửi và nhận là n*m, không liên quan đến ∆ Thời gian để hoàn thành cập nhật các khung nhìn là n+ m Giải thuật có độ phức tạp thời gian tối ưu nhưng độ phức tạp truyền thông lớn
2.5 Giải thuật Cập nhật Tăng trưởng [3]
Trong giải thuật Cập nhật Tăng trưởng [3], giả thiết biết láng giềng
(neighbor-knowledge) được sử dụng: mỗi bộ xử lý biết được dữ liệu/khung nhìn của bộ xử lý liền
sau nó trong chuỗi Giả thiết này có thể thực hiện vì mỗi khi dữ liệu nguồn thay đổi,
bộ xử lý gần nguồn hơn sẽ biết trước và thông báo cho bộ xử lý sau nó; dữ liệu của bộ
xử lý sau là bản sao dữ liệu cũ của bộ xử lý trước
Trang 28Ý tưởng giải thuật được mô tả đơn giản như sau Bắt đầu, P0 sửa lỗi cho P1: P0thông báo vị trí các bít lỗi (khác x0) trong x1 cho P1, P1 cập nhật (đảo các bít tại vị trí lỗi) x1 theo thông báo lỗi nhận được Sau khi gửi tất cả các thông báo sửa lỗi cho P1, P0gửi một thông báo hoàn thành cập nhật cho P1 Lúc này P1 bắt đầu sửa lỗi cho P2 Quá trình cứ như vậy tiếp tục diễn ra cho đến khi Pn được sửa lỗi Hai loại thông báo được các bộ xử lý sử dụng: thông báo sửa lỗi và thông báo hoàn thành cập nhật Thông báo
sửa lỗi có kích thước 1+log m, trong đó bít thứ nhất có giá trị là 1 báo hiệu cho bộ xử
lý nhận đây là thông báo sửa lỗi, log m bít còn lại chỉ bít j trong khung nhìn của bộ xử
lý nhận cần được sửa (đảo bít) Thông báo hoàn thành cập nhật bao gồm một bít duy nhất có giá trị là 0 báo hiệu cho bộ xử lý nhận quá trình sửa lỗi trên nó đã xong và bộ
xử lý nhận có thể bắt đầu sửa lỗi cho bộ xử lý sau nó Có n thông báo hoàn thành cập
nhật và ∆ thông báo sửa lỗi (mỗi lỗi cần một thông báo sửa lỗi), do vậy tổng số bít
thông báo là n+∆(1+log m), hay độ phức tạp truyền thông là O(n+ ∆ log m) Đây là độ
phức tạp truyền thông tối ưu Tuy nhiên, vì các lỗi được sửa một cách tuần tự, không
một bít nào được dẫn ống , nên độ phức tạp thời gian cũng là O(n+ ∆ log m)
Một thực hiện của giải thuật được cho cho trong Hình 2.3 Một liên kết giữa hai bộ
xử lý liên tiếp được hiểu là khoảng trắng giữa hai cột dữ liệu ứng với chúng; các số 0 hoặc 1 ghi ở một khoảng trắng chỉ bít 0 hoặc 1 đang được truyền trên liên kết tương ứng
Trang 30Hình 2.3 Sửa lỗi cho hai bộ xử lý đầu trong một thực hiện của giải thuật Cập
nhật Tăng trưởng (n = 4, m =4, ∆ = 7)
Giải thuật Cập nhật Tăng trưởng có độ phức tạp truyền thông thấp nhƣng có độ
phức thời gian khá cao Lý do giải thuật có độ phức tạp thấp là các bộ xử lý chỉ gửi các
thông báo sửa lỗi, không gửi tất cả các bít mà nó có nhƣ trong giải thuật Phát tỏa Đầy
đủ Tuy nhiên, giải thuật Cập nhật Tăng trưởng không thực hiện dẫn ống nhƣ giải
thuật Phát tỏa Đầy đủ Tại một thời điểm, theo giải thuật Cập nhật Tăng trưởng, có
duy nhất một bộ xử lý thực hiện sửa lỗi, các bộ xử lý còn lại ở trạng thái “nghỉ ngơi”
và chờ Bởi vậy, thời gian hoàn thành một thực hiện của giải thuật lớn
Trang 31Nhiều đề xuất cải tiến giải thuật Cập nhật Tăng trưởng được đưa ra nhằm đạt được
hiệu quả cả về mặt truyền thông lẫn về mặt thời gian Một đề xuất trong số đó là song
song hóa quá trình sửa lỗi: khi một bộ xử lý nhận được thông báo sửa lỗi ở vị trí j, nó
có thể sửa bít j trong dữ liệu của bộ xử lý liền sau nó nếu cần; hoặc tối ưu hơn, khi một
bộ xử lý nhận được thông báo sửa lỗi ở vị trí j, nó có thể sửa các bít nhỏ hơn hoặc bằng j trong dữ liệu của bộ xử lý liền sau nó nếu cần Đề xuất này, trong nhiều trường
hợp, không phát huy tác dụng Ví dụ, quá trình song song hóa sẽ bị ngắt quãng tại bộ
xử lý có dữ liệu giống dữ liệu nguồn
Thực chất của quá trình song song hóa là tận dụng kỹ thuật dẫn ống để cho nhiều
bộ xử lý có thể sửa lỗi đồng thời Các giải thuật được đề xuất nhằm nâng cao hiệu quả thời gian đều dựa trên quan sát này, ví dụ giải thuật của [3] như được trình bày trong chương tiếp sau đây
Trang 32CHƯƠNG 3 GIẢI THUẬT CẬP NHẬT VỚI TRI THỨC BỘ PHẬN
3.1 Tư tưởng
Hai giải thuật trình bày trong chưong trước đều có chung một nhược điểm là lãng
phí tài nguyên Phát toả đầy đủ lãng phí về mặt truyền thông còn Cập nhật tăng
trưởng lại lãng phí thời gian thực hiện Cũng áp dụng phương pháp Phát toả với Tri thức bộ phận giống như Cập nhật tăng trưởng, các tác giả của bài báo [3] đã kết hợp
sử dụng thêm kỹ thuật phân chia và dẫn ống để đưa ra một giải thuật mới hiệu quả hơn, dung hoà cho hai giải thuật ở trên
Giải thuật cập nhật với tri thức bộ phận, gọi là giải thuật AS [3], là một giải thuật đơn định cho bài toán Phát tỏa với Tri thức Bộ phận, có độ phức tạp truyền thông và thời gian tương ứng là O((n + ∆) log m) và O((n + min{m, ∆}) log 3
Tư tưởng của giải thuật AS được mô tả như sau Các tác giả đặt một “tiến trình”
chịu trách nhiệm cho toàn bộ giao thức – nghĩa là chịu trách nhiệm “quét” toàn bộ mảng bít Tiếp đó, nhằm thu được độ phức tạp thời gian thấp, các tác giả áp dụng một phiên bản dẫn ống yếu bằng việc cho phép tiến trình này làm việc đệ quy và cho sinh
ra các “tiến trình con” Mỗi tiến trình con có trách nhiệm quét một vùng nhỏ của mảng bít Nhằm quét mảng con, các tiến trình con thực hiện cùng giao thức với tiến trình chính với các thông số nhỏ hơn Một tiến trình con lại có thể sinh ra những tiến trình con khác để thực hiện quét các vùng nhỏ hơn trong vùng mà nó được phân công Các tiến trình di chuyển từ bộ xử lý này sang bộ xử lý khác theo kỹ thuật dẫn ống
Nếu mọi tiến trình đều sinh ra tiến trình con và lập tức giao hết mọi công việc của
nó cho tiến trình con thì độ phức tạp truyền thông sẽ rất cao Các tác giả tránh điều này bằng cách cho mỗi tiến trình nỗ lực thực hiện công việc của mình trước, nếu mất nhiều thời gian thì nó mới sinh ra các tiến trình con và giao việc cho tiến trình con Số lỗi