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ạngLập tình bằng các phương pháp phân tán để điều khiển bãi đỗ xe (Trang 26)

I. CÁC KHÁI NIỆM

2.Hàng đợi (Queue)

Queue: là một danh sách tuyến tính mà phép thêm được tiến hành một đầu danh sách, phép loại bỏ được tiến hành tại đầu còn lại của danh sách. Queue còn gọi là danh sách FIFO ( First In First Out )

a. Lưu trữ queue bằng mảng :

Có thể dùng một mảng 1 chiều để làm một cấu trúc lưu trữ queue. Dùng 2 biến F, Q để trỏ đến đầu loại bỏ, đầu bổ sung của queue.

Khai báo cấu trúc Queue bằ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. Thêm 1 phần tử vào queue :

Mỗi lần thêm vào 1 phần tử R tăng lên 1 đơn vị. Tuy nhiên, do tính chất của queue, queue có khả nă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 tồ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ự tồ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ự (adsbygoogle = window.adsbygoogle || []).push({});

+ Thỉnh thoảng chúng ta cần đến trật tự tồn bộ của các sự kiện.

+ Trật tự tồ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ày.

+ Lamport định nghĩa trật tự tồ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

II. 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 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: (adsbygoogle = window.adsbygoogle || []).push({});

+ 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.

− 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) (adsbygoogle = window.adsbygoogle || []).push({});

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.

III. 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, ngồ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) (adsbygoogle = window.adsbygoogle || []).push({});

+ 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 I. 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

II. TIẾN TRÌNH TRONG HỆ PHÂN TÁN ... 3

III. 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

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

VII. 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

VIII. KẾT LUẬN ... 15

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

I. ĐẶT VẤN ĐỀ... 17 II. TRẬT TỰ TỪNG PHẦN ... 17 III. 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 VI. 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 ĐỔ XE... 25

I. 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

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

(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 26)