Tôi đã cố gắng nắm bắt tính tuần tự và tính tuyến tính trong bối cảnh bộ nhớ giao dịch phần mềm. Tuy nhiên, tôi nghĩ rằng cả hai khái niệm có thể được áp dụng cho bộ nhớ giao dịch nói chung.
Tại thời điểm này, sau đây là sự hiểu biết của tôi về cả hai đối tượng.
Tính tuần tự
Tính tuần tự là một tài sản toàn cầu . Nó là một tài sản chính xác của các giao dịch. Với
k
các quy trình mà mỗi quy trình thực hiệnTk
đồng thời một giao dịch , tính tuần tự đảm bảo rằng có một chuỗi các giao dịch có thể được thực hiện theo trình tự (nghĩa là lần lượt từng giao dịch) sao cho kết quả cuối cùng giống như các giao dịch được thực hiện đồng thời. Vì vậy, có một hoán vị của danh sách(T1, T2,..,Tk)
xác định danh sách các giao dịch có thể được thực hiện tuần tự.
Khách sạn này có ý nghĩa hoàn hảo với tôi và tôi nghĩ định nghĩa của tôi là chính xác. Tôi dựa trên định nghĩa này trên văn bản trong "Nghệ thuật lập trình đa bộ xử lý" của Herlihy và Shavit.
Tính tuyến tính
Tính tuyến tính là một thuộc tính cục bộ của các đối tượng đồng thời (ví dụ, một thể hiện của một lớp được chia sẻ giữa các luồng). Tính tuyến tính đảm bảo rằng khi hai tiến trình, mỗi tiến trình thực hiện một chuỗi các lệnh gọi phương thức op (ví dụ
queue
hoặcdequeue
trên mộtQueue
cá thể) trên đối tượng được chia sẻ đó, có một thứ tự tuần tự của các cuộc gọi phương thức này không nhất thiết bảo toàn thứ tự chương trình (thứ tự mà lập trình viên đã viết chúng xuống), nhưng mỗi cuộc gọi phương thức dường như xảy ra ngay lập tức (nghĩa là gọi và trả lời trực tiếp theo nhau), trong khi duy trì kết quả của mỗi cuộc gọi phương thức riêng lẻ và do đó đối tượng của nó.
Câu hỏi
Theo một bài báo "On the correctness of TM"
của Guerraoui và Kapalka, đây là định nghĩa về tính tuyến tính trong bối cảnh của TM:
.. một thuộc tính an toàn được tạo ra để mô tả các đối tượng được chia sẻ, đôi khi được sử dụng như một tiêu chí chính xác cho TM. Trong thuật ngữ tuyến tính hóa thuật ngữ TM có nghĩa là bằng trực giác, mọi giao dịch sẽ xuất hiện như thể nó diễn ra tại một thời điểm duy nhất trong suốt thời gian tồn tại của nó.
Định nghĩa này có vẻ giống với tính tuần tự đối với tôi. Nhưng bài báo tiếp theo về định nghĩa tính tuần tự như sau:
.. là một trong những thuộc tính bắt buộc phổ biến nhất của giao dịch cơ sở dữ liệu. Nói một cách đơn giản, lịch sử H của các giao dịch (nghĩa là chuỗi tất cả các hoạt động được thực hiện bởi tất cả các giao dịch trong một lần thực hiện nhất định) có thể tuần tự hóa nếu tất cả các giao dịch được cam kết trong H phát hành cùng một hoạt động và nhận được các phản hồi giống như trong một lịch sử tuần tự S bao gồm chỉ các giao dịch đã cam kết trong H. (Lịch sử tuần tự là một giao dịch không có sự tương tranh giữa các giao dịch).
Tuy nhiên, định nghĩa này dường như ngụ ý rằng người ta có thể sắp xếp lại các báo cáo từ các giao dịch theo cách chúng được xen kẽ. (Tức là sắp xếp lại các câu lệnh sao cho không phải tất cả các câu lệnh của giao dịch đều T
xuất hiện theo thứ tự H
).
Tôi theo giả định rằng các định nghĩa cá nhân trên của tôi là chính xác. Câu hỏi thực tế của tôi là làm thế nào tính tuyến tính được xác định trong bối cảnh của bộ nhớ giao dịch. Thật vô nghĩa khi lý do về mỗi cuộc gọi phương thức (nghĩa là thao tác đọc / ghi) trong một giao dịch riêng lẻ vì điều này sẽ phá vỡ ngữ nghĩa của bộ nhớ giao dịch. Cũng không có nghĩa gì khi phải suy luận về hai giao dịch đồng thời xen kẽ của chúng, vì điều này rõ ràng sẽ phá vỡ tính tuần tự. Liệu tuyến tính có nghĩa là người ta có thể sắp xếp lại các hoạt động riêng lẻ trong một giao dịch? Nếu tính tuyến tính là một dạng tuần tự hóa mạnh hơn, thì việc các hoạt động được thực hiện trong một giao dịch đơn lẻ sẽ không thành vấn đề.
Tóm lại: Trước hết, sự hiểu biết của tôi về tính tuần tự và tính tuyến tính có đúng không? Tôi bối rối sau khi đọc rất nhiều định nghĩa trong các tác phẩm khác nhau. Và thứ hai, một bộ giao dịch có thể được tuyến tính hóa có nghĩa là gì?
Tôi cũng đã đọc câu hỏi được liên kết bên trong các ý kiến. Nhưng nó không giải thích cho tôi câu hỏi cụ thể của tôi.
Nguồn
- Câu hỏi SO về chủ đề (không phải về STM một cách rõ ràng) /programming/4179587/difference-b between-linearizability-and-serializability
Một lời giải thích không chính thức về hai http://www.bailis.org/blog/linearizability-versus-serializability/
Bài viết gốc về tính tuần tự http://citeseerx.ist.psu.edu/viewdoc/doad?doi=10.1.1.92.2690&rep=rep1&type=pdf
[1] Tài liệu gốc về tính ổn định tuyến tính http://www.cs.toronto.edu/~christoff/files/Linearizability-AC CorrnessConditionForConcienObjects.pdf