35
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA ĐÀO TẠO QUỐC TẾ VÀ SAU ĐẠI HỌC ---------------**********---------------- BÀI TIỂU LUẬN Môn: TÍNH TOÁN PHÂN TÁN Chủ đề: “Thời gian logic” Giáo viên giảng dạy: PGS.TS Trần Đình Quế Nhóm thực hiện: Hoàng Thị Hà Nguyễn Huyền Trang Hoàng Hoài Nam Phạm Đình Vũ

Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

Embed Size (px)

Citation preview

Page 1: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA ĐÀO TẠO QUỐC TẾ VÀ SAU ĐẠI HỌC

---------------**********----------------

BÀI TIỂU LUẬNMôn: TÍNH TOÁN PHÂN TÁN

Chủ đề: “Thời gian logic”

Giáo viên giảng dạy: PGS.TS Trần Đình Quế

Nhóm thực hiện: Hoàng Thị Hà

Nguyễn Huyền Trang

Hoàng Hoài Nam

Phạm Đình Vũ

Lớp: Cao học Hệ thống thông tin 2013

Hà nội, ngày 28 tháng 3 năm 2014

Page 2: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

MỤC LỤC

MỤC LỤC.....................................................................................................................1

NỘI DUNG...................................................................................................................2

Phần 1: GIỚI THIỆU....................................................................................................2

Phần 2: FRAMEWORK CHO HỆ THỐNG ĐỒNG HỒ LOGIC................................4

2.1 Định nghĩa...........................................................................................................4

2.2 Thực thi đồng hồ logic........................................................................................4

Phần 3: THỜI GIAN VÔ HƯỚNG...............................................................................6

3.1 Định nghĩa...........................................................................................................6

3.2 Các tính chất cơ bản............................................................................................6

Phần 4: VECTOR THỜI GIAN....................................................................................9

4.1 Một số định nghĩa về vector thời gian................................................................9

4.2 Ví dụ về tiến độ của các đồng hồ vector.............................................................9

4.3. Quan hệ nhân quả giữa hai sự kiện..................................................................10

4.4 Các tính chất của vector thời gian.....................................................................11

4.4.1 Tính đẳng cấu.............................................................................................11

4.4.2 Tính nhất quán mạnh..................................................................................11

4.4.3 Đếm sự kiện...............................................................................................11

Phần 5: THỰC HIỆN HIỆU QUẢ CỦA ĐÔNG HỒ VECTOR................................12

5.1 Phương pháp vi phân của Singhal-Kshemkalyani............................................12

5.2 Kỹ thuật phụ thuộc trực tiếp của Fowler – Zwaenepoel...................................14

Phần 6: KỸ THUẬT THÍCH ỨNG CỦA JARD – JOURDAN.................................18

Phần 7: MA TRẬN THỜI GIAN................................................................................22

Page 3: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

NỘI DUNG

Phần 1: GIỚI THIỆUKhái niệm quan hệ nhân quả giữa các sự kiện là cơ sở để thiết kế và phân tích các hệ

hiều hành, tính toán phân tán và song song. Thông thường, quan hệ nhân quả được theo

dõi giám sát bởi thời gian vật lý. Sự cần thiết của thời gian logic xuất phát từ thực tế

trong các hệ thống phân tán, không thể có thời gian vật lý toàn cục, mà chỉ có thể nhận ra

một xấp xỉ của nó. Một thời gian logic, do đó không dựa trên đồng hồ nhưng có thể dựa

trên một giá trị thời gian thu được từ một cấu trúc dữ liệu hướng công thức. Khi một sự

kiện được thực hiện trong một quá trình, nó tính toán thời gian logic địa phương của

mình và gửi nó cùng với một thông điệp. Sự kiện bên nhận có được tri thức về thời gian

logic địa phương của các sự kiện trước đó mà nó có thể sử dụng để thiết lập thời gian

logic riêng của mình. Cơ chế này đảm bảo rằng các sự kiện được thực hiện theo đúng

trình tự. Chương này sẽ thảo luận 3 phương pháp để thực thi thời gian logic (ví dụ: thời

gian vô hướng, thời gian vectơ và thời gian ma trận) mà đã được đề xuất để phát hiện

quan hệ nhân quả giữa các sự kiện của tính toán phân tán.

Quan hệ nhân quả giữa các sự kiện trong một hệ thống phân tán là một định nghĩa

mạnh trong lập luận, phân tích, và suy luận tính toán. Tri thức về quan hệ nhân quả giữa

các sự kiện giúp cho việc giải quyết đa dạng các bài toán trong hệ phân tán. Ví dụ về một

số bài toán đó như sau:

- Thiết kế các thuật toán phân tán: tri thức về quan hệ nhân quả giữa các sự kiện

giúp đảm bảo tính tồn tại, và công bằng trong các thuật toán loại trừ, duy trì tính nhất

quán trong cơ sở dữ liệu nhân bản, và thiết kế các thuật toán phát hiện deadlock để tránh

phát hiện sai hoặc không phát hiện được deadlock.

- Theo dõi các sự kiện phụ thuộc: trong vấn đề gỡ lỗi phân tán, tri thức về sự phụ

thuộc nhân quả giữa các sự kiện giúp xây dựng nên một trạng thái nhất quán cho việc

khôi phục thực thi; trong quá trình phục hồi lỗi, nó giúp xây dựng một trạm kiểm soát;

trong cơ sở dữ liệu nhân bản, nó hỗ trợ phát hiện các mâu thuẫn tập tin trong trường hợp

phân vùng mạng

- Tri thức về tiến độ: tri thức về sự phụ thuộc nhân quả giữa các tiến trình giúp đo

được tiến độ của của các tiến trình trong tính toán phân tán. Điều này có ích trong việc

loại bỏ thông tin không dùng nữa (lỗi thời), thu gom rác và phát hiện kết thúc.

- Đo khả năng truy cập đồng thời: tri thức về số lượng sự kiện phụ thuộc nhân quả,

là có ích trong việc đo số lượng đồng thời trong tính toán phân tán. Tất cả các sự kiện mà

2

Page 4: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

không phụ thuộc nhân quả có thể được thực thi đồng thời. Do vậy, một phép phân tích

nhân quả trong một tính toán phân tán cho ta ý tưởng về sự đồng thời trong chương trình.

Khái niệm nhân quả được con người sử dụng rộng rãi một cách vô thức, trong việc

lập kế hoạch, lập lịch, và thực hiện một việc, hoặc trong việc quyết định tính bất khả thi

của một kế hoạch. Trong cuộc sống hằng ngày, thời gian toàn cục để suy luận mối quan

hệ nhân quả thu được từ các đồng hồ đồng bộ hóa lỏng lẻo. Tuy nhiên trong hệ tính toán

phân tán, tỷ lệ xuất hiện các sự kiện là lớn hơn một vài đại lượng và thời gian thực thi các

