Tải bản đầy đủ (.ppt) (17 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (319.38 KB, 17 trang )

1
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
**************
TIỂU LUẬN MÔN LẬP TRÌNH MẠNG
Đề tài: (đề 14) VIẾT CHƯƠNG TRÌNH ĐẢM BẢO CHỐNG TRÙNG VÉ
TÀU HỎA KHI PHÂN TÁN CSDL TRÊN TẤT CẢ CÁC
GA TRONG HỆ THỐNG ĐƯỜNG SẮT
Giảng 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-CHK16
Đà Nẵng, tháng 5 năm 2012
2
LÝ THUYẾT
3
ĐỒNG BỘ TIẾN TRÌNH

Đ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ện vớ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;

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ải nghiê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 độc lậ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 truy cập vào thông tin dùng chung cùng một lúc làm phát
sinh vấn đề truy cập tương tranh.

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ác chức năng xác định nhằm
cho kết quả nhanh và hiệu quả nhất, điều này cho phé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.
4
ĐỒNG BỘ TIẾN TRÌNH (TT)
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 động chung. Đâ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 qua lại với nhau. Trong
các hệ thống tập trung, điều đó được thực hiện nhờ thuật toán loạ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ột biến chung là đủ. Trong hệ phân tán, các thông tin cần trao
đổi phải thông qua các kênh thuộc hệ thống viễn thông dưới dạng các thông điệp.
5
ĐỒNG HỒ LOGIC LAMPORT

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ói rằng bền chặt mạnh: nếu

C(e1) < C(e2) thì e1  e2.
6
ĐỒNG HỒ LOGIC LAMPORT

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

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.

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)

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:

Ci = Max(Ci, Cmsg)

Xử lý R2.

Phát thông điệp.
Các thời gian đánh dấu Lamport (Lamport timestamps)
7
ĐỒNG HỒ LOGIC LAMPORT
Ví dụ thời gian logic Lamport
Trạm 1
Trạm 2
Trạm 3
Trạm 4
0
1

0
0
2
2
3
3
4
5
5
6
7
8
9 10
7
Thời gian vật lý
n
Giá trị đồng hồ.
timestamp
Thông điệp
0
1
2
3
4
6
8
7
Các sự kiện logic đồng thời
8
THUẬT TOÁN LARMPORT TỔNG QUÁT

(a) cả hai tiến trình 0 và 2 yêu cầu vào đoạn găng
(b) tiến trình 0 vào đoạn găng vì nó có yêu cầu đầu tiên
(c) tiến trình 0 rời đoạn găng, tiến trình 2 vào đoạn găng.
9
THUẬT TOÁN RICART & AGRAWALA
2
Process 0
releases
resource

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

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

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

Vào đoạn găng
10
THUẬT TOÁN TOKEN RING
(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
11
THUẬT TOÁN LOẠI TRỪ TUƠNG HỔ
state := RELEASED;
Để một tiến trình chuẩn bị vào được đoạn găng
state := WANTED;
Gởi thông điệp yêu cầu vào đoạn găng cho N-1 trạm còn lại
H := request’s timestamp; {Thời gian dấu của yêu cầu}
Wait until ( Số lượng các thông điệp trả lời cho nó = (N - 1));
state := HELD;

Để một tiến trình ra khỏi đoạn găng
state := RELEASED;
Gởi thông điệp cho mọi tiến trình khác trong hệ
Khi nhận một yêu cầu <T,H,I,D>:
Cập nhật đồng hồ Logic của trạm theo công thức clock_logic=Max(clock_logic,H)+1
Nếu T=”REQ” thì bỏ thông điệp vào hàng đợi của trạm. Ở đây là chèn thông điệp vào hàng
đợi theo hai giá trị của H và I.
Nếu T= “ACK” thì Tham chiếu vào hàng đợi của mình để xem các thông điệp có giá trị
T=”REQ”, IREQ=IACK ở đầu hàng đợi
Các thông điệp có giá trị T=”ACK” đã nhận đầy đủ từ các trạm khác trong hệ để trả lời cho nó
Nếu đã hội đủ hai vấn đề trên thì cho vào đoạn găng
Ngược lại thì bỏ thông điệp vào hành đợi
Nếu T= “REL”
Xoá thông điệp có T=”REQ” tương đương với nó ra khỏi hàng đợi
12
ỨNG DỤNG
13
PHÁT BIỂU BÀI TOÁN
Giả sử có N ga tàu ở tại N thành phố khác nhau, có một chiếc tàu SE1 đi lần
lượt từ ga đầu tiên đến ga cuối cùng và tại mỗi ga đều bán vé cho chiếc tàu đó.
Quy định ga đầu tiên có thể bán vé tự do, kể từ ga thứ hai trở đi chỉ bán 5%
của số vé trống còn lại và sau 30 phút có thể bán tự do số vé trống đó. Như
vậy, xảy ra trường hợp là các ga tiếp theo không biết vị trí nào có người và vị
trí nào không có người, ngoài ra còn trường hợp tại thời điểm t trước đó một vị
trí số 3 có người nhưng tại thời điểm t’ thì vị trí đó không có người vì đến ga
đó khách đã rời tàu, …. Vậy, vấn đề đặt ra là phải tạo ra một cơ chế đồng bộ
hóa các tiến trình để cho các nhân viên biết mới có thể bán vé tàu được một cách
chính xác và hiệu quả.
14
MÔ HÌNH BÀI TOÁN

S
3
S
1
S
4
S
2
Mạng
TCP/IP

Các trạm phải tuân thủ các nguyên tắc sau

Mỗi trạm sử dụng bộ nhớ tất thời hoặc đĩa cứng của mình trong quá trình xử lý thông tin và cập nhật
cơ sở dữ liệu dùng chung cho chính trạm đó.

Việc trao đổi dữ liệu của hệ thống được tiến hành thông qua sự trao đổi thông điệp giữa các trạm với
nhau.

Mỗi khi có sự cố trên một trạm thì các trạm trong hệ đều phải biết.
15
MÔ HÌNH BÀI TOÁN
Mỗi trạm cài đặt một chương trình gồm hai tiến trình.Trong đó một tiến trình có
nhiệm vụ phát đi các thông điệp yêu cầu cung cấp hoặc kiến nghị vị trị có khách
hàng, tiến trình còn lại nhận các thông điệp từ các tiến trình phát. Trên mỗi trạm
đều có xây dựng một hàng đợi, dùng để lưu trữ các thông điệp từ các tiến trình
phát
Như vậy, tại mỗi trạm nào đó, nếu có một khách hàng muốn mua một vé tàu thì
tiến trình phát tại trạm này sẽ gởi thông điệp đến các trạm khác và ngay cả
chính nó. Những thông điệp này sẽ được tiến trình nhận và đưa vào hàng đợi

cục bộ tại trạm. Sau đó tùy theo giải thuật xử lý mà ta biết được là nó có thể
mua được hay không?
16
MÔ HÌNH BÀI TOÁN
Queue của Trạm
Ghi
Nhận
Tiến trình
yêu cầu
mua vé
S
Thông báo đã mua vé được
Cập nhật dữ liệu tại trạm
Ra khỏi hàng đợi
Tiến trình
nhận
*
T
Ch

*: Xử lý theo giải thuật
Hình 1.13. Mô hình tại trạm với yêu cầu mua vé
17
Cảm ơn!

×