objects of type bid. Various views are ordered by the ≤ relation, defi dịch - objects of type bid. Various views are ordered by the ≤ relation, defi Việt làm thế nào để nói

objects of type bid. Various views

objects of type bid. Various views are ordered by the ≤ relation, defined as
follows:
View ≤ Viewr if and only if for each process Pi such that View[k].P = Pi, we also have that for some kr, Viewr [kr ].P = Pi and View[k].attempt ≤ Viewr [kr ].attempt.
If Viewr •≤ View (line 1n), then View is updated using Viewr (line 1o) by:
1. including all process entries from Viewr that are missing in View (i.e., Viewr [kr ].P is not equal to View[k].P, for all k), so such entries Viewr [kr ] are added to View.
2. replacing older entries for the same process with more recent ones, (i.e., if Viewr [kr ].P = Pi = View[k].P and Viewr [kr ].attempt > View[k].attempt, replace View[k] by Viewr [kr ]).

Any new information learnt is broadcast to all processes (lines 1c, 1v), and a process uses a counter count to track the number of other processes that have broadcast the exact same view as the latest view of this process (line 1k). If the view in a received message contains information that is not in the current view (line 1n), the current view is updated (line 1o). Note that this is similar to taking the pairwise maximum of vector clocks. However, a crucial difference is that the ordering of the components is not predetermined, as each process may order the other processes differently. When count reaches
n − f (line 1l), no more messages may arrive because the other f processes
may have failed. Such a view for which n − f affirmations were received is
said be a stable view.
Once a process determines a view to be stable (lines 1m, 1q), the process checks if there is a conflict with its choice of a new name and the choices of other processes (lines 1r, 1s). If there is no conflict, it finalizes its choice of the new name (lines 1t, 1u) and goes to the loop (lines 1G-1K) wherein it helps other processes to gain stable views and finalize their new name


(local variables)
struct bid:
integer P; // old name of process
integer x; // new name being bid by the process
integer attempt; // the number of bids so far, including this current
// bid
boolean decide; // whether new name x is finalized
list of bid: View[1... n] ←− ((i, 0, 0, false)); // initialize list with an
// entry for Pi
integer count; // number of copies of the latest local view, received from
// others
boolean: restart, stable, no_choose; // loop control variables



(1) A process Pi, 1 ≤ i ≤ n, participates in renaming:
(1a) repeat
(1b) restart ←− false;
(1c) broadcast message(View); (1d) count ←− 1;
(1e) repeat
(1f) no_choose ←− 0;
(1g) repeat
(1h) await message(Viewr );
(1i) stable ←− false;
(1j) if Viewr = View then
(1k) count ←− count + 1;
(1l) if count ≥ n − f then
(1m) stable ←− true;
(1n) else if Viewr •≤ View then
(1o) update View using Viewr by taking latest information for each process;
(1p) restart ←− true;
(1q) until (stable = true or restart = true); // n − f copies
// received, or new view obtained
(1r) if restart = false then // View[1] has
// information about Pi
(1s) if View[1].x •= 0 and View[1].x •= View[j].x
for any j then
(1t)
(1u) decide View[1].x; View[1].decide ←− true;
(1v) broadcast message(View);
(1w) else
(1x) let r be the rank of Pi in UNDECIDED(View);
(1y) if r ≤ f + 1 then
(1z) View[1].x ←− FREE(View)(r), the rth
free name in View;
(1A) View[1].attempt ←− View[1].attempt + 1;
(1B) restart ←− 1;
(1C) else
(1D) no_choose ←− 1;
(1E) until no_choose = 0;
(1F) until restart = 0;
(1G) repeat
(1H) on receiving message(Viewr )
(1I) update View with Viewr if necessary;
(1J) broadcast message(View); (1K) until false.
Algorithm 14.7 Asynchronous renaming in the message-passing model [1]. Code shown is for process Pi , 1 ≤ i ≤ n.