sự kiện là nhỏ hơn một vài đại lượng. Do đó, nếu đồng hồ vật lý không được đồng bộ hóa

chặt chẽ thì quan hệ nhân quả giữa các sự kiện có thể không được chỉ ra chính xác. Các

giao thức thời gian mạng, NTP, mà có thể duy trì thời gian chính xác đến từng vài chục

mili giây trên Internet, vẫn không đủ để bắt được quan hệ nhân quả trong các hệ phân tán.

Tuy nhiên, trong tính toán phân tán, tiến độ thông thường được đẩy nhanh, và tương tác

giữa các tiến trình xảy ra cũng nhanh hơn. Do đó, trong một tính toán phân tán, quan hệ

nhân quả giữa các sự kiện được sinh ra bởi thực thi chương trình và tính chất đơn điệu cơ

bản của nó có thể đo được chính xác bởi các đồng hồ logic.

Trong một hệ thống đồng hồ logic, mọi tiến trình đều có 1 đồng hồ logic mà cải tiến

tập các quy tắc. Mỗi sự kiện được gán với một nhãn thời gian và quan hệ nhân quả giữa

các sự kiện có thể được suy ra từ nhãn thời gian của chúng. Các nhãn thời gian được gán

cho các sự kiện tuân theo tính chất đơn điệu cơ sở, đó là, nếu một sự kiện a ảnh hưởng

nhân quả tới sự kiện b thì nhãn thời gian của a nhỏ hơn nhãn thời gian của b.

Chương này đầu tiên giới thiệu một mô hình chung của hệ thống đồng hồ logic trong

các hệ thống phân tán, và sau đó thảo luận 3 cách để thực thi thời gian logic trong hệ

phân tán. Trong phương pháp thứ nhất, đồng hồ vô hướng Lamport, thời gian được biểu

diễn bởi các số nguyên không âm, ở phương pháp thứ hai, thời gian được biểu diễn bởi

một vecto các số nguyên không âm, phương pháp thứ 3, thời gian được biểu diễn bởi một

ma trận các số nguyên không âm. Chúng tôi cũng thảo luận các phương pháp hiệu quả để

thực hiện các hệ thống đồng hồ vectơ.

Chương này kết thúc bằng một thảo luận về thời gian ảo, sự thực hiện của nó sử dụng

cơ chế thời gian dọc, và thảo luận ngắn gọn về đồng bộ hóa đồng hồ vật lý và giao thức

thời gian mạng NTP.

3

Page 5: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

Phần 2: FRAMEWORK CHO HỆ THỐNG ĐỒNG HỒ LOGIC

2.1 Định nghĩa

Một hệ thống đồng hồ logic bao gồm một miền thời gian T và đồng hồ logic C. Các

phần tử của T tạo thành một tập có thứ tự từng phần trên quan hệ < . Quan hệ này thường

được gọi là xảy ra trước hoặc quan hệ nhân quả. Đồng hồ logic C là một hàm mà ánh xạ

một sự kiện e trong hệ phân tán tới một phần tử trong miền thời gian T, ký hiệu là C(e) và

được gọi là nhãn thời gian của e, được định nghĩa như sau:

C: H→T, sao cho tính chất sau được thỏa mãn:

với hai sự kiện ei và ej , ei →ej⇒ C(ei) < C(ej).

Tính chất đơn điệu (monotonicity )này được gọi là điều kiện nhất quán đồng hồ. Khi

T và C thỏa mãn điều kiện sau:

với hai sự kiện ei và ej , ei →ej⇔ C(ei) < C(ej),

hệ thống đồng hồ được gọi là nhất quán mạnh.

2.2 Thực thi đồng hồ logic

Thực thi đồng hồ logic yêu cầu giải quyết hai vấn đề: cấu trúc dữ liệu địa phương tới

mọi tiến trình để biểu diễn thời gian logic và một giao thức (tập các quy tắc) để cập nhật

các cấu trúc dữ liệu để đảm bảo điều kiện nhất quán. Mỗi tiến trình pi duy trì các cấu trúc

dữ liệu mà cho phép hai khả năng sau:

• Một đồng hồ logic địa phương, ký hiệu bởi lci mà giúp tiến trình pi đo được tiến độ

của nó.

• Một đồng hồ logic toàn cục, ký hiệu gci là một biểu diễn địa phương tiến trình pi

của thời gian logic toàn cục. Nó cho phép tiến trình này gán những nhãn thời gian nhất

quán lên các sự kiện địa phương của nó. Thông thường, lci là một bộ phận của gci

Giao thức đảm bảo rằng một đồng hồ logic của tiến trình được quản lý nhất quán.

Giao thức bao gồm hai quy tắc sau:

• R1 Quy tắc này điều chỉnh cách thức để đồng hồ logic địa phương được cập nhật

bởi một tiến trình khi nó thực thi một sự kiện (gửi, nhận, hoặc internal).

• R2 Quy tắc này điều chỉnh cách thức một tiến trình cập nhật đồng hồ logic toàn cục

để để cập nhật biểu diễn của nó về thời gian toàn cục và tiến độ toàn cục. Nó yêu cầu

những thông tin nào về thời gian logic được mang theo trong thông điệp và cách thức

thông tin này được sử dụng bởi các tiến trình nhận để cập nhật biểu diễn thời gian toàn

cục của nó.

4

Page 6: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

Hệ thống đồng hồ logic phân biệt nhau bởi biểu diễn thời gian logic của chúng và

giao thức cập nhật đồng hồ logic. Tuy nhiên, tất cả các hệ thống đồng hồ logic đều thực

hiện quy tắc R1 và R2 và do đó đảm bảo tính đơn điệu cơ sở kết hợp với quan hệ nhân

quả. Hơn nữa, mỗi hệ thống đồng hồ logic cụ thể còn cung cấp cho người dùng một vài

tính năng bổ sung.

5

Page 7: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

Phần 3: THỜI GIAN VÔ HƯỚNG

3.1 Định nghĩa

Biểu diễn thời gian vô hướng được đề xuất bởi Lamport năm 1978, là một nỗ lực để

sắp thứ tự các sự kiện trong hệ phân tán. Miền thời gian trong biểu diễn này là tập các số

nguyên không âm. Đồng hồ logic địa phương của tiến trình pi và biểu diễn địa phương

của thời gian toàn cục được ép thành 1 biến nguyên Ci

Các quy tắc R1 và R2 cập nhật đồng hồ như sau:

• R1 trước khi thực thi sự kiện (send, receive, or internal), tiến trình pi thực hiện như

sau:

Ci :=Ci+d (d>0)

Nói chung, mỗi lần R1 được thực thi, d có thể có 1 giá trị khác nhau, và giá trị này có

thể phụ thuộc ứng dụng. Tuy nhiên, d thường bằng 1 vì điều này có thể xác định được

thời gian mỗi sự kiện ở duy nhất1 tiến trình, trong khi giữ tốc độ tăng của d ở mức thấp

