CÁC THUẬT TỐN

Một phần của tài liệu Tiểu luận môn Lập trình mạngLập tình bằng các phương pháp phân tán để điều khiển bãi đỗ xe (Trang 30)

− Tổng quát

+ Một trạm bất kỳ trong hệ thống cĩ thể: (1) yêu cầu miền găng CS,

(2) thi hành CS, hoặc

(3) khơng làm gì cảđối với CS (thi hành trong đoạn khơng phải miền găng.)

+ Các thuật tốn nên thỏa mãn các yêu cầu:

• Khơng bế tắc

• Khơng đĩi

• Cơng bằng (các yêu cầu được thi hành theo thứ tự chúng được tạo)

• Dung thứ lỗi (cĩ thể vẫn hoạt động khi cĩ sự cố tại một hoặc nhiều trạm)

− Một số thơng số:

+ Số thơng điệp yêu cầu miền găng.

+ sd (trễ đồng bộ): thời gian giữa thời điểm kết thúc một miền găng và bắt đầu miền găng tiếp theo.

+ Thời gian đáp ứng, được đo từ khi thơng điệp yêu cầu miền găng được gửi đi cho đên khi miền găng được thi hành.

+ Thơng lượng hệ thống: tỷ lệ mà hệ thống thi hành các miền găng.

+ Thơng lượng = 1/(sd + thời gian thi hành trung bình E của một miền găng).

− Hoạt động với tải

+ Với tải thấp, một số miền găng được thi hành. Khi một tiến trình muốn đi vào miền găng, nĩ thường sẽ được cấp quyền ngay lập tức sau khi thi hành thuật tốn loại trừ tương hỗ. Đối với trường hợp hợp tải cao hoặc nặng, luơn luơn cĩ các yêu cầu miền găng phải chờ đợi. Ngay khi một trạm kết thúc miền găng của mình, nĩ sẽ cĩ thể cĩ gắng khởi tạo miền găng khác.

+ Nếu gọi E là thời gian trung bình thi hành một miền găng, và T là độ trễ thơng điệp trung bình, thì trong hầu hết các thuật tốn, thời gian cho trường hợp tốt nhất cĩ cận trên là (2T + E). Điều này cho phép trao đổi thơng điệp vịng trịn cộng với sự thi hành miền găng. Thời gian cho trường hợp xấu nhất là rất nhiều.

Thut tốn Lamport - Hàng đợi phân tán

− Khái quát:

Thuật tốn này được Lamport (1978) đưa ra, nĩ sử dụng cơ chế đĩng dấu thời gian cho việc đồng bộ các đồng hồ lơgic.

− Các giảđịnh:

+ Chúng ra giả định mơ hình mạng kết nối hồn tồn trong đĩ các tiến trình liên lạc thơng qua các kênh FIFO tin cậy. Tức là, các thơng điệp khơng thể sắp xếp lại theo trật tự khác.

+ Các giả định được thực thi một cách dễ dàng ở tầng giao vận.

− Các kiểu thơng điệp:

+ (REQ, Ci, i) : Một yêu cầu cho việc truy cập vào miền găng CS của tiến trình Pi. Yêu cầu này được phát đi cho tất các các tiến trình khác.

+ (ACQ, Ci, i) : Hồi âm từ tiến trình Pi cho tiến trình Pj khi Pi nhận được yêu cầu từ Pj.

+ (REL, Ci, i) : Thơng điệp giải phĩng từ Pi thơng báo cho biết nĩ đã rời khỏi CS. Thơng điệp này được gửi cho tất cả các tiến trình khác.

− Các biến tiến trình:

+ Ci : Đồng hồ cục bộ của Pi, khởi tạo từ 0.

+ qi : Hàng đợi [0 … n-1] chứa các thơng điệp. (adsbygoogle = window.adsbygoogle || []).push({});

− Thuật tốn:

+ Khi một tiến trình tại trạm Si muốn thi hành đoạn găng, nĩ sẽ gửi thơng điệp REQ cĩ đánh dấu thời gian cho tất cả các trạm trong hệ thống kể cĩ trạm Si.

+ Mỗi trạm, Si, duy trì một hàng đợi chứa các thơng điệp yêu cầu được sắp xếp theo trật tự các dấu thời gian; các đồng hồ logic và quan hệ trật tự tồn bộ được sử dụng để gắn các dấu thời gian.

+ Khi một trạm nhận được yêu cầu, nĩ sẽ đưa thơng điệp đĩ vào hàng đợi yêu cầu của nĩ theo thứ tự dấu thời gian và gửi một thơng điệp trả lời ACQ. Nếu cần, quan hệ trật tự tồn bộ được sử dụng để phá vỡ các sự ràng buộc.

+ Ý tưởng chung là một tiến trình khơng thể thi hành đoạn găng của nĩ cho đến khi nĩ nhận được trả lời từ tất cả các trạm khác. Các thơng điệp trả lời sẽ “flush

