Ngày nay, một trong những hướng nghiên cứu quan trọng trong hệ thống phân tán đó là vấn
đề đồng bộ hóa các tiến trình sử dụng tài nguyên dùng chung. Để đạt được điều đó thì chúng
ta phải đảm bảo được trật tự như nhau các thông điệp yêu cầu tài nguyên ở tất cả các
trạm/máy chủ có trong hệ. Đề tài tập trung nghiên cứu vấn đề đồng bộ hóa các tiến trình của
bài toán bãi đỗ xe nhiều cổng với hệ thống thời gian vector (Vector time) của Fidge, Mattern và
Schmuck. Giải pháp này có thể đảm bảo được trật tự nhân quả chặt chẽ của các sự kiện diễn
ra trong hệ thống phân tán, đảm bảo các tiến trình trong bài toán hoạt động hoàn toàn ăn khớp
với nhau và đạt được trạng thái gắn bó tài nguyên thông tin dùng chung.
5 trang |
Chia sẻ: tuandn | Lượt xem: 2318 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Thời gian Logic Vector và vấn đề đồng bộ hóa các tiến trình trong bài toán bãi đỗ xe nhiều cổng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Tuyển tập Báo cáo “Hội nghị Sinh viên Nghiên cứu Khoa học” lần thứ 6 Đại học Đà Nẵng - 2008
279
THỜI GIAN LOGIC VECTOR VÀ VẤN ĐỀ ĐỒNG BỘ
HÓA CÁC TIẾN TRÌNH TRONG BÀI TOÁN BÃI ĐỖ XE
NHIỀU CỔNG
LOGIC VECTOR TIME AND SYNCHRONIZATION OF PROCESSES IN PARK
WITH DISTRIBUTED STATIONS
SVTH: NGŨ PHÚC HUY
Lớp 04CCT01, Trường Đại Học Sư Phạm.
GVHD: PGS.TSKH. TRẦN QUỐC CHIẾN
Khoa Tin học, Trường Đại Học Sư Phạm.
TÓM TẮT
Ngày nay, một trong những hướng nghiên cứu quan trọng trong hệ thống phân tán đó là vấn
đề đồng bộ hóa các tiến trình sử dụng tài nguyên dùng chung. Để đạt được điều đó thì chúng
ta phải đảm bảo được trật tự như nhau các thông điệp yêu cầu tài nguyên ở tất cả các
trạm/máy chủ có trong hệ. Đề tài tập trung nghiên cứu vấn đề đồng bộ hóa các tiến trình của
bài toán bãi đỗ xe nhiều cổng với hệ thống thời gian vector (Vector time) của Fidge, Mattern và
Schmuck. Giải pháp này có thể đảm bảo được trật tự nhân quả chặt chẽ của các sự kiện diễn
ra trong hệ thống phân tán, đảm bảo các tiến trình trong bài toán hoạt động hoàn toàn ăn khớp
với nhau và đạt được trạng thái gắn bó tài nguyên thông tin dùng chung.
ABSTRACT
Nowadays, synchronization of processes in distributed system is very important and this
requires people to guarantee the same order among messages sent and received by servers.
This research paper concentrates on vector time invented by Fidge, Mattern and Schmuck,
and synchronization of processes in park with distributed stations. This method can lead to
complete causal order between events, and can satisfy the synchronization of processes and
common information resources in distributed system.
1. Đặt vấn đề
Một hệ thống phân tán bất kỳ nào cũng được cấu tạo từ n thành phần. Các thành phần này
có thể là các tiến trình hoặc các trạm, các nút hoặc các máy Server không dùng bộ nhớ chung
và liên lạc với nhau bằng cách duy nhất là trao đổi thông điệp. Mỗi một thành phần như thế
hoạt động như một otomat có nghĩa là nó triển khai các phép toán có khả năng thay đổi trạng
thái của mình và của toàn hệ thống.
Các phép toán thực hiện bằng một trong những thành phần vừa nêu phải được sắp xếp một
cách tự nhiên theo những trình tự diễn ra. Nếu một tiến trình nào đó cho phép chứa nhiều
luồng, trên hệ thống đơn bộ xử lý, đó chính là trật tự thực hiện các lệnh trên bộ xử lý này.
Chính bộ xử lý này đảm nhận vai trò sắp xếp các sự kiện.
Việc xác định trật tự các sự kiện trên hệ thống đa bộ xử lý là một vấn đề phức tạp liên
quan đến những khó khăn trong việc duy trì một thời gian tuyệt đối gắn bó. Đối với hệ tin học
phân tán, việc thống nhất các giá trị của đồng hồ vật lý để đồng bộ hóa các sự kiện là việc làm
không khả thi vì những lý do sau đây:
Độ trễ của truyền thông.
Sự không thống nhất các đồng hồ vật lý theo một chuẩn nhất định.
Xử lý không theo thời gian thực.
2. Thời gian logic vector
1. Giới thiệu
Tuyển tập Báo cáo “Hội nghị Sinh viên Nghiên cứu Khoa học” lần thứ 6 Đại học Đà Nẵng - 2008
280
Hệ thống đồng hồ vector được Fidge, Mattern và Schmuck đề xuất. Mỗi đồng hồ là một
vector n chiều thể hiện bởi n phần tử không âm. Mỗi trạm Si nắm giữ một vector Hi [1..n], với
Hi được gọi là đồng hồ cục bộ của trạm Si (i là số thứ tự của trạm Si trong hệ, 1≤ i ≤n , n là số
trạm có trong hệ).
Hi[j] cho thấy hiểu biết mới nhất của Si về thời gian cục bộ của trạm Sj. Như vậy thời gian
vector cho ta thấy toàn cảnh của thời gian logic giữa các trạm.
2. Cập nhật đồng hồ logic
Các quy luật để một trạm Si cập nhật lại đồng hồ logic vector của mình:
Trước khi thực hiện một sự kiện bất kỳ, Si cập nhật lại thời gian logic của nó như sau:
Hi[i]=Hi[i] + d
(Với d là một số gia)
Trước khi gửi một thông điệp m đi, trạm Si sẽ gán nhãn thời gian cho thông điệp ấy
theo thời gian t mới nhất của trạm Si vào thời điểm gửi. Trạm Sj khi nhận được thông
điệp sẽ cập nhật lại đồng hồ logic của nó theo công thức:
Hj = sup( Hj ,t);
Với sup(u,v)=w; w[i]=max(u[i],v[i])
(u, v, w là các vector n chiều; 1≤i≤n; 1≤i≤n)
3. So sánh hai vector
Cho hai vector H1, H2 với kích thước thước n, chúng có thể được so sánh với nhau theo công
thức sau đây:
H1≤H2 nếu H1[i]≤H2[i] với 1≤i≤ n
H1<H2 nếu H1≤H2 và not (H1=H2).
H1||H2 nếu not (H1<H2) and not (H2<H1).
4. Xác lập thứ tự nhân quả giữa hai sự kiện
Việc xác lập trật tự nhân quả của hai sự kiện e1 và e2 bất kỳ được thực hiện dựa trên những
quy luật sau đây:
Quy tắc 1: Nếu hai sự kiện e1, e2 xảy ra trên cũng một trạm Si (i là số thứ tự của trạm
trong hệ), khi đó e1e2 khi và chỉ khi Hi(e1)<Hi(e2).
Quy tắc 2: Nếu e1 là sự kiện gửi đi một thông điệp m trên một trạm, và e2 là sự kiện
nhận đươc chính thông điệp đó thì e1e2.
Quy tắc 3: Nếu hai sự kiện e1, e2 xảy ra trên hai trạm Si, Sj bất kỳ trong hệ (i, j là số
thứ tự của trạm) thì ta có e1e2 Hi(e1)<Hj(e2).
Quy tắc 4 :Nếu hai sự kiện e1, e2 ta có e1||e2 H(e1)||H(e2).
3. Bài toán bãi đỗ xe nhiều cổng
Bài toán được phát biểu như sau: Có một bãi đỗ xe hiện đại trong đó có m chỗ để xe và n cổng
vào/ra, tại mỗi cổng có người bảo vệ có nhiệm vụ phân phối cho các xe cụ thể.
Tuyển tập Báo cáo “Hội nghị Sinh viên Nghiên cứu Khoa học” lần thứ 6 Đại học Đà Nẵng - 2008
281
Mô hình của bãi đỗ xe nhiều cổng
Trong bài toán, chúng ta xem các trạm gác là các Server, người thực giữ cổng là các
chương trình cài đặt trên các Server, các chỗ trong bãi đỗ xe là các tài nguyên. Tại mỗi trạm sẽ
có hai tiến trình, trong đó, một tiến trình phát có nhiệm vụ truyền đi các thông điệp: Thông
điệp kiến nghị vào bãi, hoặc ra khỏi bãi, hoặc yêu cầu cung cấp, tiến trình nhận có nhiệm vụ
nhận các thông điệp truyền đến nó.
Khi một xe yêu cầu vào vị trí đậu, có nghĩa là tiến trình yêu cầu tài nguyên dùng chung.
Ngược lại, khi một xe yêu cầu ra khỏi vị trí đậu, nghĩa là tiến trình khuyến nghị giải phóng tài
nguyên dùng chung.
Bài toán đỗ xe có ít nhất là hai cổng, ở đây ta giả sử là có bốn cổng. Số lượng vị trí trong bãi là
25, mỗi cổng tương ứng với một trạm trên mạng. Mỗi trạm có một địa chỉ IP duy nhất định
danh cho trạm và một Port để quy định dịch vụ hoạt động trên cổng đó.
Nói cách khác, hệ thống bãi đỗ xe là một hệ thống đa Server bao gồm Server1 (bảo vệ 1),
Server2 (bảo vệ 2), Server3 (bảo vệ 3), Server4 (bảo vệ 4). Mỗi Server đều có một cơ sở dữ
liệu riêng rẽ để chứa dữ liệu. Dữ liệu ở đây là các thông tin vào và ra của các xe.
Như vậy, tại một trạm nào đó, một xe yêu cầu được vào bãi thì tiến trình phát tại trạm này sẽ
phát sinh các thông điệp và gởi các thông điệp đến trạm khác và ngay cả chính nó. Những
thông điệp này sẽ được nhận bởi các tiến trình nhận tạị trạm nhận và đưa vào hàng đợi cục bộ
của nó.
Phân tích bài toán bãi đỗ xe ở trên, chúng ta nhận thấy việc sắp xếp các thông điệp được phát
ra từ các trạm là điều cực kỳ quan trọng để đảm bảo tính đồng bộ của dữ liệu nhằm quản lý tốt
các dòng xe vào và ra. Vấn đề này đặt ra yêu cầu phải duy trì một thời gian tuyệt đối đồng bộ.
4. Giải pháp cho bài toán bãi đỗ xe nhiều cổng
Việc đồng bộ hóa các tiến trình vào và ra trong bài toán bãi đỗ xe được thực hiện nhờ
giải thuật loại trừ tương hỗ phân tán nhờ dấu trên cơ sở thời gian vector.
Gọi n là số trạm trong hệ, m1 là thông điệp yêu cầu vào bãi, m2 là thông điệp trả lời của tiến
trình Pj cho tiến trình Pj khi nhận được thông điệp yêu cầu từ tiến trình Pi, m3 là thông điệp yêu
cầu ra khỏi bãi của tiến trình Pi. Với i, j là số thứ tự của các trạm trong hệ, 1≤ i ≤n, 1≤ j ≤n, H1,
H2, H3 là dấu của thông điệp m1, m2, m3 (Quy định thời gian logic tại thời điểm gởi thông
điệp).
Tuyển tập Báo cáo “Hội nghị Sinh viên Nghiên cứu Khoa học” lần thứ 6 Đại học Đà Nẵng - 2008
282
Khi tiến trình Pi muốn vào bãi thì quá trình gửi và nhận thông điệp sẽ xảy ra như sau:
Pi gửi thông điệp yêu cầu vào m1 cho tất cả các tiến trình trong mạng Pj (với
1≤j≤n).
Pj nhận được thông điệp này thì đẩy thông điệp vào hàng đợi cục bộ của trạm
và trả lời cho Pi bằng thông điệp m2.
Tại Pi sau khi nhận được thông điệp trả lời (từ tất cả các trạm) rồi dựa trên sự
xem xét yêu cầu của nó xem có tiếp tục vào bãi không.
Tiến trình Pi muốn ra khỏi bãi:
Pi gửi thông điệp yêu cầu ra m3 cho tất cả các tiến trình khác trong mạng.
Xóa yêu cầu vào tương ứng của nó trong hàng đợi cục bộ.
5. Kết luận
Đề tài nhằm tập trung nghiên cứu về thời gian vector và vận dụng thời gian nhằm tiến hành
đồng bộ hóa các tiến trình trong bài toán Bãi đỗ xe nhiều cổng và đạt được những kết quả sau:
- Mô phỏng bài toán bãi đỗ xe là một hệ thống đa Server trong hệ phân tán.
- Xác lập trật tự nhân quả chặt chẽ của các thông điệp trên cơ sở thời gian vector.
- Dựa vào trật tự nhân quả chặt chẽ giữa các thông điệp, xây dựng giải pháp đồng bộ hóa
dữ liệu giữa các trạm.
- Kết quả thu được cho thấy sự hợp lực chính xác giữa các bảo vệ của các trạm bằng
cách trao đổi thông điệp đã đảm bảo điều khiển chính xác các dòng xe vào và ra.
Những kết quả mà bài toán bãi đỗ xe đạt được là rất đáng khích lệ bởi vì nó có thể phát
triển để giải quyết những bài toán tương tự đặt ra trong thực tế như bài toán đặt vé máy bay,
đặt nơi du lịch, hoặc các ứng dụng lớn như thương mại điện tử, giáo dục điện tử…Đây là
những bài toán cần phân tán các chức năng của nó trên các trạm để thời gian trả lại có kết quả
tốt hơn. Do đó nó cần được mô phỏng như một hệ đa Server trong hệ phân tán.
Vì lượng thông tin của chúng rất lớn và nhu cầu giao dịch rất nhiều, do đó cần phân tán
các giao dịch trên các trạm khác nhau để thời gian giao dịch nhanh chóng và chính xác, tránh
lãng phí tài nguyên và tranh chấp tài nguyên. Muốn vậy, giải pháp xây dựng cần phải đảm bảo
một sự đồng bộ dữ liệu giữa các trạm tại mọi thời điểm. Điều này ta hoàn toàn có thể tin tưởng
ở kết quả thu được từ bãi toán Bãi đỗ xe.
Đề tài có thể được nghiên cứu tiếp theo những hướng sau:
- Tiến hành giảm kích thước của nhãn thời gian vector khi đính vào thông điệp và gửi đi
trên đường truyền.
- Tạo lát cắt ổn định (Consistent Cut) và ảnh chụp quang cảnh hệ thống (Snapshot) nhằm
xử lý trường hợp mạng bị sự cố, tiến hành khôi phục lại tình trạng ổn định của mạng trước
sự cố.
Tuyển tập Báo cáo “Hội nghị Sinh viên Nghiên cứu Khoa học” lần thứ 6 Đại học Đà Nẵng - 2008
283
TÀI LIỆU THAM KHẢO
[1] PGS-TS Lê Văn Sơn (2002), Hệ tin học phân tán, NXB Đại học Quốc gia TP.Hồ Chí
Minh.
[2] PGS-TS Lê Văn Sơn (1999), Nguyên lý hệ điều hành, Giáo trình.
[3] Nguyễn Kim Tuấn (2004), Giáo trình lý thuyết hệ điều hành, Khoa CNTT-Trường ĐHKH
Huế.
[4] Kỹ thuật lập trình Java (2002), Hoàng Đức Hải-Nguyễn Tô Thành, Nhà xuất bản lao động
xã hội.
[5] Victor Larios, Félix F.Ramos (2004), Advanced Distributed System, Third Intenational
School and Symposium, ISSAD.
[6] Nicola Santoro (1997), Design and Analysis of distributed algorithms, vWiley.
[7] K Mani Chandy (1985), Distributed Snapshots- Determining Global States of Distributed
System, University of Texas.
[8] M.Raynal, M.Singhal (1995), Logical Time: A way to capture Causality in Distributed
System, Institut National de Recherche en infomatique et en automatiue.
[9] Michel Raynal, Mukesh Singhal, Capturing Causality in Distributed Systems, University
of Rennes, Ohio State University.
[10] J.Wetch (1998), Distributed Algorithms and Sysrtem, A&M University.
[11] Friedmann Mattern, VirtualTime and Global State of Distributed Systems, University of
Kaiserslautern, Germany.
[12] William Grosso (2001), Java RMI, O’Relly.
[13] John O’ Donahue (2002 , Java Database Programming Bible, Wiley.
[14] Chris Adamson, Joshua Marinacci (2002), Swing Hacks, O’Relly.
[15] Dick Steflik, Prashant Sridharan, Richard Steflik (2003), Advanced Java Networking,
O’Relly.
[16] www.javavietnam.org
[17] www.ddth.com