nhất.

• R2 mỗi thông điệp mang theo giá trị đồng hồ của bên gửi nó ở thời điểm gửi. Khi

một tiến trình pi nhận một thông điệp với nhãn thời gian Cmsg, nó thực thi những hành

động sau đây:

1.Ci:=max ( Ci, Cmsg);

2. thực hiện R1;

3. chuyển thông điệp.

Hình 3.1 cho thấy sự phát triển của thời gian vô hướng với d= 1.

3.2 Các tính chất cơ bản

Tính nhất quán

6

Page 8: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

Rõ ràng, các đồng hồ vô hướng thỏa mãn tính chất đơn điệu và do đó thỏa mãn tính

nhất quán:

với hai sự kiện ei và ej , ei →ej⇒ C(ei) < C(ej).

Sắp thứ tự toàn phần

Các đồng hồ vô hướng có thể được dùng để sắp thứ tự toàn bộ các sự kiện trong hệ

phân tán. Vấn đề chính trong các sự kiện được sắp thứ tự toàn phần đó là có nhiều hơn

hoặc hai sự kiện ở các tiến trình khác nhau cùng có 1 nhãn thời gian giống hệt nhau. (Chú

ý rằng đối với hai sự kiện e1và e2, C(e1) =C(e2) ⇒e1|| e2). Ví dụ, trong hình 3.1, sự kiện

thứ 3 của tiến tình P1 và sự kiện thứ 2 của tiến trình P2 có cùng nhãn thời gian vô hướng.

Do đó, một cơ chế phá vỡ ràng buộc là cần thiết để sắp xếp các sự kiện như vậy.

Thông thường, một ràng buộc được phá vỡ như sau: bộ nhận dạng tiến trình được sắp thứ

tự tuyến tính và một ràng buộc giữa các sự kiện với nhãn thời gian vô hướng xác định

được phá vỡ trên cơ sở nhận dạng tiến trình. Nhận dạng tiến trình thấp hơn trong bảng

xếp hạng, sẽ có độ ưu tiên cao hơn.

Nhãn thời gian của một sự kiện được ký hiệu bởi bộ (t, i), trong đó t là thời gian xuất

hiện và i là đặc tính của tiến trình nơi nó xảy ra. Quan hệ thứ tự toàn phần < trên hai sự

kiện x và y với nhãn thời gian (h,i) và (h,j) tương ứng, được định nghĩa như sau:

x ≺y⇔ (h<k or ( h=k and i < j))

Bởi vì các sự kiện xảy ra ở cùng một thời gian vô hướng logic là độc lập (nghĩa là

chúng không có quan hệ nhân quả) chúng có thể được sắp xếp sử dụng bất cứ tiêu chuẩn

tùy ý nào mà không vi phạm quan hệ nhân quả →. Do vậy, một thứ tự toàn phần là nhất

quán với quan hệ nhân quả “→”. Chú ý rằng x≺y⇒x→y∨x || y.Một thứ tự toàn phần nói

chung thường được đảm bảo tính chất tồn tại trong các thuật toán phân tán. Các yêu cầu

được gán nhãn thời gian và được phục vụ theo thứ tự toàn phần dựa trên những nhãn thời

gian này.

Đếm sự kiện

Nếu giá trị tăng d luôn luôn bằng 1, thời gian vô hướng có tính chất thú vị sau đây:

nếu sự kiện e có một nhãn thời gian h thì h-1 biểu diễn thời gian logic tối thiểu, được tính

toán bằng số đơn vị sự kiện, được yêu cầu trước khi sản sinh sự kiện e. Nói cách khác, h-

1 sự kiện đã được sản xuất tuần tự trước sự kiện e không liên quan tới các tiến trình sản

xuất các sự kiện này. Ví dụ, trong hình 3.1, 5 sự kiện trước b, là đường dẫn nhân quả dài

nhất kết thúc tại b.

Không nhất quán mạnh

7

Page 9: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

Hệ thống đồng hồ vô hướng là không đồng nhất mạnh, đó là

với hai tiến trình ei và ej,C(ei)<C(ej) !⇒ei →ej

Ví dụ, trong hình 3.1, sự kiện thứ 3của tiến trình P1 có nhãn thời gian nhỏ hơn sự

kiện thứ 3 của tiến trình P2.Tuy nhiên, sự kiện đầu đã không xảy ra trước sự kiện sau. Lý

do mà các đồng hồ vô hướng là không nhất quán mạnh đó là đồng hồ logic địa phương và

đồng hồ logic toàn cục của một tiến trình được ghép thành một, kết quả là thông tin quan

hệ nhân quả bị mất giữa các sự kiện của các tiến trình khác nhau. Ví dụ: trong hình 3.1,

khi tiến trình P2 nhận thông điệp đầu tiên từ tiến trình P1, nó cập nhật đồng hồ tới 3,

quên mất rằng nhãn thời gian của sự kiện sớm nhất trong P1 mà nó phụ thuộc là 2.

8

Page 10: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

Phần 4: VECTOR THỜI GIAN

4.1 Một số định nghĩa về vector thời gian

Hệ thống đồng hồ vector được Fidge, Mattern và Schmuck đề xuất.

• Trong hệ thống đồng hồ vector, miền thời gian tượng trưng bởi 1 tập hợp các

vector nguyên, không âm, n chiều.

• Mỗi tiến trình pi duy trì một vector vti[1..n], mà vti[i] là đồng hồ logic cục bộ của pi

và mô tả tiến độ thời gian logic tại tiến trình pi.

• vti[j] thể hiện cho việc nhận biết mới nhất của tiến trình pi về thời gian cục bộ tiến

trình pj.

• Nếu vti[j] = x, thì tiến trình pi biết rằng thời gian cục bộ tại tiến trình pj đã tiến triển

tới x.

• Toàn bộ các vector vti thiết lập quan sát của pi về thời gian logic toàn cục và được

sử dụng để đánh nhãn thời gian các sự kiện.

• Nhãn thời gian của một sự kiện là giá trị của đồng hồ vector tiến trình của nó khi

sự kiện được thực thi.

Tiến trình pi sử dụng 2 luật R1 và R2 để cập nhật đồng hồ của nó:

• R1: Trước khi thực thi một sự kiện, tiến trình pi cập nhật thời gian logic cục bộ

của nó như sau: vti[i] := vti[i] + d (d > 0)

• R2: Mỗi thông điệp m mang theo đồng hồ vector vt của tiến trình gửi tại thời gian

gửi. Nhận được thông điệp (m,vt), tiến trình pi thực thi theo trình tự sau:

– Cập nhật thời gian logic toàn cục của nó như sau:

1 ≤ k ≤ n : vti[k] := max(vti[k], vt[k]);

– Thực thi R1.

– Truyền thông điệp m.

4.2 Ví dụ về tiến độ của các đồng hồ vector

Quy tắc được áp dụng như sau:

