Hăng đợi (Queue)

Một phần của tài liệu tiểu luận môn lập trình mạng nâng cao lập trình bằng các phương pháp phân tán để điều khiển bãi đổ xe (Trang 27 - 40)

V. BĂI TOÂN HỆ QUẢN LÝ BÊI ĐỖ XE

2. Hăng đợi (Queue)

Queue: là moơt danh sách tuyên tính mà phép theđm được tiên hành moơt đaău danh sách, phép lối bỏ được tiên hành tái đaău còn lái cụa danh sách. Queue còn gĩi là danh sách FIFO ( First In First Out )

ạ Lưu trữ queue baỉng mạng :

Có theơ dùng moơt mạng 1 chieău đeơ làm moơt câu trúc lưu trữ queuẹ Dùng 2 biên F, Q đeơ trỏ đên đaău lối bỏ, đaău boơ sung cụa queuẹ

Khai báo câu trúc Queue baỉng mạng F 1 Const A 2 n=100; D 3 Type R E 4 Queue:array [1..n] of element; F 5 Var 6 Q:Queue; 7 F,R:byte; Đầu Cuối loại bỏ Thím văo

b. Khởi táo queue : Procedure Khoitao; Begin F:=0; R:=0; End;

c. Theđm 1 phaăn tử vào queue :

Moêi laăn theđm vào 1 phaăn tử R taíng leđn 1 đơn vị. Tuy nhieđn, do tính chât cụa queue, queue có khạ naíng bị TRAØN giạ táo khi F >1, R = n

1 2 3 4 5 n ↑F ↑R

Procedure Insert1 (Var Q:Queue; var F,T:byte; X:element) ;

Var i:byte; Begin

If R-F+1= n then Writeln (‘TRAN’) Esle

If F = 0 then F:=1 Esle

If R= n then Begin

For i:= F to R do q[i-F+1]:= q[i]; R:= n-F+1; F:= 1; End; R:= R+1; q[R]:= X; End; 3. Gắn thời gian với câc sự kiện

Câc đồng hồ lơgic: gân một số cho mỗi sự kiện cục bộ nhưng khơng liín quan đến thời gian vật lý.

Hệ thống câc đồng hồ lơgic phải chính xâc :

Hay nĩi câch khâc:

∀ sự kiện a,b : nếu a b thì C(a) < C(b) Điu kin đồng ha Pi b Pj c Ci (a) < Cj (b) vă Cj (b) < Cj (c)

− Lăm thế năo chúng ta cĩ thể thực thi câc đồng hồ thỏa mên Điều kiện Đồng hồ?

Bng thut tôn đĩng du thi gian ca Lamport – cung cấp một tập hợp câc quy luật thực thi đơn giản.

4. Thuật tôn đĩng dấu thời gian của Lamport

Đồng hồ lơgic lă thuật tô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+1Pi 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) hoc 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 THUT TÔ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 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 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 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ờ đợị 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ềụ

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 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 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ự 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 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 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

1. Phđn tích băi tôn

Mơ hình mạng Khâch/ Chủ (Client/Server) lă một mạng trong đĩ cĩ một (hoặc nhiều) mây tính chủ (Server) đĩng vai trị quản lý đăng nhập (logon) văo mạng, chia sẻ tăi nguyín cho người sử dụng, … cịn câc mây khâch (client) lă những mây trạm lăm việc cĩ chức năng đăng nhập văo mạng vă sử dụng tăi nguyín trín mạng, ngoăi ra câc mây khâch cĩ thể chia sẻ tăi nguyín cho câc mây khâc trín mạng.

Để xđy dựng một hệ thống quản lý bêi đổ xe chúng ta sử dụng mơ hình mạng client/ server để thực hiện việc truyền câc thơng tin từ giữa câc mây trạm cho mây chủ hoặc mây chủ với mây chủ đảm bảo dữ liệu dùng chung (bêi xe) cho câc thao tâc tại câc cổng (xe văo/xe ra). Để đảm bảo gắn bĩ dữ liệu trong băi tôn quản lý bêi đổ xe sử dụng thuật tôn Lamport để căi đặt.

Với câc giả thiết

+Một trạm trong câc trạm đều cĩ thể liín lạc với câc trạm cịn lại trong hệ + Khơng cĩ lỗi truyền thơng tin vă khơng mất thơng điệp

+ Trật tự nhận trín trạm j của dêy câc thơng điệp cũng giống như chính tại trạm i lă giống với trật tự của nơi phât

+ Sự cố hay giân đoạn vật lý tại một trạm năo đĩ được phât hiện sẽ lập tức thơng bâo đến tất cả câc trạm cĩ ý định liín lạc với nĩ.

Câc răng buộc trong chương trình :

+ Câc bộ cung cấp bắt buộc phải thực hiện cùng một giải thuật

+ Câc bộ cung cấp đều nhận tất cả câc thơng điệp phât đi từ câc tiến trình

+ Câc thơng điệp phải được xử lý cùng một trật tự như nhau trong câc chương trình cung cấp

Trong chương trình sử dụng ngơn ngữ Visual basic 6.0 để căi đặt, với kỹ thuật lập trình Socket để truyền câc thơng tin giữa câc cổng với nhau hoặc giữa mây chủ với mây chủ.

2. Mơ tả hệ thống

Trong chương trình được căi đặt giả lập 3 Server vă 2 Client (Cổng), 3 Server sẽ trao đổi câc thơng điệp với nhau vă với câc Client để điều tiết cho xe văo vă xe ra theo cơ chế đồng bộ để gắn bĩ dữ liệu trín mỗi Server.

3. Demo chương trình

- Chương trình gồm cĩ câc Modul : SERVER1, SERVER2, SERVER3, CLIENT1, CLIENT2.

