V. BĂI TOÂN HỆ QUẢN LÝ BÊI ĐỖ XE
4. Thuật toân đ óng dấu thời gian của Lamport
Đồng hồ lôgic lă thuật toân cho phĩp đóng dấu cho từng sự kiện trong hệ phđn tân để với mỗi cặp sự kiện A vă B ta có: nếu A có trước B (A → B) thì đồng hồ lôgic của A nhỏ hơn đồng hồ lôgic của B.
Câc quy luật:
+ Quy luật 1: Mỗi tiến trình Pi gia tăng Ci thím một trị số giữa hai sự kiện thănh công
+ Quy luật 2: Mỗi tiến trình Pi đóng dấu thời gian cho câc thông điệp m gửi đi,
Tm = Ci (a)
+ Quy luật 3: Khi nhận được thông điệp m, tiến trình Pj đặt lại giâ trị Cj:
Cj = max (Cj, Tm) + 1
− Trật tự sự kiện toăn bộ: giả sử lă câc đồng hồ thỏa mên Điều kiện Đồng hồ, ta định nghĩa quan hệ sau:
với câc sự kiện a trín Pi vă b trín Pj
• Pi Ci a Ci+1 • Pi Ci a Ci+1 (m, Tm = Ci (a) ) • Pj Cj Cj = max (Cj, Tm) + 1 (m, Tm) a a ⇒ b nếu Ci (a) < Cj (b) hoặc Ci (a) = Cj (b) vă i < j
− Trật tự từng phần với trật tự toăn bộ
+ Chú ý rằng quan hệ “có trước”chỉ định nghĩa trật tự từng phần của câc sự kiện. Điều năy có nghĩa lă trong khi một số sự kiện được sắp xếp trật tự bằng quan hệ
“có trước”, vẫn còn một số sự kiện không được sắp xếp theo thứ tự
+ Thỉnh thoảng chúng ta cần đến trật tự toăn bộ của câc sự kiện.
+ Trật tự toăn bộ sắp xếp thứ tự cho từng sự kiện để tất cả câc trạm đồng ý với trật tự năỵ
+ Lamport định nghĩa trật tự toăn bộ dựa trín quan hệ “có trước”, nó gân cho mỗi trạm một số duy nhất vă sau đó sử dụng số năy để lập trật tự cho câc sự kiện không được sắp xếp thứ tự bằng quan hệ “có trước”.
+ Trật tự nhất quân của câc sự kiện phât:
+ Định dạng thông điệp từ Pi : (m, Tm, i)
+ Tại tiến trình Pi, một sự kiện phât (m, Tm, j) từ Pjđược gọi lă có trước sự kiện
phât (n, Tn, k) từ Pk nếu : Nếu Tm < Tn, hoặc Nếu Tm = Tn vă j < k + Chú ý, đđy lă trật tự ⇒ P1 P2 P3 P4 0 0 0 0 (a,1,1) (b,1,4) 3 2 2 3 2 2
IỊ CÂC THUẬT TOÂN
− 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 toâ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 theọ
+ 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 toâ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ờ đợị 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 toâ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ềụ
Thuật toân Lamport - Hăng đợi phđn tân
− Khâi quât:
Thuật toâ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 hoăn toăn trong đó câc tiến trình liín lạc thông qua câc kính FIFO tin cậỵ 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.
− Thuật toâ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ự toă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ự toă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 hoă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ăỵ 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 đợị
− Thuật toâ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 toâ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 ti < tj < timestamp(qj [i])
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.
IIỊ CĂI ĐẶT CHƯƠNG TRÌNH