1. Mọi vector khởi tạo có giá trị 0 tại mỗi tiến trình:

vti[j] = 0 với i, j = 1, ..., n

2. Những số gia tiến trình nguyên tố của các vector trong vector địa phương xảy ra

trước khi sự kiện gán nhãn thời gian:

vti[i] = vti[i] + 19

Page 11: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

3. Thông điệp được gửi từ tiến trình pi gắn liền với vti tương ứng

4. Khi pj nhận được thông điệp, so sánh vector thành phần theo từng nguyên tố và

thiết lập vector địa phương:

vtj[i] = max (vti[i], vtj[i]) với i = 1, ..., n

Xét ví dụ về tiến độ của các đồng hồ vector với giá trị tăng lên d=1.

Hình 2.1: Sự phát triển của vector thời gian

4.3. Quan hệ nhân quả giữa hai sự kiện

Việc xác lập quan hệ nhân quả giữa hai sự kiện e1 và e2 bất kỳ dựa trên những quy tắc

sau:

1. Nếu e1 và e2 cùng xảy ra trên một tiến trình pi thì e1 → e2 khi và chỉ khi Hi(e1) <

Hi(e2)

2. Nếu e1 là sự kiện gửi đi một thông điệp m và e2 là sự kiện nhận được chính thông

điệp đó thì e1 → e2

3. Nếu e1 và e2 xảy ra trên hai tiến trình pi và pj bất kỳ trong hệ thống, ta có: e1 → e2

tương đương Hi(e1) < Hj(e2)

4. Nếu e1, e2 có mối quan hệ e1 || e2 thì tương đương H(e1) || H(e2)

So sánh nhãn thời gian vector

Để so sánh 2 nhãn thời gian vector vh và vk ta có các mối quan hệ sau:

10

Page 12: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

4.4 Các tính chất của vector thời gian

4.4.1 Tính đẳng cấu

Nếu các sự kiện trong một hệ thống phân tán được đánh nhãn thời gian sử dụng một

hệ thống đồng hồ vector, chúng ta có tính chất sau:

• Nếu 2 sự kiện x và y có nhãn thời gian vh và vk tương ứng, thì

Do đó, có một đẳng cấu giữa tập các sự kiện có thứ tự từng phần được tạo ra bởi

một phép tính toán phân tán và nhãn thời gian vector của chúng

• Nếu tiến trình mà ở đó một sự kiện xảy ra, các thử nghiệm để so sánh hai nhãn

thời gian có thể được đơn giản hóa như sau: nếu sự kiện x và y xảy ra tương ứng

tại tiến trình pi và pj và được gán nhãn thời gian vh và vk tương ứng, thì

4.4.2 Tính nhất quán mạnh

• Hệ thống các đồng hồ vector có tính nhất quán mạnh; do đó bằng cách kiểm tra

nhãn thời gian vector của 2 sự kiện, ta có thể xác định các sự kiện có quan hệ nhân

quả hay không.

• Tuy nhiên, Charron-Bost đã chỉ ra rằng số chiều của đồng hồ vector không thể nhỏ

hơn n ( tổng số tiến trình trong tính toán phân tán).

4.4.3 Đếm sự kiện

Nếu d = 1 trong luật R1, thì thành phần thứ i của đồng hồ vector tại tiến trình pi,

vti[i], biểu thị số sự kiện đã xảy ra tại pi cho đến thời điểm đó.

Vì vậy, nếu một sự kiện e có nhãn thời gian vh, vh[j] biểu thị số sự kiện được thực thi

bởi tiến trình pj có quan hệ nhân quả trước e. Rõ ràng, ∑vh[j] – 1 thể hiện tổng số các sự

kiện có quan hệ nhận quả trước e trong tính toán phân tán.

11

Page 13: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

Phần 5: THỰC HIỆN HIỆU QUẢ CỦA ĐÔNG HỒ VECTORNếu số lượng các tiến trình trong một tính toán phân tán là lớn, thì đồng hồ vector sẽ

yêu cầu kèm thêm một lượng lớn thông tin trong các thông điệp nhằm phục vụ mục đích

của quá trình khuyếch tán thời gian và cập nhật đồng hồ. Chi phí thông điệp tăng tuyến

tính với số lượng tiến trình trong hệ thống và khi có đến hàng nghìn tiến trình trong hệ

thống, kích cỡ thông điệp trở lên rất lớn ngay cả khi chỉ có một vài sự kiện diễn ra trong

vài tiến trình. Phần này thảo luận đến các cách hiệu quả để duy trì đồng hồ vector, các

phương pháp cơ bản tương tự có thể dùng để thực hiện hiêu quả đồng hồ ma trận.

Charron-Bost đã chỉ ra [2] rằng nếu đồng hồ vector phải đáp ứng tính chất nhất quán

mạnh, thì nhìn chung nhãn vector thời gian phải có cỡ ít nhất phải là n, tất cả các tiến

trình. Do vậy, nhìn chung kích thước của một nhãn vector thời gian là số lượng tiến trình

liên quan trong tính toán phân tán; tuy nhiên, một vài sự tối ưu hóa có thể xảy ra và tiếp

theo chúng tôi sẽ thảo luận về các kĩ thuật thực hiện đồng hồ vector một cách hiệu quả.

5.1 Phương pháp vi phân của Singhal-Kshemkalyani

Phương pháp vi phân của Singhal-Kshemkalyani [25] dựa trên việc quan sát giữa

thông điệp gửi thành công đến các tiến trình tương tự, chỉ một vài thành phần của đồng

hồ vector có thể bị thay đổi trong quá trình gửi thông điệp. Điều này dễ xảy ra hớn khi số

lượng tiến trình lớn do chỉ một vài tiến trình sẽ tương tác với thường xuyên bằng cách gửi

các thông điệp. Trong kỹ thuật này, khi một tiến trình pi gửi một thông điệp đến một tiến

trình pj, nó chỉ kèm thêm những thành phần của đồng hồ vector khác với thông điệp cuối

cùng được gửi đến pj.

Kỹ thuật này hoạt động như sau: nếu các thành phần i1,i2,…,in của đồng hồ vector tại

pi thay đổi tương ứng thành v1,v2,…vn, kể từ thông điệp cuối cùng được gửi đến pj, thì

tiến trình pi kèm theo một nhãn thời gian theo dạng

{(i1,v1), (i2,v2),…(in1,vn1)}

cùng thông điệp tiếp theo tới pj. Khi pj nhận được thông điệp này, nó sẽ cập nhật

đồng hồ vector của nó như sau:

vti[ik] = max(vti[ik],vk) với k=1,2,…n1.

Như vậy, phương pháp này cắt giảm kích thước thông điệp, băng thông truyền và yêu

câu vùng đệm (để lưu giữ thông điệp). Trong trường hợp xấu nhất, mọi thành phần của

đồng hồ vector được cập nhật tại pi do thông điệp cuối cùng tới tiến trình p j, và thông

