1. Trang chủ
  2. » Luận Văn - Báo Cáo

tiểu luận môn lập trình mạng viết chương trình đảm bảo chống trùng vé tàu hỏa khi phân tán chức năng bán vé cho các ga trong hệ thống đường sắt

24 1,1K 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 1,58 MB

Nội dung

II Đồng bộ tiến trình Trong hệ tin học phân tán, đồng bộ hóa tiến trình được hiểu như là quá trình tạonên sự hoạt động nhịp nhàng, ăn khớp với nhau giữa tất cả các đối tượng tham gia có

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA

- -ĐỀ TÀI TIỂU LUẬN

Tên đề tài:

VIẾT CHƯƠNG TRÌNH ĐẢM BẢO CHỐNG

TRÙNG VÉ TÀU HỎA KHI PHÂN TÁN CHỨC

NĂNG BÁN VÉ CHO CÁC GA TRONG HỆ

Giáo viên hướng dẫn: PGS.TS Lê Văn Sơn

Học viên thực hiện : Phan Văn Lĩnh Lớp : Khoa học máy tính – K16

Đà Nẵng, 4-2012

Trang 2

PHẦN I: LÝ THUYẾT ĐỒNG BỘ HÓA CÁC TIẾN TRÌNH

I Đặt vấn đề

Trong tất cả các hệ thống tin học, người ta cần nghiên cứu các công cụ đủ mạnh

và hiệu quả để có thể đồng bộ hóa các tiến trình Trong hệ phân tán việc đồng bộhóa chỉ đặt ra duy nhất vấn đề thiết lập một trật tự giữa các sự kiện Giữa các trạmkhác nhau, trật tự đó chỉ có thể thực hiện được thông qua việc trao đổi các thôngđiệp với nhau Trong hệ thống tập trung mỗi một loại tài nguyên của hệ thống đượcquản lý một chương trình cung cấp duy nhất, sau này ta gọi tắt là bộ cung cấp tàinguyên Chương trình này tiếp nhận tất cả các yêu cầu, khuyến nghị giải phóng vàsắp xếp chúng trong một hàng đợi xử lý theo kiểu loại trừ tương hổ và theo một trật

tự nhất định của hàng đợi này Trên hệ phân tán chương trình cung cấp nằm trênmột trạm và các tiến trình đề nghị lại ở các trạm khác nhau; các yêu cầu và khuyếnnghị giải phóng được truyền cho chương trình cung cấp thông qua hình thức thôngđiệp chuyển trên các kênh của hệ thống viễn thông Chính vì vậy, nhu cầu sắp xếpcác yêu cầu này theo một trật tự nhất định nào đó luôn luôn được đặt ra Một sựhoạt động gắn bó của các chương trình cung cấp phân tán quản lý trên cùng một tậphợp các tài nguyên chỉ đạt được nếu tuân thủ các quy tắc sau:

 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ươngtrình cung cấp

Quy tắc sau cùng nhấn mạnh đến sự thiết yếu phải có một trật tự duy nhất trên tậphợp các thông điệp của hệ

II Đồng bộ tiến trình

Trong hệ tin học phân tán, đồng bộ hóa tiến trình được hiểu như là quá trình tạonên sự hoạt động nhịp nhàng, ăn khớp với nhau giữa tất cả các đối tượng tham gia

có yêu cầu chia sẻ tài nguyên dùng chung

 Điều kiện chủ yếu của việc đồng bộ hóa tiến trình trong hệ phân tán là:

 Các tiến trình của hệ phải được phát triển trong cùng một chu kỳ thực hiệnvới các thời gian thực hiện lệnh khác nhau do khả năng xử lý của các bộ xử

lý (hoặc vi xử lý) thành phần khác nhau

Trang 3

 Các tiến trình phát triển trong các hệ thống thành phần khác nhau, nằm ở cácđịa điểm khác nhau và được nối nhau qua đường truyền trong điều kiện códiễn ra sự cố kỹ thuật.

 Không sử dụng bộ nhớ và đồng hồ chung

Xuất phát từ yêu cầu và điều kiện kỹ thuật cụ thể nêu trên, rõ ràng người ta cần phảinghiên cứu các giải pháp đủ mạnh và hiệu quả để có thể đồng bộ hóa các tiến trình như

là đối tượng chủ yếu tham gia tạo nên sự hoạt động của hệ không đồng bộ

