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
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 TỐ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 ngun 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 u cầu tài ngun ở 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 tố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 tốn hoạt động hồn tồn ăn khớp với nhau và đạt được trạng thái gắn bó tài ngun 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 tốn có khả năng thay đổi trạng thái của mình và của tồn hệ thống. Các phép tố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 S i nắm giữ một vector H i [1 n], với H i được gọi là đồng hồ cục bộ của trạm S i (i là số thứ tự của trạm S i trong hệ, 1≤ i ≤n , n là số trạm có trong hệ). H i [j] cho thấy hiểu biết mới nhất của S i về thời gian cục bộ của trạm S j . 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 S i 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ỳ, S i cập nhật lại thời gian logic của nó như sau: H i [i]=H i [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 S i 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 S i vào thời điểm gửi. Trạm S j 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: H j = sup( H j , 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 H 1 , H 2 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: H 1 ≤H 2 nếu H 1 [i]≤H 2 [i] với 1≤i≤ n H 1 <H 2 nếu H 1 ≤H 2 và not (H 1 =H 2 ). H 1 ||H 2 nếu not (H 1 <H 2 ) and not (H 2 <H 1 ). 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 e 1 và e 2 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 e 1 , e 2 xảy ra trên cũng một trạm S i (i là số thứ tự của trạm trong hệ), khi đó e 1 e 2 khi và chỉ khi H i (e 1 )<H i (e 2 ). Quy tắc 2: Nếu e 1 là sự kiện gửi đi một thông điệp m trên một trạm, và e 2 là sự kiện nhận đươc chính thông điệp đó thì e 1 e 2 . Quy tắc 3: Nếu hai sự kiện e 1 , e 2 xảy ra trên hai trạm S i , S j bất kỳ trong hệ (i, j là số thứ tự của trạm) thì ta có e 1 e 2 H i (e 1 )<H j (e 2 ). Quy tắc 4 :Nếu hai sự kiện e 1 , e 2 ta có e 1 ||e 2 H(e 1 )||H(e 2 ). 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ệ, m 1 là thông điệp yêu cầu vào bãi, m 2 là thông điệp trả lời của tiến trình P j cho tiến trình P j khi nhận được thông điệp yêu cầu từ tiến trình P i , m 3 là thông điệp yêu cầu ra khỏi bãi của tiến trình P i . Với i, j là số thứ tự của các trạm trong hệ, 1≤ i ≤n, 1≤ j ≤n, H 1 , H 2 , H 3 là dấu của thông điệp m 1 , m 2 , m 3 (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 P i 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: P i gửi thông điệp yêu cầu vào m 1 cho tất cả các tiến trình trong mạng P j (với 1≤j≤n). P j 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 P i bằng thông điệp m 2 . Tại P i 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 P i muốn ra khỏi bãi: P i gửi thông điệp yêu cầu ra m 3 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 . 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. Đà 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 TỐN BÃI ĐỖ XE NHIỀU CỔNG LOGIC VECTOR TIME AND SYNCHRONIZATION