điệp tiếp theo từ pi đến pj sẽ cần mang nhãn vector thời gian hoàn chỉnh của kích cỡ n.

Tuy nhiên, thường thì kích thước của nhãn thời gian trên một thông điệp sẽ ít hơn n. Lưu

ý rằng kỹ thuật này yêu cầu mỗi tiến trình ghi nhớ nhãn vector thời gian trong thông điệp 12

Page 14: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

cuối gửi đến mọi tiến trình khác. Thực thi trực tiếp việc này sẽ dẫn đến chi phí lưu trữ

O(n2) tại mỗi tiến trình. Kỹ thuật này còn yêu cầu các kênh giao tiếp theo FIFO cho việc

truyền (gửi) thông điệp.

Singhal và Kshemkalyani đã phát triển một kỹ thuật thông minh cắt giảm chi phí lưu

trữ này tại mỗi tiến trình xuống O(n). Kỹ thuật này hoạt động theo cách sau: tiến trình p i

duy trì hai vector bổ sung sau:

LSi[l…n] (lần gửi cuối cùng): LSi[j] thể hiện giá trị của vti[i] khi tiến trình pi

gửi đi thông điệp cuối cùng đến tiến trình pj.

LUi[l…n] (lần cập nhật cuối cùng): LUi[j] thể hiện giá trị của vti[j] khi tiến

trình pi cập nhật lần cuối thành phần vti[j].

Rõ ràng, LUi[i]=vti[i] tại mọi thời điểm và LUi[j] cần được cập nhật chỉ khi nhận

được một thông điệp khiến pi cập nhật thành phần vti[j]. Đồng thời, LSi[j] cần cập nhật

chỉ khi pi gửi một thông điệp đến pj. Kể từ lần giao tiếp cuối cùng từ pi đến pj, chỉ những

thành phần k của đồng hồ vector vti[k] thay đổi do LSi[j] < LUi[k]. Do đó, những thành

phần này chỉ cần gửi trong thông điệp từ pi tới pj. Khi pi gửi một thông điệp tới pj, nó chỉ

gửi một bộ dữ liệu,

{(x, vti [x])|LSi[j]<LUi[x]},

là nhãn vector thời gian đến pj, thay vì gửi một vector n thành phần trong một thông điệp.

Do vậy, vector nguyên với kích thước n không phải gửi cùng với thông điệp. Thay

vào đó, chỉ các thành phần trong đồng hồ vector đã thay đổi từ thông điệp cuối cùng gửi

tới tiến trình kia được gửi theo dạng {(p1, latest_value), (p2,latest_value),..}, trong đó pi

thể hiện rằng thành phần lần thứ pi của đồng hồ véc tơ đã thay đổi.

Phương pháp này được minh họa trong hình 3.4. Ví dụ, thông điệp thứ hai từ p 3 tới p2