Tính cấp thiết của vấn đề đồng bộ hóa tiến trình thể hiện ở hai điểm mấu chốt sau đây:

 Nhìn chung, các tiến trình kể cả các tiến trình xuất phát từ các ứng dụng độclập muốn truy cập vào các tài nguyên với số lượng vốn rất hạn chế hay truycập vào thông tin dùng chung cùng một lúc làm phát sinh vấn đề truy cậptương tranh Truy cập tương tranh là nguyên nhân chính của các xung độtgiữa các tiến trình khi truy cập vào tài nguyên dùng chung

 Các tiến trình của cùng một hệ hoạt động theo kiểu hợp lực để giải quyết cácchức năng xác định nhằm cho kết quả nhanh và hiệu quả nhất, điều này chophép tăng hiệu năng sử dụng thiết bị và hiệu quả hoạt động của chương trình

Vì vậy, tương tranh và hợp lực là nguyên nhân chính của sự tác động tương hổđược lập trình giữa các tiến trình nhằm cho phép chúng tham gia vào các hành độngchung Đây là quá trình phức tạp

Sự tương tranh và hợp lực giữa các tiến trình đòi hỏi phải có trao đổi thông tin qualại với nhau Trong các hệ thống tập trung, điều đó được thực hiện nhờ thuật toánloại trừ tương hổ thông qua các biến cùng tác động trong một vùng nhớ hoặc mộtbiến chung là đủ Trong hệ phân tán, các thông tin cần trao đổi phải thông qua cáckênh thuộc hệ thống viễn thông dưới dạng các thông điệp

Trong hệ máy tính đơn thì vùng găng, loại trừ tương hổ, và những vấn đề đồng

bộ hóa thường được giải quyết bằng cách dùng phương pháp cờ hiệu và quan sát.Nhưng những phương pháp này không thể dùng trong hệ phân tán Ngay cả một vấn

đề đơn giản là một sự kiện A xảy ra trước hay sau sự kiện B thì cũng là điều cần suynghĩ cẫn thận

III Đồng hồ logic

Chúng ta thì quan tâm đến thời gian tương đối giữa các sự kiện (thứ tự củachúng), định nghĩa mối quan hệ, xảy ra trước ():

 Trên cùng một máy: ab, nếu time(a)<time(b)

 Nếu H1 gửi m đến H2: send(m)  receive(m)

 Nếu ab và bc thì ac

Trang 4

Thuật toán Lamport sử dụng mối quan hệ này để cung cấp một thứ tự sự kiện riêng.

IV Các thuật toán đồng bộ hóa tiến trình giải quyết tương tranh

IV.1 Đồng bộ hóa đồng hồ logic

Chúng ta nói rằng eix xảy ra trước eix+1

Quan hệ xảy ra trước  có tính bắc cầu: eii  eij với mọi i<j

 Các sự kiện xảy ra giữa hai tiến trình đồng thời nói chung không quan hệ,ngoại trừ hai tiến trình đó có liên quan theo quan hệ như sau:

Đối với mỗi thông điệp m trao đổi giữa hai tiến trình Pi và Pj, chúng ta có eix =send(m), ejy = receive(m) và eix  ejy

 Các sự kiện trong một sự xử lý phân tán là được sắp xếp riêng biệt

 Các sự kiện cục bộ là tổng thể được sắp đặt

 Các sự kiện nguyên nhân là tổng thể được sắp đặt

 Tất cả các sự kiện khác là không được sắp đặt

Cho bất kỳ hai sự kiện e1 và e2 trong một sự xử lý phân tán, có thể là:

(i) e1  e2

(ii) e2  e1

(iii) e1 || e2 (e1 và e2 là đồng thời)

Ví dụ:

Những sự kiện nào là quan hệ  ?

Những sự kiện nào là đồng thời ?

Trang 5

IV.1.2 Những điều kiện đồng hồ

 Trong một hệ thống các đồng hồ logic, các tiến trình riêng biệt có một đồng

hồ logic mà được áp dụng theo một giao thức

 Mỗi sự kiện được gán một timestamp (thời gian đánh dấu) trong cách thức

mà thõa mãn điều kiện bền chặt đồng hồ: nếu e1  e2 thì C(e1) < C(e2)

Trong đó: C(ei) là timestamp (thời gian đánh dấu) được gán cho sự kiện ei

 Nếu giao thức thõa mãn các điều kiện theo sau nữa, thì đồng hồ được nóirằng bền chặt mạnh: nếu C(e1) < C(e2) thì e1  e2

IV.1.3 Sự cài đặt đồng hồ logic

