Lưu ý rằng quan hệ nhân quả là một thuật ngữ không xác định trong bài báo. Lamport đang sử dụng nó trong một lời giải thích không chính thức. Anh ta cho rằng có thể ảnh hưởng đến nhân quả là một khái niệm trực quan sẽ có ý nghĩa tương tự với độc giả của anh ta cũng như đối với anh ta. Tôi nghĩ cho Lamportmột có thể gây ảnh hưởng bthực sự có nghĩa là một cái gì đó giống như thông tin có thể chảy từmột đến b hoặc là một có thể tác động đến hành vi của b, hơn cả ý tưởng Aristoteles cổ điển của b là hậu quả vật lý của một.
Ví dụ: giả sử một máy tính đang thực hiện một chương trình có hai câu lệnh:
a: X := 1
b: print X
Tôi nghĩ rằng tất cả chúng ta có thể đồng ý rằng tuyên bố đó a
xảy ra trước đây b
nhưng tôi sẽ không nói rằng "việc thực thi câu lệnh gán (sự kiện a
) đã khiến chương trình thực thi print
câu lệnh (sự kiện b
)". Mặt khác, tôi có thể nói điều gì đó hơi khác: "sự kiện a
, (gán giá trị 1 cho X
), ảnh hưởng đến giá trị được in bởi sự kiện b
."
Bây giờ hãy lấy một ví dụ (có khả năng) gây tranh cãi hơn.
a: X := 1
b: Y := 1
a
xảy ra trước đây b
, nhưng tôi nghĩ hầu hết mọi người sẽ nói, "không có mối quan hệ nhân quả giữa a
và b
." Nhưng trong bài báo này có một mối quan hệ nhân quả giữa a
vàb
. Tôi sẽ cố gắng giải thích điều này một cách ngắn gọn nhất có thể, nhưng nó sẽ dài dòng.
Bài viết về máy nhà nước
Dưới đây là những gì Lamport nói về bài báo trên trang chủ của mình :
Một hệ thống phân tán có thể được mô tả như một máy trạng thái tuần tự cụ thể được triển khai với một mạng các bộ xử lý. Khả năng hoàn toàn đặt hàng các yêu cầu đầu vào dẫn ngay đến một thuật toán để thực hiện một máy trạng thái tùy ý bởi một mạng các bộ xử lý, và do đó để thực hiện bất kỳ hệ thống phân tán nào. Vì vậy, tôi đã viết bài báo này, đó là về cách thực hiện một máy trạng thái phân tán tùy ý. ...
Đây là bài báo thường được trích dẫn nhất của tôi. ... Nhưng tôi hiếm khi gặp bất cứ ai biết rằng bài báo nói bất cứ điều gì về máy móc nhà nước. Mọi người dường như nghĩ rằng đó là về mối quan hệ nhân quả đối với các sự kiện trong một hệ thống phân tán hoặc vấn đề loại trừ lẫn nhau phân tán. Mọi người đã nhấn mạnh rằng không có gì về máy móc nhà nước trong bài báo. Tôi thậm chí đã phải quay lại và đọc lại nó để thuyết phục bản thân mình rằng tôi thực sự đã nhớ những gì tôi đã viết.
Mỗi quy trình là một máy trạng thái và thành phần của các quy trình thành một hệ thống / thuật toán phân tán là một máy trạng thái.
Lamport đang ngầm sử dụng một ký hiệu tay ngắn mà trong thiết kế kỹ thuật số, chúng tôi gọi là chuyển đăng ký và mỗi quy trình là (ngầm) một máy trạng thái thuật toán . Điều chúng tôi thực sự quan tâm là làm thế nào mỗi sự kiện ảnh hưởng đến toàn bộ trạng thái của mỗi quá trình. Mỗi câu lệnh chuyển đăng ký là một cách nói ngắn gọn về một tập hợp các trạng thái chuyển tiếp phụ thuộc vào trạng thái trước đó.
Vì vậy, trong ví dụ "gây tranh cãi" của chúng tôi, trạng thái của máy có hai phần ⟨ X, Y⟩. Tuyên bố chuyển đăng ký Y := 1
là viết tắt cho bốn lần chuyển trạng thái khác nhau:⟨ 0 , 0 ⟩ → ⟨ 0 , 1 ⟩, ⟨ 0 , 1 ⟩ → ⟨ 0 , 1 ⟩, ⟨ 1 , 0 ⟩ → ⟨ 1 , 1 ⟩và ⟨ 1 , 1 ⟩ → ⟨ 1 , 1 ⟩. Vì vậy, những gì đã xảy ra trong tuyên bố a
tác động rất nhiều đến trạng thái cuối cùng được tạo ra bởi tuyên bố b
. Trong trường hợp của chúng tôi, chúng tôi biết rằng trạng thái cuối cùng là⟨ 1 , 1 ⟩, và đó sẽ không phải là trường hợp đã a
không được thực hiện, hoặc đã a
là một đạo luật khác (như X := 0
).
Bài viết nói về việc một trong những máy trạng thái phân tán có thể biết bao nhiêu về trạng thái của các máy trạng thái khác, vì vậy rất có vấn đề gì xảy ra với mọi thứ trên từng máy.