- Cấu trúc chương trình trong mỗi Server gồm câc phần:

+ Phần kết nối đến với Client vă câc Server.(dưới câc thủ tục Connect) + Gởi vă nhận câc thơng điệp qua câc cổng (dưới câc thủ tục Getserver, SendServer, GetClient, SendClient).

+ Tổ chức vă Sắp xếp câc thơng điệp trín mảng (Cấu trúc FIFO) (dưới câc thủ tục POP, PUSH, SORT)

+ Trao đổi giữa Server với Server, Server với Client. Cấu trúc chương trình trong mỗi Client gồm câc phần:

+ Phần kết nối đến với Client vă câc Server.(dưới câc thủ tục Connect) + Gởi vă nhận câc thơng điệp qua câc cổng (dưới câc thủ tục GetClient, SendClient).

+ Quản lý bêi xe (Xuly) - Kết quả chạy thử chương trình :

Cổng 2 Cổng 1 Cổng 3 Cổng 4 Cổng 5 Cổng 6 Cổng 7 Server 2 Server 1 Server 3

Trín Server : SERVER1 SERVER2

Trín Câc trm: Client 1

KT LUN

Hệ phđn tân lă lĩnh vực mới của cơng nghệ thơng tin, hệ phđn tân giải quyết phđn tân trong mơi trường xa nhau, khơng cĩ bộ nhớ chung, tất cả câc truy cập từ xa đều thực hiện bằng liín lạc giữa câc tiến trình. Phât triển hệ phđn tân lă chìa khĩa để giải quyết hiệu quả câc ứng dụng thương mại điện tử, chính phủ điện tử, thư viện điện tử số…

Tiểu luận năy được xđy dựng trín cơ sở học tập, tổng hợp lý thuyết từ câc giâo trình khâc nhau rút ra những đặc trưng cơ bản nhất của câc phương phâp phđn tân, câc thuật tôn đồng bộ, từ đĩ phđn tích thuật tôn đânh dấu thời gian trín hệ phđn tân của Lamport, kết quả cuối cùng vận dụng thuật tôn Lamport để xđy dựng chương trình đồng bộ bêi đậu xe với n=2 (Client) cổng, m=3 Khu vực (Server) (đđy lă một băi tôn cơ bản của đồng bộ câc tiến trình trong hệ phđn tân, giải quyết đồng bộ qua hợp lực – gửi thơng điệp vă đĩng dấu thời gian).

Do thời gian vă kiến thức cĩ hạn, nín chắc chắn cĩ nhiều hạn chế. Kính mong thầy Phĩ Giâo sư – Tiến sỹ Lí Văn Sơn vă câc anh (chị) Lớp cao học Cơng nghệ thơng tin khĩa V (2004-2007) bỏ qua nhiều thiếu sĩt của tiểu luận. Xin chđn thănh cảm ơn!

MC LC LI M ĐẦU CHƯƠNG 1 : CƠ SỞ LÝ THUYẾT... 0 Ị CÂC KHÂI NIỆM CƠ BẢN ... 1 1 Hệ phđn tân ... 1 2 Câc đặc điểm của hệ phđn tân ... 2

IỊ TIẾN TRÌNH TRONG HỆ PHĐN TÂN ... 3

IIỊ TẦM QUAN TRỌNG CỦA VIỆC ĐỒNG BỘ HÔ TIẾN TRÌNH TRONG HỆ PHĐN TÂN ... 4

IV. BĂI TÔN ĐỒNG BỘ HÔ TIẾN TRÌNH NHU CẦU TĂI NGUYÍN DÙNG CHUNG ... 4

V. GẮN BĨ DỮ LIỆU VĂ TẦM QUAN TRỌNG CỦA NĨ VỚI VẤN ĐỀ CUNG CẤP TĂI NGUYÍN DÙNG CHUNG TRONG HỆ PHĐN TÂN... 7

VỊTỔNG QUAN VỀ CHIẾN LƯỢC CUNG CẤP TRONG HỆ PHĐN TÂN ... 8

VIỊ SẮP XẾP BẰNG BỘ TUẦN TỰ... 9

1 Khâi niệm bộ tuần tự... 9

2 Bộ tuần tự di chuyển... 10

3. Bộ tuần tự trín kính lan truyền ... 13

VIIỊ KẾT LUẬN ... 15

CHƯƠNG II : SỰ GẮN BĨ DỮ LIỆU TRONG HỆ QUẢN LÝ BÊI ĐỖ XE ... 17

Ị ĐẶT VẤN ĐỀ... 17

IỊ TRẬT TỰ TỪNG PHẦN ... 17

IIỊ GIẢĐỊNH CÂC ĐIỀU KIỆN CHUNG... 19

IV. CÂCH GIẢI QUYẾT VẤN ĐỀĐỒNG BỘ HÔ ... 19

1. Đồng bộ hô bằng phương phâp trật tự từng phần ... 19

2. Đồng bộ hô theo một trật tự tổng quât chặt chẽ... 19

V. BĂI TÔN HỆ QUẢN LÝ BÊI ĐỖ XE ... 20

VỊ KẾT LUẬN ... 24

CHƯƠNG III : LẬP TRÌNH BẰNG PHƯƠNG PHÂP PHĐN TÂN ĐỂĐIỀU KHIỂN BÊI ĐỔ XẸ... 25

Ị CÂC KHÂI NIỆM ... 25

1 Câc qui tắc ... 25

2. Hăng đợi (Queue) ... 25

3. Gắn thời gian với câc sự kiện ... 26

Một phần của tài liệu tiểu luận môn lập trình mạng nâng cao lập trình bằng các phương pháp phân tán để điều khiển bãi đổ xe (Trang 27 - 40)

Tải bản đầy đủ (PDF)

(40 trang)