R1:Tất cả các máy (tiến trình - Pi) sử dụng một bộ đếm (đồng hồ - Ci) với giá trị

khởi tạo là 0

R2: Trước khi xử lý một sự kiện (gửi, nhận hoặc ngắt), Pi xử lý như sau: tăng

bộ đếm và gán cho mỗi sự kiện, như là timestamp (thời gian đánh dấu) của nó

Ci = Ci + d (d>0, thường d=1)

R3: Mỗi thông điệp mang giá trị đồng hồ của người gửi nó tại thời điểm gửi.

Khi Pi nhận một thông điệp với timestamp (thời gian đánh dấu) Cmsg, nó xử lýnhư sau:

Trang 6

Hình 1.1.Các thời gian đánh dấu Lamport (Lamport timestamps)

Hình 1.2.Ví dụ thời gian logic Lamport IV.1.4 Cải tiến đồng hồ logic bởi Vectơ thời gian

 Phát triển bởi một số người độc lập

 Với thời gian logic lamport:

e trước f  timestamp(e) < timestamp(f), nhưng timestamp(e) < timestamp(f) khôngthể  e trước f

 Vector thời gian logic đảm bảo điều này:

 Mỗi tiến trình Pi của n tiến trình thành phần duy trì một vector (mảng)nguyên có kích thước n:

 vti[1, ,n], trong đó vti[i] là đồng hồ logic cục bộ của tiến trình Pi, khởi tạotất cả bằng 0

6 8

7

Các sự kiện logic đồng thời

Trang 7

 vti[j] trình bày sự hiểu biết gần đây nhất của Pi về thời gian cục bộ của Pj.

 Giao thức vector đồng hồ:

Tại tiến trình Pi:

 Trước khi xử lý một sự kiện, Pi cập nhật thời gian cục bộ logic của nó như sau:

vti[i] = vti[i] + d (d>0, thường d=1) Và gán vector với sự kiện

 Mỗi tiến trình gửi một thông điệp m mang giá trị vector đồng hồ (vectortimestamp) của nó tại thời điểm gửi

 Trên việc nhận một thông điệp như vậy (m, vt), Pi cập nhật vector đồng hồlogic của nó như sau:

1.vti[k] = max(vti[k] , vt [k]) Với mọi 1 <= k <=n

2.vti[i] = vti[i] + d (d > 0, thường d=1)

Ví dụ:

Hình 1.3.Vector timestamp

Trang 8

Hình 1.4.Vector thời gian logic

 Trong đó sự so sánh vector thực hiện như sau:

Cho hai vector V1 và V2, cùng kích thước n:

V1 < V2, nếu V1[i] <= V2[i] với i = 1, 2, , n Và tồn tại số k, 0 < k < n+1 mà V1[k] < V2[k]

Vector đồng hồ logic

Thông điệpVector timestamp

Trang 9

 Bởi vì vector đồng hồ là bền chặt mạnh, chúng ta có thể sử dụng chúng đểquyết định hoặc là hai sự kiện theo quan hệ nguyên nhân bởi việc so sánhvector timestamp (thời gian đánh dấu) của chúng, sử dụng sự so sánh vector.

IV.2 Thuật toán Lamport tổng quát

(a) Sơ đồ giải thuật Lamport:

(b) Giải thích:

Gọi n là số trạm trong hệ ; REQ(H m,i) là một yêu cầu (request) vào đoạn găng tại

trạm i, trong đó m là tên của thông điệp và Hm là nhãn thời gian của thông điệp (còn

gọi là dấu của thông điệp); ACK(H k,j) là một thông điệp trả lời của trạm j cho trạm

i khi j nhận được một REQ(…) của i trong đó Hk là dấu của thông điệp trả lời;

RELEAS(Hw,i) nếu yêu cầu ra khỏi đoạn găng tại trạm i trong đó w là tên của

thông điệp yêu cầu và Hw là dấu thông điệp

Tiến trình P i muốn vào đoạn găng:

 Pi gởi thông điệp yêu cầu vào m {REQ(Hm,i)} cho tất cả các tiến trình kháctrong mạng Pj (j=1…n-1) số trạm trong hệ

 Pj nhận được thông điệp này thì đưa nó vào hàng đợi cục bộ của trạm và trảlời cho Pi {ACK(Hk,j)}

 Tại Pi khi nhận được thông điệp trả lời thì nó sẽ xem xét yêu cầu của nó vàtuỳ theo sự xem xét đó mà được vào đoạn găng hay không