(bao gồm một nhãn thời gian {(3,2)} thông báo tới p2 rằng thành phần thứ ba của đồng hồ

vector đã được điều chỉnh và giá trị mới là 2. Điều này là do tiến trình p 3 (được thể hiện

bởi thành phần thứ ba của vector) làm tăng giá trị đồng hồ từ 1 lên 2 kể từ thông điệp

cuối cùng gửi tới p2.

13

Page 15: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

Chi phí duy trì đồng hồ vector trong hệ thống lớn có thể giảm đáng kể bằng kỹ thuật

này, đặc biệt nếu sự tương tác tiến trình diễn ra cục bột heo không gian và thời gian. Kỹ

thuật này sẽ trở nên có lợi trong nhiều ứng dụng bao gồm cả bộ nhớ chia sẻ phân tán

nhân quả, phát hiện bế tắc phân tán, thi hành loại trừ lẫn nhau và truyền thông cục bộ

điển hình được quan sát trong hệ thống phân tán.

5.2 Kỹ thuật phụ thuộc trực tiếp của Fowler – Zwaenepoel

Kỹ thuật phụ thuộc trực tiếp [6] Fowler – Zwaenepoel làm giảm kích thước của

thông điệp bằng cách chỉ truyền một giá trị vô hướng trong thông điệp. Không có đồng

hồ vector được duy trì tức thời (on-the-fly). Thay vào đó, một tiến trình chỉ duy trì thông

tin liên quan đến tính phụ thuộc trực tiếp đến các tiến trình khác. Một vectơ thời gian cho

một sự kiện, thể hiện cho tính phụ thuộc bắc cầu trên tiến trình khác, được xây dựng

ngoại tuyến từ một tìm kiếm đệ quy của thông tin phụ thuộc trực tiếp vào các tiến trình.

Mỗi tiến trình pi duy trì một vector phụ thuộc Di. Ban đầu, Di[j] = 0 với j = 1, …, n.

Di được cập nhật như sau:

1. Bất cứ khi nào một sự kiện xảy ra tại pi, Di[i] := Di[i]+1. Có nghĩa là, các thành

phần của vector tương ứng với thời gian cục bộ được tăng lên một.

2. Khi một tiến trình pi gửi một thông điệp tới tiến trình pj, nó mang (piggybacks)

giá trị cập nhật của Di[i] trong thông điệp.

3. Khi tiến trình pi nhận một thông điệp từ pj với giá trị piggybacks d, pi cập nhật

vector phụ thuộc của nó như sau: Di[j]:= max {Di[j],d}.

Do vậy, vector phụ thuộc Di chỉ phản ánh phụ thuộc trực tiếp. Tại bất cứ thời điểm

nào, Di[j] biểu thị số thứ tự của các sự kiện mới nhất trên tiến trình p j cái mà trực tiếp ảnh

14

Page 16: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

hưởng đến trạng thái hiện tại. Lưu ý rằng sự kiện này có thể đứng trước sự kiện mới nhất

tại pj nào ảnh hưởng đến trạng thái hiện tại.

Hình 3.5 minh họa kỹ thuật Fowler – Zwaenepoel. Ví dụ, khi tiến trình p4 gửi một

thông điệp tới tiến trình p3, nó piggybacks một đại lượng vô hướng chỉ ra sự phụ thuộc

trực tiếp của p3 vào p4 bởi thông điệp này. Sau đó, tiến trình p3 sẽ gửi một thông điệp tới

tiến trình p2 piggybacking một đại lượng vô hướng để chỉ sự phụ thuộc trực tiếp của p2

vào p3 bởi thông điệp này. Bây giờ, tiến trình p2 trên thực tế gián tiếp phụ thuộc vào quá

trình p4 vì tiến trình p3 là phụ thuộc vào tiến trình p4. Tuy nhiên, tiến trình p2 không bao

giờ được biết về tính phụ thuộc gián tiếp của nó vào p4.

Như vậy mặc dù tính phụ thuộc trực tiếp được thông báo hợp lệ cho các tiến trình

tiếp nhận, phụ thuộc bắc cầu (gián tiếp) không được duy trì bởi phương pháp này. Chúng

chỉ có thể thu được bằng cách đệ quy tìm dấu vết các vectơ phụ thuộc trực tiếp của các sự

kiện không trực tuyến. Điều này liên quan đến việc tính toán chi phí và độ trễ.

Như vậy phương pháp này là lý tưởng chỉ cho những ứng dụng mà không đòi hỏi

tính toán tính phụ thuộc bắc cầu tức thì. Tổng phí tính toán đặc trưng của phương pháp

này làm cho nó phù hợp nhất cho các ứng dụng như điểm ngắt nhân quả và phục hồi tính

năng kiểm tra từng điểm không đồng bộ trong đó các tính toán của quan hệ phụ thuộc

nhân quả được thực hiện ngoại tuyến.

Kỹ thuật này giúp tiết kiệm đáng kể chi phí; chỉ có một đại lượng vô hướng

piggybacked trên mỗi thông điệp. Tuy nhiên, các vector phụ thuộc không thể hiện tính

phụ thuộc bắc cầu (tức là, một nhãn thời gian vector). Tính phụ thuộc bắc cầu (hoặc

nhãn thời gian vector) của một sự kiện thu được bằng cách đệ quy truy tìm các vectơ phụ

thuộc trực tiếp của tiến trình. Rõ ràng, điều này sẽ có chi phí và sẽ liên quan đến độ trễ.

Do đó, kỹ thuật này là không phù hợp với các ứng dụng yêu cầu tính toán nhãn vector

thời gian tức thì. Tuy nhiên, kỹ thuật này là lý tưởng cho các ứng dụng mà các tính toán

15

Page 17: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

của quan hệ nhân quả phụ thuộc thực hiện ngoại tuyến (ví dụ, điểm ngắt nhân quả, phục

hồi không đồng bộ checkpointing).

Tính phụ thuộc bắc cầu có thể được xác định bằng cách kết hợp sự kiện phụ thuộc

trực tiếp của một sự kiện với sự phụ thuộc trực tiếp vào nó. Trong hình 3.5, sự kiện thứ

tư của tiến trình p3 phụ thuộc vào sự kiện đầu tiên của tiến trình p4 và sự kiện thứ tư của

tiến trình p2 phụ thuộc vào sự kiện thứ tư của tiến trình p3. Bằng cách kết hợp hai phụ

thuộc trực tiếp, có thể suy luận rằng sự kiện thứ tư của tiến trình p2 phụ thuộc vào sự kiện

đầu tiên của tiến trình p4. Cần hết sức lưu ý rằng nếu sự kiện ej tại tiến trình pj xảy ra

trước sự kiện ei tại tiến trình pi, thì tất cả các sự kiện từ e0 đến ej-1 trong tiến trình pj cũng

xảy ra trước ei. Do đó, ghi lại cho ei sự kiện mới nhất của tiến trình pj đã xảy ra trước ei là

đủ. Bằng cách này, mỗi sự kiện sẽ ghi lại sự phụ thuộc của nó vào các sự kiện mới nhất

trên mỗi tiến trình khác mà nó phụ thuộc vào và duy trì những sự kiện phụ thuộc riêng

của chúng. Kết hợp tất cả các phụ thuộc, các tập nguyên (tức là vector nguyên bản) của

một sự kiện cụ thể phụ thuộc vào các sự kiện có thể được xác định ngoại tuyến.

Tính toán ngoại tuyến của phụ thuộc bắc cầu có thể được thực hiện bằng cách sử

dụng một thuật toán đệ quy đề xuất trong [6] và được minh họa bằng một dạng thức có

sửa đổi trong thuật toán 3.1. DTV là vector theo dõi phụ thuộc có kích thước n (trong đó

n là số tiến trình) mà lẽ ra phải theo dõi tất cả các phụ thuộc quan hệ nhân quả của một sự

kiện cụ thể ei ở tiến trình pi. Các thuật toán sau đó cần phải được gọi là DependencyTrack

(i, Die[i] ). Các thuật toán khởi tạo DTV có giá trị nhãn thời gian ít nhất có thể là 0 cho tất

cả các thành phần trừ i mà giá trị được đặt cho Die[i]: với mọi k = 1, …,n và k i,

DTV[k] = 0 và DTV[i] = Die[i] .

Sau đó thuật toán gọi giải thuật VisitEvent đối với tiến trình pi và sự kiện ei.

VisitEvent kiểm tra tất cả các thành phần (1, …,n) của DTV và Die và nếu giá trị trong Di

e

là lớn hơn giá trị trong DTV tại thành phần đó, sau đó DTV giả định giá trị của D ie cho

thành phần đó. Điều này đảm bảo rằng sự kiện mới nhất trong tiến trình j mà e i đó phụ

thuộc vào được ghi lại trong DTV. VisitEvent được gọi đệ qui đối với tất cả các thành

phần mà mới được đưa vào trong DTV để các thông tin phụ thuộc mới nhất có thể được

theo dõi một cách chính xác.

Minh họa cho thuật toán theo dõi phụ thuộc đệ quy bằng cách theo dõi các phụ thuộc

của sự kiện thứ tư tại tiến trình p2. Các thuật toán được gọi là DependencyTrack (2 4).

DTV ban đầu được thiết lập là <0 4 0 0> bởi DependencyTrack. Sau đó nó gọi

VisitEvent(2 4). Các giá trị được tổ chức bởi D42 là < 1 4 4 0 >. Vì vậy, DTV lúc này

được cập nhật thành < 1 4 0 0 > và VisitEvent (1 1) được gọi.

16

Page 18: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

Các giá trị được tổ chức bởi D11 là < 1 0 0 0 >. Vì khi không có thành phần nào là lớn

hơn các thành phần tương ứng trong DTV, thuật toán lặp lại. Một lần nữa các giá trị được

tổ chức bởi D24 được kiểm tra và ần này thành phần 3 được tìm thấy là trong D2

4 lớn hơn

DTV. Vì vậy, DTV được cập nhật thành < 1 4 4 0 > và VisiEvent(3 4) được gọi. Các giá

trị được tổ chức bởi D34 là < 0 0 4 1 >. Vì thành phần 4 của D3

4 lớn hơn của DTV, nó

được cập nhật thành < 1 4 4 1 > và VisitEvent(4 1) được gọi. Vì tất cả các thành phần đã

được kiểm tra, Visit(2,4) được giải phóng và DependencyTrack cũng vậy.

Kỹ thuật này có thể tiết kiệm đáng kể chi phí chỉ có một đại lượng vô hướng

piggybacked trên mỗi thông điệp. Một trong những yêu cầu quan trọng là một tiến trình

cập nhật và ghi lại vectơ phụ thuộc của nó sau khi nhận được một thông điệp và trước khi

gửi đi bất kỳ thông điệp nào. Ngoài ra, nếu sự kiện xảy ra thường xuyên, kỹ thuật này sẽ

cần ghi lại lịch sử của một số lớn các sự kiện.

17

Page 19: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

Phần 6: KỸ THUẬT THÍCH ỨNG CỦA JARD – JOURDAN Kỹ thuật phụ thuộc trực tiếp Fowler–Zwaenepoel không cho phép các phụ thuộc

ngoại lấy được ở thời gian thực trong khi thực thi của các tiến trình. Ngoài ra, một tiến

trình phải theo dõi một sự kiện (ví dụ cập nhật hoặc lưu vector phụ thuộc của nó) sau khi

nhận một thông điệp nhưng trước khi gửi ra bất kỳ thông điệp nào. Mặt khác, trong quá

trình xây dựng lại một vector nhãn thời gian từ các vector phụ thuộc trực tiếp, tất cả các

phụ thuộc nguyên nhân sẽ không được lấy. Nếu các sự kiện xảy ra rất thường xuyên, kỹ

thuật này sẽ yêu cầu lưu lịch sử của số lượng lớn các sự kiện.

Kỹ thuật Jard–Jourdan [8], các sự kiện có thể được theo dõi một cách thích ứng trong

khi duy trì khả năng lấy được tất cả phụ thuộc của một sự kiện được theo dõi. (Theo dõi

một sự kiện có nghĩa là lưu thông tin về các phụ thuộc của nó). Phương pháp này sử dụng

ý tưởng là khi một sự kiện e được theo dõi lưu các phụ thuộc của nó, sau đó các sự kiện

tiếp theo có thể xác định các phụ thuộc thích ứng của nó là bộ các sự kiện mà chúng phụ

thuộc một cách gián tiếp bằng cách tạo việc sử dụng thông tin được lưu về e. Lý do là khi

một sự kiện e được theo dõi, thông tin về việc gửi và nhận các thông điệp được duy trì

bởi một tiến trình được lưu trong sự kiện đó và thông tin được duy trì bởi tiến trình được

đặt lại và cập nhật sau đó. Do đó, tiến trình lan truyền thông tin sau e, nó chỉ lan truyền

lịch sử các hoạt động xảy ra sau e. Sự kiện được theo dõi tiếp theo cũng trong cùng tiến

trình hoặc trong một tiến trình khác, sau đó sẽ phải thấy thông tin được lưu cho e biết về

các hoạt động mà xảy ra trước e. Phương pháp này vẫn không cho phép xác định toàn bộ

phụ thuộc nguyên nhân trong thời gian thực, nhưng tránh được vấn đề lưu lượng lớn lịch

sử được nhận ra khi sử dụng kỹ thuật phụ thuộc trực tiếp.

Để triển khai kỹ thuật lưu thông tin trong một sự kiện được quan sát và thiết lập lại

thông tin được quản lý bởi một tiến trình, Jard–Jourdan một quan hệ toán tử giả trực tiếp

<< trên các sự kiện của tính toán phân tán như sau:

Nếu các sự kiện ei và ej xảy ra ở các tiến trình pi và pj tương ứng, giả sử ei << ej nếu

tồn tại một đường dẫn thông điệp truyền tải bắt đầu sau e j trên pj và kết thúc trước ei trên

tiến trình ei như là không có sự kiện được theo dõi trên đường dẫn. Quan hệ này được gọi

là toán tử giả trực tiếp bởi vì sự kiện ei có thể phụ thuộc vào nhiều sự kiện không được

theo dõi trên đường dẫn, gọi là ue1, ue2, … uen đến lượt phụ thuộc vào sự kiện khác. Nếu

ei xảy ra sau uen, sau đó ei vẫn được xem như phụ thuộc trực tiếp vào ue1, ue2, … uen vì

các sự kiện này không được theo dõi là giả thiết sai lầm có sự phụ thuộc trực tiếp. Nếu sự

kiện khác ek xảy ra sau ei, sau đó các phụ thuộc ngoại của ek trên ue1, ue2, … uen có thể

được xác định bởi thông tin được lưu ở ei và ei có thể làm giống với ej.

18

Page 20: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

Kỹ thuật được xử lý sử dụng cơ chế sau: đồng hồ vector bộ phận p_vti ở tiến trình pi

là danh sách các giá trị hữu hạn trên mẫu (j,v) chỉ ra rằng trạng thái hiện thời của P i là

phụ thuộc giả trên sự kiện trên tiến trình pj có số thự tự là v. Ban đầu, ở một tiến trình p i:

p_vti ={(i,0)}.

Cho p_vti = {(i1, v1), …,(i, v),…,(in, vn)} biểu thị đồng hồ vector bộ phận ở tiến trình

pi. Cho e_vti là biến lưu nhãn thời gian của sự kiện được theo dõi.

(i) Bất cứ khi nào một sự kiện được theo dõi ở tiến trình p i, nội dung của đồng hồ

vector bộ phận p_vti được truyền sang e_vti và p_vti được đặt lại và cập nhật

như sau:

e_vti = {(i1, v1), …,(i, v),…,(in, vn)}

p_vti = {(i, v+1)}

(ii) Khi tiến trình pj gửi một thông điệp tới pi, nó mang theo giá trị hiện thời của

p_vti trong thông điệp.

(iii) Khi pi nhận một thông điệp mang theo nhãn thời gian p_vt, pi cập nhật p_vti

như sự kết hợp sau: (cho p_vt = {(im1, vm1),…,(imk, vmk)} và p_vti = {(i1, v1),…

(il, vl)}:

Toàn bộ (imx, vmx) là (imx, .) không có mặt trong v_pti;

Toàn bộ (ix, vx) là (ix, .) không có mặt trong v_pt;

Toàn bộ (ix, max(vx, vmx)) cho tất cả (vx, .) mà có mặt trong v_pt và

p_vti.

19

Page 21: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

Trong sơ đồ 3.6, eX_ptn biểu thị nhãn thời gian của sự kiện được theo dõi thứ X ở

tiến trình pn. Chẳng hạn, sự kiện 1 được theo dõi ở p4 được gán nhãn thời gian e1_pt4 =

{(4, 0), (5, 1)}; nhãn thời gian này hàm ý rằng tiền bối giả trực tiếp của sự kiện này được

nằm trong tiến trình p4 và p5 và tương ứng với sự kiện 0 được theo dõi ở tiến trình p4 và

sự kiện 1 được theo dõi ở p5. v_ptn biểu thị danh sách nhãn thời gian được thu thập bởi

một tiến trình pn. Ví dụ, chúng ta hãy xem xét v_pt3. Tiến trình p3 đầu tiên thu thập nhãn

thời gian của sự kiện zero (3, 0) bên trong v_pt3 và khi sự kiện 1 được theo dõi xảy ra, nó

truyền nội dung của nó tới e1_pt3, thiết lập lại danh sách của nó và cập nhật giá trị của nó

thành (3,1) là nhãn thời gian của sự kiện được theo dõi. Khi nó nhận thông điệp từ tiến

trình p2, nó bao gồm các phần tử đó mà không có mặt trong danh sách của nó, cụ thể là

(1, 0) và (2, 0) vào v_pt3. Một lần nữa, khi sự kiện 2 được theo dõi, nó thiết lập lại danh

sách của nó thành {(3, 2)} và truyền nội dung của nó vào e2_pt3 chứa {(1, 0), (2, 0), (3,

1)}. Nó có thể được xem là sự kiện 2 ở tiến trình p3 phụ thuộc trực tiếp vào sự kiện 0 trên

tiến trình p2 và sự kiện 1 trên tiến trình p3. Nhưng nó là phụ thuộc trực tiếp giả vào sự

kiện 0 ở tiến trình p1. Nó cũng phụ thuộc vào tiến trình 0 ở sự kiện p3 nhưng thông tin

phụ thuộc này lấy được bằng cách kiểm tra e1_pt3 lưu trong sự kiện được theo dõi. Do đó,

các phụ thuộc ngoại của sự kiện 2 ở tiến trình p3 có thể được tính toán bằng cách kiểm tra

các sự kiện được theo dõi trong e2_pt3. Nếu điều này được thực hiện đệ quy, sau đó tất cả

20

Page 22: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

phụ thuộc nguyên nhân của sự kiện được theo dõi có thể lưu được. Nó cũng phù hợp để

theo dõi ở đây mà các phụ thuộc ngoại này không thể được xác định trực tuyến nhưng từ

log của các sự kiện.

Phương pháp này có thể giúp đảm bảo rằng danh sách mang theo trên thông điệp có

kích thước tối ưu. Nó cũng có thể giới hạn kích thước của danh sách bằng cách đưa vào

sự kiện giả được theo dõi. Nếu kích thước của danh sách bị giới hạn là k, sau đó khi nhãn

thời gian của các sự kiện k được thu thập trong danh sách, một sự kiện giả được theo dõi

có thể được đưa vào để nhận nội dung của danh sách. Điều này cho phép nhiều độ phức

tạp trong quản lý kích thước các thông điệp.

21

Page 23: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

Phần 7: MA TRẬN THỜI GIAN

7.1. Đĩnh nghĩa

Trong một hệ thống các ma trận đồng hồ, thời gian được biểu diễn bởi một tập hợp

các ma trận n x n của các số nguyên không âm. Một tiến trình p i duy trì một ma trận

mti[1..n,1..n], trong đó:

mti[i,i] biểu thị đồng hồ logic cục bộ của pi và lưu vết diễn biến của tính toán ở

tiến trình pi;

mti[i,j] biểu thị tri thức cuối cùng mà tiến trình pi có về đồng hồ logic cục bộ,

mtj[j,j] của tiến trình pj (chú ý rằng dòng mti[i,.] không là thứ gì nhưng đồng

hồ vector vti[.] và biểu lộ toàn bộ thuộc tính của các đồng hồ vector);

mti[j,k] biểu diễn tri thức mà tiến trình pi có về tri thức cuối cùng mà pj có về

đồng hồ logic cục bộ, mtk[k,k] của pk.

Toàn bộ ma trận mti biểu thị cái nhìn cục bộ về thời gian logic toàn cục của p i. Ma

trận nhãn thời gian của một sự kiện là giá trị của ma trận đồng hồ của tiến trình khi sự

kiện được thực thi.

Tiến trình pi sử dụng các quy tắc R1 và R2 sau đây để cập nhật đồng hồ của nó:

R1: Trước khi thực hiện một sự kiện, tiến trình p i cập nhật thời gian logic cục

bộ của nó như sau:

mti[I,i] := mti[i,i] + d (d > 0)

R2: Mỗi thông điệp m mang theo ma trận thời gian mt. Khi p i nhận một thông

điệp như vậy (m,mt) từ một tiến trình pj. pi thực hiện tuần tự các hành động

sau đây:

(i) Cập nhật thời gian logic toàn cục như sau:

(a) 1 ≤ k ≤ n : mti[i,k] := max (mti[i,k], mt[j,k]), (đó là cập nhật dòng

mti[i,*] của nó với dòng của pj trong nhãn thời gian nhận được, mt);

(b) 1 ≤ k,l ≤ n : mti[k,l] := max (mti[k,l], mt[k,l]);

(ii) Thực hiện R1;

(iii) Phân phát thông điệp m.

22

Page 24: Đề Tài Tìm Hiểu Chương 3 Logical Time Trong Tính Toán Phân Tán

Sơ đồ 3.7 cho một ví dụ minh họa các ma trận đồng hồ diễn biến trong tính toán phân

tán. Chúng ta giả sử d = 1. Chúng ta hãy xem xét các sự kiện sau: e là sự kiện thứ x i ở

tiến trình pi, ek1 và ek

2 là các sự kiện thứ xk1 và xk

2 ở tiến trình pk và ej1 và ej

2 là các sự kiện

thứ xj1 và xj

2 ở pj. Cho mte biểu diễn ma trận nhãn thời gian liên kết với sự kiện e. Do

thông điệp m4, ek2 là sự kiện cuối cùng của pk trước e về mặt nguyên nhân, do đó, chúng

ta có mte[i,k] = mte[k,k] = xk2. Tương tự, mte[i,j] = mte[j,j] = xj

2. Sự kiện cuối cùng của pk

được biết bởi pj, cho tri thức của pi khi nó thực hiện sự kiện e, là ek1; do đó mte[j,k] = xk

1.

Tương tự, chúng ta có mte[k,j] = xj1.

Một hệ thống ma trận đồng hồ là đề nghị không chính thức đầu tiên của Micheal và

Fischer [5] và được sử dụng bởi Wuu và Bernstain [28] và bởi Sarin và Lynch [22] để

loại bỏ các thông tin không dùng đến trong các cơ sở dữ liệu nhân bản.

7.2. Các thuộc tính cơ bản

Rõ ràng vector mti[i,.] chứa toàn bộ thuộc tính của đồng hồ vector. Ngoài ra, ma trận

đồng hồ có thuộc tính sau đây:

mink(mti[k,l] ≥ t => tiến trình pi biết rằng mỗi tiến trình pk khác biết rằng thời gian

cục bộ của pl được diễn biến cho tới t.

Nếu điều này là đúng, rõ ràng là tiến trình pi biết rằng tất cả các tiến trình khác biết

rằng pl sẽ không bao giờ gửi thông tin với thời gian cục bộ ≤ t. Trong nhiều ứng dụng,

điều này ngụ ý rằng các tiến trình sẽ không yêu cầu lâu hơn từ p l một vài thông tin và có

thể sử dụng thực tế này để bỏ qua các thông tin không dùng đến.

Nếu d luôn là 1 trong quy tắc R1, thì mt i[k,l] biểu thị số sựu kiện xảy ra ở p l và được

biết bởi pk cho tới tri thức của pi có liên quan.

23