Tính tuyến tính và tính tuần tự trong bối cảnh bộ nhớ giao dịch phần mềm


7

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 kcác quy trình mà mỗi quy trình thực hiện Tkđồ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ụ queuehoặc dequeuetrên một Queuecá 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 Txuấ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


1
Tôi không thấy một câu hỏi. Dù câu hỏi của bạn là gì, có giúp được gì không? cs.stackexchange.com/questions/13441/who-need-linearizability/ Đổi
Logic lang thang

1
Nói tóm lại: tính tuần tự đòi hỏi các giao dịch phải là nguyên tử và xuất hiện như thể chúng được thực hiện theo một số thứ tự liên tiếp. Tính tuần tự làm cho không có giả định về các quy trình (luồng) và về các giao dịch được phát hành bởi các luồng nào. Tính tuyến tính bổ sung các ràng buộc mà mỗi luồng muốn xem các giao dịch mà nó đã phát hành hoàn thành theo thứ tự mà nó đã ban hành chúng.
Logic lang thang

Tôi đã đọc một vài cuốn sách và bài viết về chủ đề này và tôi sẽ cập nhật câu hỏi của mình cho phù hợp. Tôi cũng sẽ viết lại câu hỏi chính xác của tôi.
Barshe De Troyer

Logic lang thang: Nhưng điều đó có nghĩa là nếu mỗi quá trình chỉ phát hành một giao dịch duy nhất, tính tuyến tính được thực hiện một cách tầm thường? Hay bạn có nghĩa là thứ tự của giao dịch báo cáo của nó?
Barshe De Troyer

Câu trả lời:


4

Về định nghĩa của bạn:

Ý tưởng cơ bản về tính tuần tự ( ) là chính xác. Tuy nhiên, nó không phải ràng buộc với giả định của bạn rằng : Mọi quy trình có thể phát hành nhiều giao dịch như họ muốn.SReach (process) executes a transaction

Sự hiểu biết của bạn về tính tuyến tính ( ) là khá sai. Đầu tiên, đối với cả và , thứ tự chương trình giữa các giao dịch được phát hành bởi một quy trình duy nhất phải được giữ nguyên. Hơn nữa, bạn không thể sắp xếp lại bất kỳ hoạt động nào trong một giao dịch.LRSRLR

Giải thích về và :SRLR

Cả và đều yêu cầu tất cả các giao dịch hoạt động như thể chúng được thực hiện theo một thứ tự tuần tự , nghĩa là theo thứ tự tuần tự như vậy, tất cả các hoạt động đều trả về cùng một giá trị và trạng thái kết thúc của cơ sở dữ liệu giống như khi giao dịch được thực hiện đồng thời.SRLRHreads

Như đã đề cập trước đó, đối với cả và , thứ tự chương trình giữa các giao dịch được phát hành bởi một quy trình duy nhất phải được giữ nguyên.SRLR

Ở trên đưa ra sự khác biệt của . Tuy nhiên, tiếp tục đòi hỏi thứ tự tuần tự tuân theo cái gọi là thời gian thực (một phần) để giữa giao dịch: Nếu một giao dịch đầu trước khi một giao dịch bắt đầu , sau đó phải được đặt trước trong .SRLRHT1 T2 T1T2H

Lưu ý rằng không thực thi thứ tự thời gian thực. Điều đó có nghĩa là, mạnh hơn .SRLRSR

Về tài sản toàn cầu và tài sản địa phương:

Tôi không biết liệu có được gọi là tài sản toàn cầu hay không (vui lòng cho tôi một số tham khảo nếu bạn chắc chắn về điều này). Tuy nhiên, thuật ngữ "tài sản địa phương" có ý nghĩa đặc biệt.SR

Một tài sản của một hệ thống đồng thời được cho là địa phương nếu hệ thống như một đáp ứng toàn bộ bất cứ khi nào mỗi cá nhân đối tượng thỏa mãn .PPP

Được biết, là cục bộ [1] trong khi thì không.LRSR

THÊM: Giới thiệu về LR và Tính tuần tự nghiêm ngặt (SSR)

Như được đề cập bởi @Wandering Logic, LR ban đầu được xác định cho các đối tượng, không phải cho các giao dịch. Trích dẫn từ [1]