Tiến trình P i muốn ra khỏi đoạn găng:

 Pi gởi thông điệp yêu cầu ra w {RELEASE(Hw,i)} cho tất cả các tiến trìnhkhác trong mạng

 Xoá yêu cầu của nó trong hàng đợi cục bộ

…REQ(Hm,i) REQ(Hk,j)

…REQ(Hm,i) REQ(Hk,j)

REQ(Hm,i)

Pi

Hình 1.5 Sơ đồ tổng quát của giải thuật Lamport

Trang 10

IV.3 Thuật toán Ricart & Agrawala

Ricart & Agrawala đưa ra thuật toán loại trừ tương hổ phân tán vào năm 1981.Thuật toán yêu cầu như sau:

 Trật tự toàn bộ các event trong hệ thống (ví dụ thuật toán Lamport hay cácthuật toán khác)

 Các thông điệp là đáng tin cậy (mỗi thông điệp là ACK)

Khi một tiến trình muốn vào đoạn găng, nó:

1 Tạo một thông điệp chứa (nhận dạng tiến trình (máy, số tiếntrình), tên của đoạn găng và thời gian hiện thời)

2 Gửi một thông điệp yêu cầu tới tất cả các tiến trình khác trong

nhóm

3 Đợi tới khi tất cả các tiến trình khác trong nhóm có chấp nhận.

Khi một tiến trình nhận được thông điệp yêu cầu, nó có thể ở một trong ba trườnghợp sau:

Trường hợp 1: Bên nhận không muốn vào đoạn găng, gửi OK cho bên gửi

Trường hợp 2: Bên nhận đang ở trong đoạn găng; không trả lời và đưa yêu cầu vào

hàng đợi yêu cầu cục bộ

Trường hợp 3: Bên nhận muốn vào đoạn găng và đã gửi yêu cầu Trong trường hợp

này, bên nhận so sánh nhãn thời gian (timestamp) trong thông điệp nhận được vớinhãn mà nó đã gửi ra, nhãn sớm hơn sẽ chiếm được Nếu bên nhận không chiếmđược nó sẽ gửi OK đến bên gửi Nếu bên nhận có nhãn thời gian sớm hơn, nó sẽchiếm được và không trả lời Thay vào đó, nó sẽ thêm yêu cầu vào hàng đợi của nó.Khi một tiến trình đã hoạt động với đoạn găng của nó, nó gửi OK đến các tiến trìnhkhác trong hàng đợi của nó và xóa tiến trình ra khỏi hàng đợi

2 Tiến trình 2 cũng muốn vào đoạn găng Khi nó so sánh nhãn thời giancủa nó với nhãn nó nhận được từ tiến trình 0, nó thấy rằng nó không chiếmđược đoạn găng vì vậy nó trả lời chấp nhận cho tiến trình 0 và tiếp tục đợi chođến khi tất cả các tiến trình chấp nhận cho nó vào đoạn găng

Trang 11

3 Ngay khi tiến trình 2 gửi chấp nhận đến tiến trình 0, tiến trình 0 nhậnđược chấp nhận của toàn bộ nhóm và nó có thể vào đoạn găng Khi tiến trình 0thực hiện xong nó kiểm tra hàng đợi các chấp nhận chưa giải quyết của nó vàtìm thấy tiến trình 2 trong hàng đợi này, nó gửi chấp nhận vào đoạn găng chotiến trình 2 Bây giờ tiến trình 2 đã nhận được chấp nhận của mọi tiến trình và

có thể vào đoạn găng

Hình 1.6 Thuật toán Ricart & Agrawala

Chứng minh tính đúng đắn của thuật toán

Giả sử Pi và Pj đang thực hiện yêu cầu (CS) tại cùng một thời điểm và timestampyêu cầu của Pi và nhỏ hơn Pj Điều này có nghĩa là Pi đưa ra yêu cầu của nó đầu tiên

và sau đó nhận yêu cầu của Pj, mặt khác timestamp yêu cầu của Pj sẽ phải nhỏ hơn

Pi và Pj cùng thực hiện đoạn găng nghĩa là Pi gửi thông điệp trả lời tới Pj trước khithoát khỏi đoạn găng Điều này dẫn đến mâu thuẫn một tiến trình không được phépgửi thông điệp trả lời nếu timestamp yêu cầu của nó nhỏ hơn timestamp của thôngđiệp gửi đến Như vậy Pi và Pj không thể cùng vào đoạn găng tại một thời điểm.Ricart & Agrawala algorithm

timestamp current_time Thời gian Lamport hiện thời