out” các yêu cầu bất kỳ từ các tiến trình khác, để chúng ta biết hàng đợi được cập nhật.

+ Đặc biệt hơn nữa, một trạm thi hành miền găng của nĩ khi: 1) Nhận được thơng điệp trả lời từ tất cả các trạm cịn lại và

2) Yêu cầu REQ của nĩ là ở trên đỉnh của hàng đợi cục bộ của nĩ.

+ Khi một trạm hồn thành miền găng của nĩ, nĩ sẽ gửi khuyến nghị giải phĩng

REL đến tất cả các trạm. Yêu cầu của nĩ được loại khỏi tất cả các hàng đợi tại thời điểm này. Nếu các trạm khác đang chờ để thi hành miền găng của chúng, một trong các trạm đĩ bây giờ cĩ thể bắt đầu thực hiện miền găng của mình.

+ Hoạt động: 3(N-1) thơng điệp cần thiết cho mỗi miền găng được thi hành. (N-1) thơng điệp REQ, (N-1) thơng điệp ACQ và (N-1) thơng điệp REL.

+ Độ trễ đồng bộ: T (trong đĩ T thời gian trung bình truyền thơng điệp). Khi nhận được thơng điệp giải phĩng, tiến trình tiếp theo cĩ thể bắt đầu thi hành.

+ Loại trừ tương hỗ là đạt được: Các dấu thời gian là duy nhất, vì vậy tất cả các hàng đợi sẽ giữ các yêu cầu trong cùng một thứ tự. Chỉ một tiến trình duy nhất sẽ nằm ở đỉnh của các hàng đợi. − Thuật tốn yêu cầu của Pi : trong đĩ – timestamp( (m, c, i ) ) = (c, i) (c, i) < (d, j) nếu c < d hoặc ( c = d và i < j ) − Thuật tốn nhận thơng điệp của Pi : ci ci + 1 ;

broadcast (REQ, ci, i) ;

qi [i] (REQ, ci, i) ;

wait ∀∀∀∀ j = i timestamp(qi[i]) < timestamp(qi[j]) ; < CSi >

ci ci + 1 ;

broadcast (REL, ci, i) ;

Ví d 1: on receipt of (REQ, k, j) begin ci max(ci , k) + 1 ; qi [j] (REQ, k, j) ; send(ACQ, ci, i) to j ; end ; of (REL, k, j) begin ci max(ci , k) + 1 ; qi [j] (REL, k, j) ; end ; of (ACQ, k, j) begin ci max(ci , k) + 1 ;

if type of (qi [j]) = REQ then

qi [j] (ACQ, k, j) ; end ; C2 = 1 q2 = [(REL, 0, 1), (REQ, 1, 2)] C1 = 3 q1 = [(REQ, 3, 1), (REQ, 1, 2)] C1 = 5 q1 = [(REQ, 3(1), 1), (REQ, 1, 2)] C2 = 3 q2 = [(ACQ, 2, 1), (REQ, 1, 2)] C1 = 2 q1 = [(REL, 0, 1), (REQ, 1, 2)] C2 = 4 q2 = [(REQ, 3(1), 1), (REQ, 1, 2)] (REQ, 1, 2) (ACQ, 2, 1) (REQ, 3, 1) (ACQ, 4, 2) (REQ, 1, 1)

Ví d 2:

− Sự chính xác:

+ Loại trừ tương hỗ: Giả sử rằng Pi và Pj đang ở trong CSi và CSj tại cùng một thời điểm. Đồng thời, giả sử thời gian lơgic ti của yêu cầu mới nhất của Pi nhỏ hơn tj, thời gian lơgic của yêu cầu mới nhất của Pj.

C2 = 3 q2 = [(REQ, 1, 1), (REQ, 1, 2)] C1 = 2 q1 = [(REQ, 1, 1), (REQ, 1, 2)] (REQ, 1, 2) (ACQ, 2, 1) (REQ, 1, 1) C2 = 1 q2 = [(REL, 0, 1), (REQ, 1, 2)] C1 = 1 q1 = [(REQ, 1, 1), (REL, 0, 2)] C2 = 2 q2 = [(REQ, 1, 1), (REQ, 1, 2)] (ACQ, 2, 2) C1 = 3 q2 = [(REQ, 1, 1), (REQ, 1, 2)] CSi CSj

(REQ, ti) (REQ, tj)

ti < tj

Bằng phương pháp FIFO, (REQ, ti) phải đã ở trong hàng đợi qj trước CSj. Vì vậy, khơng cĩ thơng điệp ACQ đã đi vào hàng đợi qj và timestamp(qj [i]) = ti. Mâu

thuẫn.

+ Khơng đĩi: Các yêu cầu được cấp quyền dựa trên cơ sở của trật tự dấu thời gian và các tiến trình gửi các thơng điệp REL. (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Tiểu luận môn Lập trình mạngLập tình bằng các phương pháp phân tán để điều khiển bãi đỗ xe (Trang 30)