choices. If there is a conflict (lines 1w–1F), a new name must be chosen once again and competed with other processes. There are two cases here, depending on the rank of the process among all the processes that have
not yet finalized their new names (i.e., among all processes except those for which View[j].decide = 1). Let the set of such processes be denoted as
UNDECIDED(View). Clearly, as the new names of such processes are not finalized, the rank is determined based on the old names (line 1x).
• If the rank r is less than f + 2 (line 1y), the process chooses the
rth free name from FREE(View), the “free” names from M that have not been finalized by the processes (which have their decide compo- nent set to 1 in View). The process has to restart the bidding process, by going back to step (1a), broadcasting its updated view (line 1c), and so on.
• If the rank r exceeds f + 1 (lines 1C,ID), the process goes to line (1e)
and then waits for some other process to send its updated views. The logic here is that at least one correct process will have a rank up to f + 1 among
UNDECIDED, and will pick and stabilize its new name before processes with rank greater than f + 1 begin to compete for a new name.
Some definitions and properties are now given:
• P1 An algorithm is locally proper if for each run and each process, the sequence of the View list is totally ordered by ≤. Algorithm 14.7 is seen
to be locally proper, from lines 1j–1o.
• P2 A view is stable with respect to a process if the process has received n − f − 1 messages containing identical information in the accompanying view. (Along with its own identical view, there are n − f affirmations.) A
view is stable in a run if it is stable with respect to some process.
• P3 If an algorithm is locally proper, then in any run, the set of stable
views is totally ordered.
This is seen as follows. Let views View and Viewr be stable with respect to processes i and j, respectively. Then n − f processes (say, set Ai) agree on View, and n − f processes (say, set Aj ) agree on Viewr.
If View and Viewr are not totally ordered, Ai ∩ Aj = ∅. Disjointness implies size of Aj is at most n − (n − f) = f . Thus, n − f ≤ f , implying, n ≤ 2f . This contradicts the assumption that n ≥ 2f + 1, hence, at least one process must have sent both View and Viewr. So View and Viewr must
be totally ordered.
• P4 As Algorithm 14.7 is locally proper, its set of stable views is totally
ordered.

Correctness
Safety
A process finalizes a new name once it has a stable view. Pi and Pj cannot finalize the same name because the stable views are totally ordered. Without



loss of generality, assume that Pi’s stable view ≤ Pj ’s stable view when
they respectively finalize their names. Then Pj ’s stable view must include the name finalized by Pi, and Pj will not pick the same name.

Liveness/termination
Observe that when a process picks a new name (line 1z), there are at most
n − 1 names used by others, so f + 1 names are available. To show that all
processes eventually finalize a name, let FREE(View) be the set of free names
from M as per View. Let DECIDED be the set of processes that finalize their new names (i.e., for which bid.decide is true). Then N − DECIDED is
UNDECIDED, the set of processes which cannot finalize a new name. We now argue using contradiction that UNDECIDED is empty.
• Consider the execution after the time that all processes in DECIDED have decided their new names, and at least one bid sent by every other correct process has been received by each correct process, implying that
|View|≥ n − f . As no correct process blocks, this point in time will occur.
Let Viewmin be the smallest stable view after this point in time. By P4, all the views are totally ordered and hence Viewmin is uniquely defined. Let the set of free names at this time be denoted as FREE(Viewmin) and the set of undecided processes at this time be denoted as UNDECIDED(Viewmin).
• Among the processes in UNDECIDED(Viewmin), consider the process
Pmin with the smallest rank, based on the old names. The rank is at most
f + 1, and hence the process will select a new name (lines 1y, 1z, 1A). As
rank is unique, no other process in UNDECIDED(Viewmin) will now or henceforth choose this name chosen by Pmin.
• Pmin updates and broadcasts its view. When other processes receive this
view, they update their local views with this new information, and will also broadcast their updated views:
• either in the loop (lines 1G–1K); or
• via execution of lines (1C–1D), then lines (1n–1o), and then (1b–1c).
Pmin and all other correct processes receive at least n − f confirmations, making the view containing Pmin’s choice of a new name a stable view. Hence, Pmin can decide a new name, leading to a contradiction that UNDECIDED(Viewmin) is empty.

Complexity
Each time a process bids with a new name for itself, a broadcast is sent (n − 1
messages) and each recipient of the broadcast, seeing a new view, also does a broadcast (n − 1 messages). This leads to O(n2) messages per new name
bid. Let the final stable view be denoted by Viewfinal. The total number of

messages is Gn
=

View

final

.attempti × n2. Exercise 14.9 asks you to analyze

the bound on the number of attempts made by the processes.