timestamp my_timestamp nhãn thời gian của yêu cầu

integer reply_pending Số của chấp nhận chưa giải quyết

boolean is_requesting Nhận giá trị TRUE đoạn găng đã được sử dụngboolean reply_defferred[N] Nhận giá trị TRUE cho yêu cầu tiếp theo

Request_CS()

my_timestamp = current_time

is_requesting = TRUE

reply_pending = N – 1

for every other processor j,

send (j, REMOTE_REQUEST; my_timestamp)

2

Process 0 releases resource

Trang 12

wait until reply_pending = 0

else

reply_defferred[sender] = TRUEREPLY (sender)

reply_pending—

IV.3 Thuật toán Token Ring

Đối với thuật toán này, ta giả sử rằng có một nhóm các tiến trình không có trật tựnhưng có thể áp đặt vào một nhóm.Ví dụ, ta có thể nhận biết mỗi tiến trình bằng địachỉ máy của nó và ID của tiến trình để có được trật tự Sử dụng trật tự áp đặt này, mộtvòng logic được xây dựng trong phần mềm Mỗi tiến trình được ấn định một vị trítrong vòng và mỗi tiến trình phải biết tiến trình tiếp theo nó trong vòng tròn

Vòng tròn được khởi tạo bằng cách gửi một token tới tiến trình 0 Token được luânchuyển vòng (tiến trình n đến tiến trình (n+1)mod kích thước vòng)

Khi một tiến trình chiếm được token, nó kiểm tra xem nếu nó nó có thể vào đoạngăng hay không Nếu có thể, nó vào đoạn găng và thực hiện các công việc của nó.Khi thoát ra nó chuyển token cho tiến trình kế tiếp

Nếu một tiến trình không muốn vào đoạn găng, đơn giản nó chỉ chuyển token Chỉ có một tiến trình có token tại một thời điểm và nó phải có token để vào đoạngăng, vì vậy loại trừ tương hổ được bảo đảm Thứ tự cũng được định nghĩa tốt do

đó không có hiện tượng "chết đói" xảy ra Hạn chế lớn nhất của thuật toán này lànếu token bị mất, nó sẽ được khởi tạo lại Việc xác định token bị mất là khó khăn

Trang 13

(a) Nhóm các tiến trình không có trật tự trong một mạng

(b) Cấu trúc vòng tròn logic trong phần mềm

Hình 1.7 Thuật toán Token Ring

IV.4 Thuật toán loại trừ tương hổ

IV.4.1 Mô tả thuật toán

 Trạng thái ban đầu tại mỗi trạm là bình thường, chưa có thao tác (released)

 Khi có yêu cầu xảy ra tại cổng vào ra (có thể là yêu cầu chỗ trống để cho xevào hay cho một xe ra khỏi bãi), tại đây sẽ ghi nhận thời gian theo đồng hồlogic và chuyển trạng thái sang yêu cầu truy cập thông tin (wanted) và gửithông báo đến các trạm còn lại và chờ cho đến khi nhận được N-1 yêu cầu từcác trạm còn lại gửi về Sau khi đã nhận đủ N-1 yêu cầu sẽ chuyển sang trạngthái đã hoạt động (held), tức là tiến trình đã vào miền găng và đã có quyềntruy cập vào các thông tin chung như đã được mô tả như trên

 Sau khi thực hiện xong việc giải quyết vào ra cho một xe tại cổng của mình vàghi lại thông tin về hiện trạng của bãi đậu xe, sẽ chuyển sang trạng thái banđầu (released) và thông báo cho tất cả các trạm còn lại việc ra khỏi miền găng

 Khi một trạm nhận được thông điệp từ trạm khác mà nó đang ở trong miềngăng (held) hoặc đang trong trạng thái chờ (wanted) và yêu cầu trước trạmphát thông điệp thì nó sẽ đưa thông điệp vừa nhận được vào hàng đợi vàkhông trả lời ngược lại với 02 trường hợp này (tức là đang ở trạng tháireleased) thì nó sẽ lập tức trả lời để tạo điều kiện cho trạm gửi có cơ hội vàomiền găng

 Một trạm trước khi ra khỏi miền găng để trở về trạng thái ban đầu (released)cũng phải trả lời các thông điệp trong hàng đợi để tạo cơ hội cho trạm khácvào miền găng

IV.4.2 Thuật toán thô

Khởi tạo trạng thái ban đầu

state := RELEASED;

Token

Ngày đăng: 31/01/2015, 22:55

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w