6.3.2 thuật toán để hẹn nhị phânCác thuật toán khác nhau đã được đề xuất để thực hiện nhị phân hẹn trong những năm 1980 [1, 16]. Các thuật toán này thường chia sẻ các tính năng sau đây. Ở mỗi quá trình, là một tập hợp các thẻ đại diện cho sự tương tác hiện tại được kích hoạt tại địa phương. Nếu nhiều tương tác được kích hoạt, một quá trình lựa chọn một trong số họ và cố gắng để "đồng bộ hóa" với quá trình đối tác. Vấn đề làm giảm đến một trong lập kế hoạch thư đáp ứng các khó khăn sau đây:• Lịch trực tuyến, atomically, và một cách phân phối, tức là, mã schedul-ing tại bất kỳ quá trình không biết quy tắc ứng dụng các quy trình khác.• Lịch trình một cách miễn phí bế tắc (tức là, miễn phí crown), như vậy mà cả cácngười gửi và người nhận được kích hoạt cho một thông báo khi nó được lên kế hoạch.• Lịch trình để đáp ứng tiến độ bất động sản (tức là, tìm thấy một kế hoạch trong vòng mộtbao bọc số bước) ngoài ra để tài sản an toàn (tức là, tính chính xác).Các tính năng bổ sung của một thuật toán tốt là: (i) đối xứng hoặc một số hình thức của sự công bằng, ví dụ, không ủng hộ quá trình cụ thể hơn những người khác trong quá trình lập kế hoạch, và (ii) hiệu quả, nghĩa là, bằng cách sử dụng thư càng ít càng tốt, và liên quan đến nhỏ nhất một thời gian trên không càng tốt. Chúng tôi bây giờ phác thảo một thuật toán đơn giản bởi Bagrodia [1] mà làm cho các fol - giả định lowing:1. nhận được lệnh mãi mãi được kích hoạt từ tất cả các quy trình.2. một lệnh gửi, một khi kích hoạt, vẫn được kích hoạt cho đến khi nó hoàn thành, tức là, nó là không thể gửi lệnh được tắt (theo bảo vệ của nó nhận được giả mạo) trước khi gửi được thực thi.3. To prevent deadlock, process identifiers are used to introduce asymmetry to break potential crowns that arise.4. Each process attempts to schedule only one send event at any time.The algorithm illustrates how crown-free message scheduling is achieved on-line.The message types used are: (i) M, (ii) ack(M), (iii) request(M), and (iv) permission(M). A process blocks when it knows that it can successfully syn- chronize the current message with the partner process. Each process maintains a queue that is processed in FIFO order only when the process is unblocked. When a process is blocked waiting for a particular message that it is currently synchronizing, any other message that arrives is queued up.Execution events in the synchronous execution are only the send of the mes- sage M and receive of the message M. The send and receive events for the other message types – ack(M), request(M), and permission(M) which are con- trol messages – are under the covers, and are not included in the synchronous execution. The messages request(M), ack(M), and permission(M) use M’s unique tag; the message M is not included in these messages. We use cap- ital SEND(M) and RECEIVE(M) to denote the primitives in the application execution, the lower case send and receive are used for the control messages.The algorithm to enforce synchronous order is given in Algorithm 6.1. The key rules to prevent cycles among the messages are summarized as follows and illustrated in Figure6.9:• To send to a lower priority process, messages M and ack(M) are involvedin that order. The sender issues send(M) and blocks until ack(M) arrives. Thus, when sending to a lower priority process, the sender blocks waiting for the partner process to synchronize and send an acknowledgement.• To send to a higher priority process, messages request(M), permission(M),and M are involved, in that order. The sender issues send(request(M)), does not block, and awaits permission. When permission(M) arrives, the sender issues send(M).
đang được dịch, vui lòng đợi..