14.5.7 Reliable broadcast
Although reliable terminating broadcast (RTB) is not solvable under failures (recall that we showed a reduction from consensus to that problem in Section14.5.2), a weaker version of RTB, namely reliable broadcast, in which the termination condition is dropped, is solvable under crash failures. The protocol is shown in Algorithm 14.8. This protocol uses up to O(n2) messages to broadcast message M and works in the face of any number of failures. The key difference between RTB and reliable broadcast is that RTB requires eventual delivery of some message – even if the sender fails just when about to broadcast. In this case, a null message must get sent, whereas this null message need not be sent under reliable broadcast. Thus, RTB requires the recognition of the failure (as described above) as opposed to
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
các đối tượng của loại giá thầu. Số lần xem khác nhau được sắp xếp bởi các mối quan hệ ≤, định nghĩa làsau:Xem ≤ Viewr nếu và chỉ nếu cho mỗi quá trình Pi như vậy mà xem [k]. P = Pi, chúng tôi cũng đã cho một số kr, Viewr [kr]. P = Pi và xem [k] .attempt ≤ Viewr [kr] .attempt.Nếu Viewr •≤ xem (dòng 1n), sau đó xem được cập nhật bằng cách sử dụng Viewr (dòng 1o) bởi:1. bao gồm tất cả quá trình mục nhập từ Viewr bị thiếu trong chế độ xem (ví dụ, Viewr [kr]. P không phải là tương đương để xem [k]. P, cho tất cả k), do đó, các mục Viewr [kr] được thêm vào để xem.2. thay thế Cu hơn mục cho quá trình cùng với những người mới hơn, (ví dụ, nếu Viewr [kr]. P = Pi = View [k]. P và Viewr [kr] .attempt > xem [k] .attempt, thay thế View [k] bởi Viewr [kr]).Bất kỳ thông tin mới học được phát sóng để tất cả các quá trình (dòng 1c, 1v), và một quá trình sử dụng một số lượng truy cập để theo dõi số lượng các quy trình khác đã phát sóng quan điểm chính xác tương tự như giao diện mới nhất của quá trình này (dòng 1k). Nếu chế độ xem trong một tin nhắn đã nhận có chứa thông tin đó không phải là trong chế độ xem hiện tại (dòng 1n), quan điểm hiện nay Cập Nhật (dòng 1o). Lưu ý rằng điều này là tương tự như tham gia tối đa cử của véc tơ đồng hồ. Tuy nhiên, một sự khác biệt rất quan trọng là rằng đặt hàng của các thành phần không định trước, như mỗi quá trình có thể yêu cầu các quá trình khác một cách khác nhau. Khi đếm đạtn − f (dòng 1l), không có thêm các thư có thể đến vì f khác xử lýcó thể đã thất bại. Xem mà n − f khẳng định đã nhận đượcnói là một cái nhìn ổn định.Một khi một quá trình xác định một cái nhìn để ổn định (dòng 1m, 1q), quá trình kiểm tra nếu có là một cuộc xung đột với lựa chọn của một tên mới và các lựa chọn của các quá trình khác (1R cùng dòng, 1s). Nếu không có không có xung đột, nó finalizes của sự lựa chọn của tên mới (dòng 1t, 1u) và đi vào vòng lặp (dòng 1G - 1K) mà trong đó nó giúp các quy trình khác để đạt được ổn định quan điểm và hoàn thành tên mới của họ(địa phương biến)struct giá:số nguyên P; tên cũ của quá trìnhsố nguyên x; tên mới được đặt giá thầu theo quá trìnhnỗ lực số nguyên; số lượng giá thầu cho đến nay, bao gồm cả điều này hiện naygiá thầuboolean quyết định; cho dù tên mới x được hoàn thànhdanh sách giá: xem [1... n] ←− ((i, 0, 0, sai)); khởi tạo các danh sách với mộtmục nhập cho Pisố nguyên tính; số lượng các bản sao của địa phương xem mới nhất, nhận được từnhững người khácboolean: khởi động lại, ổn định, no_choose; vòng lặp kiểm soát biến (1) A xử lý Pi, 1 ≤ tôi ≤ n, tham gia vào việc đổi tên:lặp lại (1a)(1b) khởi động lại ←− sai;(1c) phát sóng message(View); (1d) tính ←− 1;lặp lại (1e)(1f) no_choose ←− 0;lặp lại (1g)(1h) đang chờ đợi thông báo (Viewr);(1i) ổn định ←− sai;(1j) nếu Viewr = xem sau đó(1k) đếm ←− số + 1;(1l) nếu tính ≥ n − f sau đóthật sự ổn định ←− (1m);(1n) khác nếu Viewr •≤ xem sau đóCập Nhật (1o) xem bằng cách sử dụng Viewr bằng cách tham gia các thông tin mới nhất cho mỗi quá trình;(1 p) khởi động lại ←− đúng;(1q) cho đến khi (ổn định = true hoặc khởi động lại = true); n − f bản saođã nhận, hoặc mới xem thu được(1r) nếu khởi động lại = false sau đó / / xem [1] cóthông tin về Pi(1s) nếu xem [1] .x • = 0 và xem [1] .x • = View [j] .xcho bất kỳ j sau đó(1t)(1u) quyết định xem [1] .x; Xem [1] .quyết ←− đúng;phát sóng (1v) message(View);(1w) khác (1 x) để r là hàm số π trong UNDECIDED(View);(1y) nếu r ≤ f + 1 sau đó(1z) View [1] .x ←− FREE(View)(r), rth miễn phí tên trong xem;(1A) xem [1] .attempt ←− xem [1] .attempt + 1;(1B) khởi động lại ←− 1;(1C) khác (1D) no_choose ←− 1;(1E) cho đến khi no_choose = 0; (1F) cho đến khi khởi động lại = 0; Lặp lại (1G) (1H) ngày nhận được thông báo (Viewr)Cập Nhật (1I) xem với Viewr nếu cần thiết;Phát sóng (1J) message(View); (1K) cho đến khi sai.Thuật toán 14.7 không đồng bộ đổi tên trong mô hình đi qua tin nhắn [1]. Mã Hiển thị là cho quá trình Pi, 1 ≤ tôi ≤ n. sự lựa chọn. Nếu có xung đột (dòng 1w-1F), một tên mới phải được chọn một lần nữa và cạnh tranh với các quá trình khác. Có hai trường hợp ở đây, tùy thuộc vào cấp bậc trình trong số tất cả các quá trình cóChưa được hoàn thành tên mới (ví dụ, trong số các quá trình tất cả ngoại trừ những người mà .quyết View [j] = 1). Hãy để tập hợp các quá trình như vậy được biểu hiện nhưUNDECIDED(View). Rõ ràng, như tên mới của các quá trình chưa được hoàn thành, xếp hạng được xác định dựa trên các tên cũ (dòng 1 x).• Nếu r xếp hạng là ít hơn so với f + 2 (dòng 1y), quá trình lựa chọn cácRth miễn phí tên từ FREE(View), "miễn phí" tên từ M mà chưa được hoàn thành bởi các quá trình (mà có của họ quyết định dùng-nent đặt thành 1 trong xem). Quá trình có để khởi động lại quá trình đấu thầu, bằng cách đi trở lại để bước (1a), phát thanh truyền của nó xem Cập Nhật (dòng 1c), và như vậy.• Nếu r xếp hạng vượt quá f + 1 (dòng 1C, ID), quá trình này đi vào dòng (1e)và sau đó chờ đợi đối với một số quá trình khác gửi lượt xem Cập Nhật của nó. Ở đây logic là ít nhất một quá trình chính xác sẽ có một thứ hạng lên đến f + 1 trong sốChưa quyết định, và sẽ chọn và ổn định của nó tên mới trước khi tiến trình có cấp bậc cao hơn so với f + 1 bắt đầu cạnh tranh cho một tên mới.Một số định nghĩa và tính chất bây giờ được đưa ra:• P1 một thuật toán là tại địa phương thích hợp nếu cho mỗi chạy và mỗi quá trình, trình tự xem danh sách hoàn toàn đã ra lệnh bởi ≤. thuật toán 14.7 nhìn thấyđể tại địa phương thích hợp, từ dòng 1j-1o.• P2 một lần xem là ổn định đối với một quá trình, nếu quá trình này đã nhận được n − f − 1 tin nhắn có chứa thông tin giống hệt nhau trong giao diện đi kèm. (Cùng với riêng của mình xem giống hệt nhau, có là n − f affirmations.) Axem là ổn định trong một chạy nếu nó là ổn định đối với một số quá trình.• P3 nếu một thuật toán là tại địa phương thích hợp, sau đó, trong bất kỳ chạy, các thiết lập của ổn địnhSố lần xem hoàn toàn đã ra lệnh.Điều này được thấy như sau. Hãy xem xem và Viewr được ổn định đối với quá trình tôi và j, tương ứng. Sau đó quá trình f n − (nói, đặt Ai) đồng ý về xem, và quá trình f n − (nói, đặt Aj) đồng ý về Viewr.Nếu xem và Viewr không hoàn toàn đặt hàng, Ai ∩ Aj = ∅. Disjointness ngụ ý kích thước của Aj là tối đa n − (n − f) = f. Vì vậy, n − f ≤ f, ngụ ý, n ≤ 2f. Điều này mâu thuẫn với giả định rằng 2f n ≥ + 1, do đó, ít nhất một quá trình phải có gửi xem và Viewr. Để xem và Viewr phảiđược đặt hàng hoàn toàn.• P4 là thuật toán 14.7 là thích hợp tại địa phương, thiết lập mình quan điểm ổn định là hoàn toànđã ra lệnh.Đúng đắnAn toànMột quá trình finalizes tên mới khi nó có một cái nhìn ổn định. Pi và Pj không thể hoàn thành cùng tên vì những quan điểm ổn định là hoàn toàn đặt hàng. Nếu không có mất quát, giả sử rằng của Pi ổn định xem ≤ Pj của ổn định xem khihọ lần lượt hoàn thành tên của họ. Sau đó xem ổn định của Pj phải bao gồm tên hoàn thành bởi Pi, và Pj sẽ không chọn cùng tên.Liveness/chấm dứtQuan sát rằng khi một quá trình chọn một tên mới (dòng 1z), có rất nhiều nhấtn − 1 tên được sử dụng bởi những người khác, do đó f + 1 tên có sẵn. Để cho thấy rằng tất cảquá trình cuối cùng hoàn thành một tên, cho FREE(View) là đặt tên miễn phítừ M theo xem. Hãy để DECIDED là tập hợp các quá trình hoàn thành tên mới (ví dụ, để bid.decide mà là đúng). Sau đó N − DECIDED làChưa quyết định, tập hợp các quá trình mà không thể hoàn thành một tên mới. Chúng tôi bây giờ cho sử dụng mâu thuẫn chưa quyết định là sản phẩm nào.• Xem xét thực hiện sau khi thời gian mà tất cả các quy trình trong DECIDED đã quyết định tên mới của họ, và ít nhất một giá thầu gửi qua mỗi khác quá trình chính xác đã được nhận bởi mỗi quá trình chính xác, ngụ ý rằng| View|≥ n − f. Chính xác như không có quá trình khối, thời điểm này trong thời gian sẽ xảy ra.Để Viewmin là ổn định xem nhỏ nhất sau thời điểm này trong thời gian. Bởi P4, tất cả các quan điểm được hoàn toàn đặt hàng và do đó Viewmin duy nhất được xác định. Cho phép các thiết lập của tên miễn phí tại thời điểm này được biểu hiện như FREE(Viewmin) và tập hợp các quá trình chưa quyết định tại thời điểm này được biểu thị là UNDECIDED(Viewmin).• Một trong các quá trình trong UNDECIDED(Viewmin), xem xét quá trìnhPmin xếp hạng nhỏ nhất, dựa trên các tên cũ. Cấp bậc là tối đaf + 1, và do đó quá trình sẽ chọn một tên mới (dòng 1y, 1z, 1A). NhưXếp hạng là duy nhất, không có quá trình khác trong UNDECIDED(Viewmin) sẽ bây giờ hoặc từ đó lựa chọn tên này được chọn bởi Pmin.• Pmin Cập Nhật và chương trình phát sóng của nó xem. Khi quá trình khác nhận được điều nàyxem, họ cập nhật quan điểm địa phương của họ với thông tin mới này, và cũng sẽ phát sóng quan điểm Cập Nhật của họ:• hoặc là trong vòng lặp (đường 1G-1K); hoặc• thông qua thực hiện của dòng (1C-1D), thì dòng (1n-1o), và sau đó (1b-1c).Pmin và tất cả các quy trình chính xác nhận được ít nhất n − f giấy tờ xác nhận, làm cho giao diện có Pmin của sự lựa chọn của một tên mới một cái nhìn ổn định. Do đó, Pmin có thể quyết định một tên mới, dẫn đến một mâu thuẫn UNDECIDED(Viewmin) là sản phẩm nào.Phức tạpMỗi khi một quá trình giá thầu với một tên mới cho chính nó, một phát sóng được gửi (n − 1tin nhắn) và mỗi người nhận của chương trình, nhìn thấy một cái nhìn mới, cũng không một phát sóng (n − 1 thư). Điều này dẫn đến bài viết O(n2) mỗi tên mớigiá thầu. Để ổn định xem cuối cùng được ký hiệu là Viewfinal. Tổng số tin nhắn là Gn= Xem cuối cùng .attempti × n2. Tập thể dục 14.9 yêu cầu bạn để phân tích ràng buộc về số lượng các nỗ lực được thực hiện bởi các quá trình. 14.5.7 đáng tin cậy phát sóngMặc dù đáng tin cậy chấm dứt phát sóng (trong) không phải là khả năng giải quyết dưới thất bại (nhớ lại rằng chúng tôi đã cho thấy một sự giảm từ sự đồng thuận cho rằng vấn đề trong Section14.5.2), một phiên bản yếu hơn của trong, cụ thể là đáng tin cậy phát sóng, trong đó chấm dứt tình trạng bị rơi, là khả năng giải quyết dưới tai nạn thất bại. Giao thức được thể hiện trong thuật toán 14.8. Giao thức này sử dụng O(n2) thư để phát sóng tin nhắn M và hoạt động khi đối mặt với bất kỳ số nào của thất bại. Sự khác biệt chính giữa trong và đáng tin cậy phát sóng là trong đòi hỏi các giao hàng cuối cùng của một số thư-thậm chí nếu người gửi không chỉ khi về để phát sóng. Trong trường hợp này, một thông báo không phải nhận được gửi, trong khi thư này không không cần được gửi dưới đáng tin cậy phát sóng. Vì vậy, trong đòi hỏi sự công nhận của sự thất bại (như mô tả ở trên) như trái ngược với
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
đối tượng chào mua loại. Quan điểm khác nhau được sắp xếp theo các mối quan hệ ≤, được xác định như
sau:
Xem ≤ Viewr nếu và chỉ nếu với mỗi tiến trình Pi như vậy mà Xem [k] .P = Pi, chúng tôi cũng có một số cho rằng kr, Viewr [kr] .P = Pi và Xem [k] .attempt ≤ Viewr [kr] .attempt.
Nếu Viewr • ≤ Xem (dòng 1N), sau đó Xem được cập nhật bằng cách sử dụng Viewr (dòng 1o) bằng cách:
1. bao gồm tất cả các mục trình từ Viewr đang thiếu trong View (tức là, Viewr [kr] .P không bằng Xem [k] .P, với mọi k), vì vậy mục như vậy Viewr [kr] được thêm vào View.
2. thay thế mục cũ hơn cho quá trình tương tự với những người gần đây hơn, (tức là, nếu Viewr [kr] .P = Pi = Xem [k] .P và Viewr [kr] .attempt> Xem [k] .attempt, thay thế Xem [k ] bởi Viewr [kr]). Bất kỳ thông tin mới học được phát sóng đến tất cả các quá trình (đường 1c, 1v), và một quá trình sử dụng một số lượng truy cập để theo dõi số lượng các quá trình khác đã phát sóng cùng nhìn chính xác như quan điểm mới nhất của quá trình này (dòng 1k). Nếu xem trong một tin nhắn nhận được có chứa thông tin đó không phải là quan điểm hiện tại (dòng 1N), quan điểm hiện tại được cập nhật (dòng 1o). Lưu ý rằng điều này là tương tự như việc tối đa cặp đồng hồ vector. Tuy nhiên, một sự khác biệt quan trọng là sự sắp đặt của thành phần không được xác định trước, vì mỗi quá trình có thể đặt hàng các quá trình khác một cách khác nhau. Khi đếm đạt n - f (dòng 1 lít), tin nhắn không thể đến vì các quá trình f khác có thể đã bị thất bại. Quan điểm như vậy mà n - khẳng định f đã nhận được. Nói là một điểm ổn định Khi một quá trình xác định một điểm là ổn định (đường 1m, 1Q), kiểm tra quá trình nếu có một cuộc xung đột với sự lựa chọn của mình một cái tên mới và sự lựa chọn của các quá trình khác (dòng 1R, 1s). Nếu không có xung đột, nó Chốt sự chọn lựa tên mới (dòng 1T, 1u) và đi vào vòng lặp (đường 1G-1K) trong đó nó giúp quá trình khác để biết được quan điểm ổn định và hoàn thiện tên mới của họ (biến cục bộ) struct thầu: số nguyên P; // Tên cũ của quá trình số nguyên x; // Tên mới được đặt giá thầu theo quá trình nỗ lực integer; // Số hồ sơ dự thầu cho đến nay, bao gồm cả điều này hiện nay giá // Boolean quyết định; // Dù mới tên x được hoàn tất danh sách dự thầu: Xem [1 ... n] ← - ((i, 0, 0, false)); // Khởi tạo danh sách với một entry // cho Pi nguyên đếm; // Số lượng bản sao của các địa phương xem mới nhất, nhận được từ // khác boolean: khởi động lại, ổn định, no_choose; // Các biến điều khiển vòng lặp (1) Một quá trình Pi, 1 ≤ i ≤ n, tham gia vào việc đổi tên: (1a) lặp lại (1b) restart ← - false; (1c) thông báo phát sóng (View); (1d) count ← - 1; (1e) lặp lại (1f) no_choose ← - 0; (1g) lặp lại (1h) đang chờ đợi tin nhắn (Viewr); (1i) ổn định ← - false; (1J) nếu Viewr = Xem sau đó ( 1k) count ← - đếm + 1; (1 lít) nếu đếm ≥ n - f sau đó (1m) ổn định ← - true; (1N) khác nếu Viewr • ≤ Xem sau đó (1o) cập nhật Xem bằng Viewr bằng cách lấy thông tin mới nhất cho mỗi quá trình; (1p) restart ← - true; (1Q) cho đến (ổn định = true hoặc khởi động lại = true); // N - bản sao f // nhận, hoặc xem mới thu được (1r) nếu khởi động lại = false thì // Xem [1] có // thông tin về Pi (1s) nếu Xem [1] .x • = 0 và Xem [ 1] .x • = Xem [j] .x cho bất kỳ j đó (1t) (1u) quyết định xem [1] .X; Xem [1] .decide ← - true; tin nhắn (1V) phát sóng (View); (1w) khác (1x) cho r được thứ hạng của Pi trong chưa quyết định (View); (1n) nếu r ≤ f + 1 sau đó ( 1Z) Xem [1] .x ← - miễn phí (Xem) (r), các rth tên miễn phí tại Xem; (1A) Xem [1] .attempt ← - Xem [1] .attempt + 1; (1B) restart ← - 1; (1C) khác (1D) no_choose ← - 1; (1E) cho đến khi no_choose = 0; (1F) cho đến khi khởi động lại = 0; (1G) lặp lại (1H) về việc nhận tin nhắn (Viewr) (1I) update View với Viewr nếu cần thiết; (1J) tin nhắn quảng bá (View); (1K) cho đến khi sai. Algorithm 14,7 Asynchronous đổi tên trong mô hình thông điệp đi qua [1]. Mã đưa ra là cho quá trình Pi, 1 ≤ i ≤ n. Sự lựa chọn. Nếu có một cuộc xung đột (dòng 1w-1F), một tên mới phải được lựa chọn một lần nữa và cạnh tranh với các quá trình khác. Có hai trường hợp ở đây, tùy thuộc vào cấp bậc của quá trình này trong số tất cả các tiến trình đã chưa hoàn thành tên mới của họ (tức là, trong số tất cả các quá trình ngoại trừ những người mà Xem [j] .decide = 1). Hãy tập hợp các quá trình như vậy được ký hiệu là chưa quyết định (View). Rõ ràng, như là tên mới của các quá trình đó không được hoàn thành, các xếp hạng được xác định dựa trên các tên miền cũ (dòng 1x). • Nếu các bậc r nhỏ hơn f + 2 (dòng 1n), quá trình chọn tên miễn phí rth từ miễn phí (View), những cái tên "miễn phí" từ M chưa được hoàn thiện bởi các quá trình (trong đó có quyết định của họ nent compo- thiết lập để 1 trong View). Quá trình này đã khởi động lại quá trình đấu thầu, bằng cách quay lại bước (1a), phát sóng xem được cập nhật (dòng 1c) của nó, và như vậy. • Nếu cấp bậc r vượt f + 1 (đường 1C, ID), quá trình đi để dòng (1e) và sau đó chờ đợi cho một số quá trình khác để gửi tin được cập nhật của nó. Logic ở đây là ít nhất một quá trình chính xác sẽ có một thứ hạng lên đến f + 1 số quyết định, và sẽ nhận và ổn định tên mới của nó trước khi quá trình với thứ tự lớn hơn f + 1 bắt đầu cạnh tranh cho một tên mới. Một số định nghĩa và tính giờ được đưa ra: • P1 Một thuật toán là địa phương thích hợp nếu cho mỗi lần chạy và mỗi quy trình, trình tự của các Xem danh sách là hoàn toàn theo lệnh của ≤. Algorithm 14.7 được xem là thích hợp tại địa phương, từ đường 1J-1o. P2 • Một quan điểm là ổn định đối với một quá trình với quá trình đã nhận được n - f - 1 tin nhắn chứa thông tin giống hệt nhau trong quan điểm đi kèm. (Cùng với quan điểm giống nhau của riêng mình, có n - khẳng định f.) Một xem là ổn định trong một chạy nếu nó là ổn định đối với một số quá trình với. • P3 Nếu một thuật toán là phù hợp tại địa phương, sau đó trong bất kỳ chạy, các bộ ổn định quan điểm là hoàn toàn ra lệnh. Đây được xem như sau. Hãy xem Xem và Viewr được ổn định đối với quá trình i và j với, tương ứng. Sau đó n - các quá trình f (nói, đặt Ái) thống nhất View, và n - các quá trình f (nói, đặt Aj) thống nhất Viewr. Nếu Xem và Viewr không hoàn toàn ra lệnh, Ai ∩ Aj = ∅. Disjointness ngụ ý kích thước của Aj là tại hầu hết các n - (n - f) = f. Như vậy, n - f ≤ f, ngụ ý, n ≤ 2f. Điều này mâu thuẫn với giả định rằng n ≥ 2f + 1, do đó, ít nhất là một quá trình phải đã gửi cả Xem và Viewr. Vì vậy, Xem và Viewr phải được hoàn toàn ra lệnh. • P4 Như Algorithm 14,7 là thích hợp tại địa phương, đề ra các quan điểm ổn định là hoàn toàn ra lệnh. Tính đúng đắn An toàn Một quá trình Chốt một tên mới một khi nó có một cái nhìn ổn định. Pi và Pj không thể hoàn thành cùng tên bởi vì các quan điểm ổn định được hoàn toàn ra lệnh. Mà không mất tính tổng quát, giả sử rằng quan điểm ổn định của Pi ≤ xem ổn định Pj 's khi họ lần lượt hoàn thành tên của họ. Sau đó xem ổn định Pj 's phải có tên hoàn thiện bởi Pi và Pj sẽ không chọn cùng tên. Liveness / chấm dứt quan sát rằng khi một quá trình chọn một tên mới (dòng 1Z), có ít nhất n - 1 tên dùng những người khác, do đó f + 1 tên có sẵn. Để chứng minh rằng tất cả các quá trình hoàn thiện cuối cùng một tên, hãy miễn phí (Xem) là tập hợp của các tên miễn phí từ M như mỗi lần xem. Hãy quyết định là tập hợp của các quá trình đó hoàn thành tên mới của họ (ví dụ, mà bid.decide là true). Sau đó, N - QUYẾT ĐỊNH là chưa quyết định, các bộ quy trình mà không thể hoàn thành một cái tên mới. Bây giờ chúng ta tranh luận bằng mâu thuẫn đó chưa quyết định là rỗng. • Xem xét việc thực hiện sau thời gian mà tất cả các quá trình trong QUYẾT đã quyết định đặt tên mới của mình, đồng nhất một giá thầu gửi bởi mọi quy trình chính xác khác đã được nhận bởi mỗi quá trình chính xác, ngụ ý rằng | Xem | ≥ n - f. Khi không có các khối đúng quy trình, thời điểm này sẽ xảy ra. Hãy Viewmin là quan điểm ổn định nhỏ nhất sau thời điểm này trong thời gian. By P4, tất cả các quan điểm được hoàn toàn ra lệnh và do đó Viewmin được xác định duy nhất. Hãy tập hợp các tên miễn phí vào thời điểm này được biểu thị như là miễn phí (Viewmin) và thiết lập các quy trình chưa được quyết định tại thời điểm này được ký hiệu là chưa quyết định (Viewmin). • Trong số các quá trình trong chưa quyết định (Viewmin), xem xét quá trình Pmin với nhỏ nhất cấp bậc, dựa vào tên tuổi. Mức xếp hạng tối đa là f + 1, và do đó quá trình sẽ chọn một tên mới (dòng 1n, 1Z, 1A). Như rank là duy nhất, không có quá trình khác trong chưa quyết định (Viewmin) sẽ ngay bây giờ hoặc từ đó chọn tên này được chọn bởi Pmin. • Cập nhật Pmin và chương trình phát sóng nhìn của nó. Khi quá trình khác nhận được điều này xem, họ cập nhật quan điểm địa phương của họ với thông tin mới này, và cũng sẽ phát sóng quan điểm của họ được cập nhật: • hoặc trong các vòng lặp (đường 1G-1K); hoặc • thông qua thực hiện đường (1C-1D), sau đó dòng (1N-1o), và sau đó (1b-1c). Pmin và tất cả các quá trình chính xác khác nhận được ít nhất n - xác nhận f, làm cho các điểm chứa sự lựa chọn của một Pmin của tên mới một điểm ổn định. Do đó, Pmin có thể quyết định một cái tên mới, dẫn đến một mâu thuẫn mà chưa quyết định (Viewmin) là trống rỗng. Complexity Mỗi lần một quá trình hồ sơ dự thầu với một tên mới cho bản thân, một chương trình phát sóng được gửi (n - 1 tin nhắn), và mỗi người nhận khi phát sóng , nhìn thấy một cái nhìn mới, cũng làm một phát sóng (n - 1 tin nhắn). Điều này dẫn đến O (n2) tin nhắn mỗi tên mới thầu. Hãy xem ổn định cuối cùng được ký hiệu bằng Viewfinal. Tổng số tin nhắn là Gn = Xem thức .attempti × n2. Tập thể dục 14,9 hỏi bạn phân tích các ràng buộc về số lượng các nỗ lực được thực hiện theo các quy trình. 14.5.7 phát sóng đáng tin cậy Mặc dù phát sóng terminating đáng tin cậy (RTB) là không thể giải quyết được thất bại dưới (nhớ lại rằng chúng tôi cho thấy nếu giảm từ sự đồng thuận cho rằng vấn đề trong Section14. 5.2), một phiên bản yếu hơn của RTB, cụ thể là phát sóng đáng tin cậy, trong đó các điều kiện chấm dứt được giảm xuống, là giải được dưới những thất bại tai nạn. Các giao thức được thể hiện trong thuật toán 14.8. Giao thức này sử dụng lên đến O (n2) thông điệp để phát sóng thông điệp M và hoạt động trong khuôn mặt của bất kỳ số thất bại. Sự khác biệt chính giữa RTB và phát sóng đáng tin cậy là RTB yêu cầu giao hàng cuối cùng của một số tin nhắn - thậm chí nếu người gửi không chỉ khi sắp phát sóng. Trong trường hợp này, một thông điệp thực phải được gửi đi, trong khi nhắn null này không cần phải được gửi dưới phát sóng đáng tin cậy. Như vậy, RTB đòi hỏi sự công nhận của sự thất bại (như mô tả ở trên) như trái ngược với







































































































































đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2024 I Love Translation. All reserved.

E-mail: