luận văn về thời gian logic vector và vấn đề đồng bộ hóa các tiến trình trong bài toán đỗ xe nhiều công
Trang 1THỜ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
Trang 2Hệ 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ể
Trang 3Mô 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
Trang 4Khi 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ố
Trang 5TÀ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