Tính tuyến tính có thể được xem như là một trường hợp đặc biệt của tính tuần tự nghiêm ngặt trong đó các giao dịch bị hạn chế bao gồm một thao tác duy nhất được áp dụng cho một đối tượng.

Tuy nhiên, ngày nay, nhiều tác giả đã sử dụng cho các giao dịch. Chẳng hạn, trong bài báo chuyên đề [2], Shavit và Touitou đã sử dụng thuật ngữ cho các giao dịch. Khi được sử dụng cho các giao dịch, giống như .LRLRLRSSR

Cảm ơn @Wandering Logic cho các cuộc thảo luận .


[1] Tính tuyến tính: Điều kiện chính xác cho các đối tượng đồng thời . Bởi M P. Herlihy và J M. Wing. Giao dịch ACM trên các ngôn ngữ và hệ thống lập trình, Tập. 12, số 3, tháng 7 năm 1990.

[2] Bộ nhớ giao dịch phần mềm . Bởi Nir Shavit và Dan Touitou. Phân phối. Tính toán. (1997) 10: 99-116.


1

Định nghĩa của bạn về tính tuần tự là chính xác, và tương đương với định nghĩa của Guerraoui và Kapalka mà bạn trích dẫn. Định nghĩa của Guerraoui và Kapalka, giống như của bạn, yêu cầu tất cả các hướng dẫn bên trong giao dịch xuất hiện để thực thi và thực hiện theo thứ tự. Đó là: kết quả cuối cùng như thể bạn đã thực hiện các giao dịch một cách nguyên tử và theo một số thứ tự liên tiếp. (Các thi thể được tối ưu hóa với một số đồng thời điên, song song, chương trình thực hiện out-of-trật tự, nhưng kết quả phải trông như thể bạn đã chạy tất cả các giao dịch trong một số thứ tự tuần tự và không có đan xen.)Tk

Tính tuần tự nói về hành vi của các giao dịch mà không xem xét các quy trình hoặc luồng phát hành các giao dịch đó. (Theo định nghĩa của bạn, bạn có chính xác nhiều quy trình như giao dịch và mỗi quy trình phát hành chính xác một giao dịch.)

Tính tuyến tính tính đến thực tế là mỗi luồng sẽ phát hành nhiều giao dịch và chúng tôi hy vọng các giao dịch đó sẽ được thực thi và hoàn thành theo thứ tự mà chúng tôi yêu cầu chúng phát hành.

Một hệ thống bộ nhớ giao dịch được tuần tự hóa nghiêm ngặt nếu kết quả cuối cùng của bất kỳ thực thi nào giống như khi các giao dịch của tất cả các quy trình được thực hiện nguyên tử theo một thứ tự tuần tự và các giao dịch được phát hành bởi mỗi quy trình riêng lẻ xuất hiện theo trình tự được chỉ định bởi chương trình của quá trình đó.

(Đây là định nghĩa về tính nhất quán tuần tự từ Lamport, "Cách tạo ra một máy tính đa bộ xử lý chính xác các chương trình đa xử lý", IEEE T Comp 28 (9): 690-691, 1979 , nhưng được sửa đổi để nói về các giao dịch thay vì hoạt động của bộ nhớ. Herlihy và Wing gọi tài sản này là tính tuần tự nghiêm ngặt .)

Bài báo gốc của Herlihy và Wing xác định tính tuyến tính là về các hoạt động trên các đối tượng, không phải giao dịch. Nhưng, sau đây kết nối hai khái niệm:

Tính tuyến tính có thể được xem như là một trường hợp đặc biệt của tính tuần tự nghiêm ngặt trong đó các giao dịch bị hạn chế bao gồm một thao tác duy nhất được áp dụng cho một đối tượng.

(Herlihy, Maurice; Wing, Jeanette: Tính tuyến tính: Điều kiện chính xác cho các đối tượng đồng thời . ACM T. Prog. Lang. Và Sys. 12 (3): 463-492, 1990.)


Dường như chúng ta có sự hiểu biết khác nhau về tính tuyến tính. Trong câu trả lời của bạn, bạn đã sử dụng thuật ngữ "nguyên tử" nhiều lần. Nó có nghĩa là "tất cả hay không" hay "tức thời"?
hengxin

Tôi đã bắt đầu một phòng trò chuyện để chúng ta có thể thảo luận về nó: chat.stackexchange.com/rooms/23142/ory
Logic lang thang
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.