BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG BÁO CÁO TIỂU LUẬN LẬP TRÌNH MẠNG NÂNG CAO Đề tài (số 03 Danh mục đề tài tiểu luận): Viết chương trình cài đặt thuật toán sắp xếp theo kiểu đóng dấu 1. Nghiên cứu bản chất của phương pháp đóng dấu vào thông điệp trước khi gửi đi cho tất cả các server qua hệ thống đường truyền 2. Xây dựng hệ thống đa server 3. Xây dựng chương trình monitoring quan sát trường dấu trong hàng đợi các thông điệp tại các server nhận HỌC VIÊN : NGUYỄN THANH BÌNH LỚP : CAO HỌC KHÓA 11 NGÀNH : KHOA HỌC MÁY TÍNH GVHD : PGS TS. LÊ VĂN SƠN Đà nẵng, 032010 LỜI MỞ ĐẦU Trong số những phát minh vĩ đại nhất của thế kỉ trước, thì mạng máy tính (Computer Network) là một hệ thống đem lại nhiều lợi ích to lớn nhất cho nhân loại; Điển hình nhất là mạng Internet, hiện nay đang cho phép hàng tỉ máy tính trên toàn cầu kết nối và làm việc với nhau với tốc độ cao (từ vài chục đến hàng nghìn kbps). Điều kỳ diệu trên đang ngày càng phát triển mạnh mẽ, vững chắc là nhờ các nền tảng cơ sở lí thuyết cho chúng đã được nghiên cứu; Một trong những cơ sở lý thuyết nền tảng ấy, chính là những lí thuyết nghiên cứu liên quan đến hệ phân tán. Nhờ có lí thuyết hệ phân tán, mà các bộ vi xử lí đơn lẻ, mà chúng ta vẫn thường gọi là các hệ thống tập trung (Centralized Systems) đã được kết nối với nhau, làm việc trên nhiều giao thức, nhiều kiểu kết nối và trên nhiều lãnh thổ khác nhau. Hệ tin học phân tán là một hệ thống tin học hiện đại, bao gồm nhiều lĩnh vực kiến thức tiên tiến nhằm trợ giúp cho công tác nghiên cứu, phân tích và thiết kế các hệ thống tin học Một trong những tư tưởng lớn của các hệ phân tán là phân tán hóa các quá trình xử lý thông tin và thực hiện các công việc đó trên các trạm xa nhau. Đó là cơ sở để xây dựng các hệ ứng dụng lớn như thương mại điện tử, giáo dục điện tử, chính phủ điện tử... Trong giới hạn của một tiểu luận báo cáo kết thúc môn học, nội dung của bản báo cáo sẽ được trình bày theo yêu cầu Đề tài số 03 “Viết chương trình cài đặt thuật toán sắp xếp theo kiểu đóng dấu” trong danh mục “Đề tài tiểu luận và bài tập môn Lập trình mạng nâng cao” của PGS TS. Lê Văn Sơn, bao gồm: Chương 1: Hệ phân tán các vấn đề về đồng bộ hóa. Chương 2: Xây dựng hệ thống đa Server cài đặt thuật toán sắp xếp theo kiểu đóng dấu. Được sự giúp đỡ tận tình của Thầy giáo hướng dẫn và các bạn đồng nghiệp, tôi đã hoàn thành được những nhiệm vụ cơ bản đề ra. Tuy nhiên, với thời gian và kiến thức có hạn, bản báo cáo này chắn chắn còn nhiều khiếm khuyết, tôi rất mong nhận được góp ý chân thành của Thầy giáo và các bạn đồng nghiệp. Nhân dịp này cho phép tôi xin được bày tỏ lòng biết ơn chân thành đối với PGS TS LÊ VĂN SƠN và các đồng môn, bằng hữu đã giúp đỡ tôi hoàn thành nội dung bản báo cáo này.. Học viên thực hiện Nguyễn Thanh Bình.
Tiểu luận Lập trình mạng nâng cao BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG BÁO CÁO TIỂU LUẬN LẬP TRÌNH MẠNG NÂNG CAO Đề tài (số 03 - Danh mục đề tài tiểu luận): ViẾt chương trình cài đặt thuẬt tốn sẮp xẾp theo kiỂu đóng dẤu Nghiên cỨu bẢn chẤt cỦa phương pháp đóng dẤu vào thơng điỆp trước gỬi cho tẤt cẢ server qua hỆ thỐng đường truyỀn Xây dỰng hỆ thỐng đa server Xây dựng chương trình monitoring quan sát trường dấu hàng đợi thông điệp server nhận HỌC VIÊN LỚP NGÀNH GVHD : : : : Đà nẵng, 03/2010 LỜI MỞ ĐẦU -1- NGUYỄN THANH BÌNH CAO HỌC KHĨA 11 KHOA HỌC MÁY TÍNH PGS TS LÊ VĂN SƠN Tiểu luận Lập trình mạng nâng cao Trong số phát minh vĩ đại kỉ trước, mạng máy tính (Computer Network) hệ thống đem lại nhiều lợi ích to lớn cho nhân loại; Điển hình mạng Internet, cho phép hàng tỉ máy tính tồn cầu kết nối làm việc với với tốc độ cao (từ vài chục đến hàng nghìn kbps) Điều kỳ diệu ngày phát triển mạnh mẽ, vững nhờ tảng sở lí thuyết cho chúng nghiên cứu; Một sở lý thuyết tảng ấy, lí thuyết nghiên cứu liên quan đến hệ phân tán Nhờ có lí thuyết hệ phân tán, mà vi xử lí đơn lẻ, mà thường gọi hệ thống tập trung (Centralized Systems) kết nối với nhau, làm việc nhiều giao thức, nhiều kiểu kết nối nhiều lãnh thổ khác Hệ tin học phân tán hệ thống tin học đại, bao gồm nhiều lĩnh vực kiến thức tiên tiến nhằm trợ giúp cho công tác nghiên cứu, phân tích thiết kế hệ thống tin học Một tư tưởng lớn hệ phân tán phân tán hóa q trình xử lý thơng tin thực cơng việc trạm xa Đó sở để xây dựng hệ ứng dụng lớn thương mại điện tử, giáo dục điện tử, phủ điện tử Trong giới hạn tiểu luận báo cáo kết thúc môn học, nội dung báo cáo trình bày theo yêu cầu Đề tài số 03 “Viết chương trình cài đặt thuật tốn xếp theo kiểu đóng dấu” danh mục “Đề tài tiểu luận tập mơn Lập trình mạng nâng cao” PGS TS Lê Văn Sơn, bao gồm: Chương 1: Hệ phân tán & vấn đề đồng hóa Chương 2: Xây dựng hệ thống đa Server & cài đặt thuật tốn xếp theo kiểu đóng dấu Được giúp đỡ tận tình Thầy giáo hướng dẫn bạn đồng nghiệp, tơi hồn thành nhiệm vụ đề Tuy nhiên, với thời gian kiến thức có hạn, báo cáo chắn chắn cịn nhiều khiếm khuyết, tơi mong nhận góp ý chân thành Thầy giáo bạn đồng nghiệp Nhân dịp cho phép xin bày tỏ lòng biết ơn chân thành PGS TS LÊ VĂN SƠN đồng môn, hữu giúp đỡ tơi hồn thành nội dung báo cáo này./ Học viên thực Nguyễn Thanh Bình -2- Tiểu luận Lập trình mạng nâng cao CHƯƠNG HỆ PHÂN TÁN & CÁC VẤN ĐỀ VỀ ĐỒNG BỘ HÓA 1.1 TỔNG QUAN VỀ HỆ TIN HỌC PHÂN TÁN Hệ tin học phân tán hay nói ngắn gọn hệ phân tán (Distributed System) hệ thống xử lý thông tin bao gồm nhiều xử lý vi xử lý nằm vị trí khác liên kết với thông qua phương tiện viễn thông điều khiển thống hệ điều hành Đặc điểm cần nhấn mạnh hệ phân tán hệ xử lý thông tin thành phần: - Không dùng chung chia sẻ nhớ; - Không sử dụng chung đồng hồ xung nhịp; - Chúng liên lạc với thông qua mạng truyền thông - Mỗi hệ xử lý có xử lý, nhớ hệ điều hành riêng Thành phần hệ phân tán bao gồm hệ thống cục hay nhiều hệ thống phát u cầu thơng tin cịn hệ khác trả lời yêu cầu có liên quan đến phần liệu Nói cách tổng qt hệ luôn diễn việc thực công việc hệ thống yêu cầu Các hệ thống truyền thống hệ rời rạc hay tập trung đáp ứng nhanh chóng xác u cầu thông tin từ xa với lưu lượng thông tin lớn Các thao tác chuẩn hệ phân tán : 1: Tiếp nhận ghi yêu cầu dẫn 2: Dịch u cầu để có thơng tin cần thiết Thực số công việc hệ thống cục kiểm tra quyền truy cập thông tin, lập hóa đơn dịch vụ 3: Gửi kết cho hệ thống phát yêu cầu Hệ tin học phân tán thực hàng loạt chức phức tạp chức đảm bảo cung cấp cho người sử dụng khả truy cập có kết đến tài nguyên vốn có đa dạng hệ thống tài nguyên dùng chung Việc định nghĩa tài nguyên hệ tài nguyên dùng chung mang đến cho hệ hiệu tốt khai thác ứng dụng -3- Tiểu luận Lập trình mạng nâng cao Các ưu điểm tài nguyên dùng chung hệ phân tán : 1: Tăng tốc độ bình qn tính tốn xử lý 2: Cải thiện tình trạng ln sẵn sàng loại tài nguyên 3: Tăng độ an toàn cho liệu 4: Đa dạng hóa loại hình dịch vụ tin học 5: Bảo đảm tính tồn vẹn thơng tin Tuy nhiên dẫn đến hàng loạt vấn đề khó khăn việc thiết lập hệ liên quan việc cấp phát tài nguyên dùng chung cho tiến trình Điều quan trọng để đảm bảo chức năng, yêu cầu nêu trên, hệ tin học phân tán cần phải có chế kỹ thuật đủ mạnh nhằm đồng hóa hoạt động tiến trình trao đổi thơng tin với cho hệ thống tránh trường hợp dẫn đến bế tắc 1.2 VẤN ĐỀ ĐỒNG BỘ HÓA CHƯƠNG Đặt vấn đề: Mọi hệ thống tin học, cần cung cấp chế đủ mạnh hiệu để đồng hóa tiến trình, điều thể hai nguyên sau: 1: Nhìn chung, tiến trình kể tiến trình xuất phát từ ứng dụng độc lập muốn truy cập vào tài nguyên với số lượng vốn hạn chế hay truy cập vào thông tin dùng chung lúc Trường hợp gọi truy cập tương tranh Tương tranh nguyên nhân xung đột tiến trình muốn truy cập vào tài nguyên dùng chung 2: Các tiến trình hệ ứng dụng hoạt động theo kiểu hợp lực để giải toán đặt cho kết nhanh chóng Điều cho phép tăng hiệu sử dụng thiết bị hiệu hoạt động chương trình Hợp lực nguyên nhân tác động tương hỗ lập trình tiến trình nhằm cho phép chúng tham gia vào hành động chung Sự tương tranh hợp lực tiến trình địi hỏi phải có trao đổi thơng điệp qua lại với Trong hệ thống tập trung, điều thực nhờ thuật tốn loại bỏ tương hỗ thơng qua biến tác động vùng nhớ chung Trong hệ tin học phân tán, thông tin cần trao đổi thông qua kênh thuộc hệ thống viễn thông -4- Tiểu luận Lập trình mạng nâng cao CHƯƠNG Bài tốn bãi đỗ xe tơ: Để rút vấn đề đặt hệ phân tán việc đồng hóa tiến trình Ta nghiên cứu ví dụ kinh điển, tốn bãi đỗ xe tơ, với nội dung nêu sau : Hình 1.1 mơ bãi đỗ xe tơ đại Trong đó: - BV: người bảo vệ có nhiệm vụ phân phối chỗ cho xe tơ - VT: vị trí cho xe ôtô cụ thể - Các mũi tên hai chiều sử dụng để mơ tả dịng vào ô tô BV VT BV VT VT BV VT VT VT VT VT VT VT VT VT VT VT VT VT VT VT BAI DO XE VT VT VT VT VT BV VT VT VT VT VT VT BV VT BV Hình 1.1 Mơ bãi đỗ xe 3.1.1.1 Các tình cần quan tâm tốn: a Tình thứ 1: Giả sử bãi đỗ xe tơ loại bãi lớn có cổng vào kiểm soát người bảo vệ (BV) người bảo vệ biết phần trạng thái bãi đỗ xe Trong nghĩ bãi xe bị đầy, lại có nhiều lái xe cho xe chạy cổng Vì suy nghĩ vậy, trường hợp này, không giải cho xe tiếp tục vào bãi nữa, lúc bãi có chỗ trống Như vậy, người bảo vệ không nắm trạng thái hành bãi b Tình thứ 2: Nếu ta có bãi đỗ xe với nhiều cổng cổng có BV BV biết trạng thái với độ trễ định điều dẫn đến tình thứ -5- Tiểu luận Lập trình mạng nâng cao Đó tình có nhiều trung tâm định (hợp lực) trường hợp minh họa hình Trên thực tế, người bảo vệ tin khơng cịn chỗ trống nữa, người bảo vệ khác lại vừa cho khỏi bãi số xe mà chưa kịp báo cho người bảo vệ khác Cũng diễn trường hợp lúc NBV giải xe vào vị trí bãi (tương tranh) họ thiếu thơng tin Tình thứ 2, đặt liên quan trực tiếp đến vấn đề cung cấp tài nguyên hệ, chức cung cấp phân tán nhiều trạm hệ Trong người bảo vệ có vai trị chương trình cung cấp bãi đỗ xe; Ở đây, chỗ để xe xem tài nguyên hệ, tơ vào bãi tiến trình hệ Như vậy, BV phải hợp lực với để phân phối xác chỗ trống bãi, đặc biệt số lượng chỗ cịn trống (tài ngun hạn chế) vai trị hợp lực quan trọng Sự hoạt động gắn bó với chương trình cung cấp cần thiết để đảm bảo cho hoạt động cung cấp hoàn tồn xác 3.1.1.2 Ví dụ khơng gắn bó: Để thấy tầm quan trọng mang tính định trình tự xử lý thơng điệp u cầu gắn bó hệ, ta tiếp tục xem xét trường hợp khơng gắn bó toán bãi đỗ xe: Giả sử thời điểm cho trước ta có người bảo vệ có 100 chỗ cịn trống Tất BV để có thơng tin đó, trạng thái hệ lúc gắn bó Ba số họ phát thơng tin cho Bảng 1.1 trình tự phát thơng điệp họ biểu diễn Hình 1.2: Bảng 1.1 Thứ tự & nội dung phát thông tin Stt Ký Thông tin phát hiệu M1 Thêm 20 chỗ trống M2 có 10 chỗ bị chiếm M3 Dành 10% chỗ trống để quét dọn bãi Hình 1.2 Sơ đồ trình tự phát, nhận thông tin cổng -6- 100 100 M1 100 100 M3 M2 98 99 100 101 Tiểu luận Lập trình mạng nâng cao Trật tự Bảo vệ Thông giá trị điệp Bảo vệ Thông giá trị điệp 100 Bảo vệ Thông giá trị điệp 100 Bảo vệ Thông giá trị điệp 100 100 M1 120 M1 120 M3 90 M2 90 M3 108 M2 110 M1 110 M3 81 M2 98 M3 99 M2 100 M1 101 Bảng 1.2 Kết khơng gắn bó người bảo vệ Bảng 1.2 cho thấy, ta khơng có ràng buộc trình tự xử lý thơng điệp nhận người bảo vệ BV có thơng tin số lượng chỗ trống khác Để bảo đảm cập nhật giống trình tự cập nhật thiết phải giống tất trạm 3.1.1.3 Quy tắc cho thuật toán cung cấp hệ phân tán Một hoạt động gắn bó chương trình cung cấp phân tán quản lý tập hợp tài nguyên đạt tuân thủ qui tắc sau: Stt Qui tắc Các cung cấp bắt buộc phải thực giải thuật Các cung cấp nhận tất thơng điệp phát từ tiến trình Các thông điệp phải xử lý trật tự chương trình cung cấp Bảng 1.3 Các quy tắc đảm bảo gắn bó hệ phân tán Qui tắc cuối, nhấn mạnh đến thiết yếu phải có trật tự tập hợp thơng điệp hệ Trật tự thực thông qua việc hợp lực tiến trình cung cấp Ở phần sau nghiên cứu số phương pháp xếp nhằm xác lập trật tự đảm bảo cho yêu cầu đồng hóa -7- Tiểu luận Lập trình mạng nâng cao CHƯƠNG Vấn đề đồng tiến trình : Trong hệ tin học tập trung, vấn đề đồng hóa giải thơng qua chế loại trừ tương hỗ Cơ chế cho phép xác lập trật tự hoàn toàn kiện Trong hệ phân tán, việc đồng hóa chủ yếu yêu cầu thiết lập trật tự kiện Giữa trạm khác nhau, trật tự thể thông qua việc trao đổi thông điệp với Một tiến trình cần sử dụng tài ngun để phát triển cơng việc mình, phải yêu cầu cung cấp cách hợp thức cách gửi thông điệp yêu cầu Như thế, tiến trình có nhu cầu tài ngun bị treo chừng tài ngun cịn chưa giải phóng hay chưa cung cấp cho 4.1.1.1 Miền găng Miền găng: đoạn chương trình mà truy cập vào tài nguyên dùng chung Vấn đề miền găng: truy cập chồng lên dẫn đến kết khác với truy cập Do làm bảo đảm tiến trình thi hành miền găng cách đồng thời; hay nói cách khác làm tuân theo giải thuật loại trừ tương hỗ 4.1.1.2 Phân nhóm thuật toán truy cập loại trừ tương hỗ Truy cập vào miền găng dựa xác nhận (contention based): Mỗi tiến trình xác nhận u cầu để truy cập vào miền găng Hay nói cách khác, tiến trình cạnh tranh hay tranh giành quyền truy cập vào miền găng Truy cập vào miền găng dựa dấu hiệu (Token based): Việc truy cập vào miền găng điều khiển token Người giữ token có quyền thi hành đoạn găng Tổng quát: Một trạm hệ thống thực thi thao tác sau: 1: Yêu cầu miền găng CS (Critical section); 2: Thi hành CS; 3: Khơng làm CS (thi hành đoạn miền găng.) -8- Tiểu luận Lập trình mạng nâng cao Các thuật tốn nên thỏa mãn u cầu: Khơng bế tắc, Khơng đói, cơng (các yêu cầu thi hành theo thứ tự chúng tạo), dung thứ lỗi (có thể hoạt động có cố nhiều trạm) Một số thông số: - Số thông điệp/yêu cầu miền găng - sd (trễ đồng bộ): thời gian thời điểm kết thúc miền găng bắt đầu miền găng - Thời gian đáp ứng, đo từ thông điệp yêu cầu miền găng gửi miền găng thi hành - Thông lượng hệ thống: tỷ lệ mà hệ thống thi hành miền găng - Thông lượng = 1/(sd + thời gian thi hành trung bình E miền găng) Hoạt động với tải: - Với tải thấp, số miền găng thi hành Khi tiến trình muốn vào miền găng, thường cấp quyền sau thi hành thuật toán loại trừ tương hỗ Đối với trường hợp hợp tải cao nặng, ln ln có u cầu miền găng phải chờ đợi Ngay trạm kết thúc miền găng mình, cố gắng khởi tạo miền găng khác Nếu gọi E thời gian trung bình thi hành miền găng, T độ trễ thơng điệp trung bình, hầu hết thuật toán, thời gian cho trường hợp tốt có cận (2T + E) Điều cho phép trao đổi thơng điệp vịng trịn cộng với thi hành miền găng Thời gian cho trường hợp xấu nhiều 4.1.1.3 Sắp xếp kiểu đóng dấu a Khái niệm đồng hồ Logic: Đối với nhiều ứng dụng, kiện không cần lập lịch hay đồng thời gian thực Nó thứ tự kiện hoạt động liên quan Trong trường hợp vậy, đồng hồ logic dùng để biểu thị thứ tự thông tin cho kiện, đặc biệt hệ phân tán, khó giữ đồng hồ vật lý chung tất tiến trình xếp Đồng hồ logic Lamport khái niệm để xếp tiến trình kiện hệ phân tán -9- Tiểu luận Lập trình mạng nâng cao b Trật tự phần: Trong thực tế số hệ thống đồng hóa địi hỏi trật tự phần Chính vậy, trật tự hóa phần kiện mà tiến trình cần phải đồng vấn đề cần phải quan tâm Giả sử ta xác định trật tự kiện hệ phân tán nhờ vào quan hệ “có trước” (→) hay “ở trước”: Trật tự kiện xác định dựa nguyên tắc sau: i Nếu a b hai kiện trạm P a xảy trước b ta có a→b (trật tự cục bộ) a b P Hình 1.3 ( a→ b): trật tự cục ii Nếu a phát thông điệp từ trạm P đến trạm Q b nhận thơng điệp ta có a→b (nhân-quả) P a b Q c Hình 1.4 ( a→ b): trật tự Nhân - Quả iii Nếu a→b b→c, a→c (bắc cầu) P P Q a Q b c R Hình 1.5 ( a→ c): trật tự bắc cầu p1 q1 r1 q2 r2 p2 q3 p3 q4 r3 q5 r4 p4 -q6 10 Tiểu luận Lập trình mạng nâng cao - Trạm e phát thông điệp m, ghi dấu dấu thời gian cho thông điệp m gửi đi, Tm = Ce (a) Ci a Ci+1 • (Tm = Ce (a)) - Khi nhận thông điệp m, trạm nhận r cập nhật đồng hồ Cr riêng theo: Cr = Tm + (điều đảm bảo tính nhân-quả theo trật tự phần) (m, Tm,s) Pj Cr Cr = T m + • - Trật tự kiện toàn bộ: Một kiện a sinh trạm i đánh dấu đồng hồ cục Ci, a b hai kiện hai trạm i j ta có quan hệ sau: Ci (a) < Cj (b) a ⇒ b Ci (a) = Cj (b) i < j 4.1.1.5 Các giải thuật loại trừ tương hỗ sở đóng dấu a Thuật tốn Lamport Thuật tốn Lamport (1978) đưa ra, sử dụng chế đóng dấu thời gian cho việc đồng đồng hồ lôgic Các giả định: Chúng giả định mơ hình mạng kết nối hồn tồn tiến trình liên lạc thơng qua kênh FIFO tin cậy Tức là, thông điệp xếp lại theo trật tự khác Các giả định thực thi cách dễ dàng tầng giao vận Các kiểu thông điệp: (REQ, Ci, i): Một yêu cầu cho việc truy cập vào miền găng CS tiến trình Pi Yêu cầu phát cho tất các tiến trình khác (REP, Ci, i): Hồi âm từ tiến trình Pi cho tiến trình Pj Pi nhận yêu cầu từ Pj - 13 - Tiểu luận Lập trình mạng nâng cao (REL, Ci, i): Thơng điệp giải phóng từ Pi thơng báo cho biết rời khỏi CS Thông điệp gửi cho tất tiến trình khác Các biến tiến trình: Ci: Đồng hồ cục Pi, khởi tạo từ qi: Hàng đợi [0 … n-1] chứa thông điệp Thuật tốn: Khi tiến trình trạm Si muốn thi hành đoạn găng, gửi thơng điệp REQ có đánh dấu thời gian cho tất trạm hệ thống kể có trạm Si Mỗi trạm, Si, trì hàng đợi chứa thơng điệp yêu cầu xếp theo trật tự dấu thời gian; đồng hồ logic quan hệ trật tự toàn sử dụng để gắn dấu thời gian Khi trạm nhận yêu cầu, đưa thơng điệp vào hàng đợi u cầu theo thứ tự dấu thời gian gửi thông điệp trả lời REP Nếu cần, quan hệ trật tự toàn sử dụng để phá vỡ ràng buộc Ý tưởng chung tiến trình khơng thể thi hành đoạn găng nó nhận trả lời từ tất trạm khác Tóm lại, trạm thi hành miền găng khi: Nhận thơng điệp trả lời từ tất trạm lại Yêu cầu REQ đỉnh hàng đợi cục Khi trạm hồn thành miền găng nó, gửi khuyến nghị giải phóng REL đến tất trạm Yêu cầu loại khỏi tất hàng đợi thời điểm Nếu trạm khác chờ để thi hành miền găng chúng, trạm bắt đầu thực miền găng Nhận thấy: - Hoạt động: 3(N-1) thông điệp cần thiết cho miền găng thi hành (N-1) thông điệp REQ, (N-1) thông điệp REP (N-1) thông điệp REL - Độ trễ đồng bộ: T (trong T thời gian trung bình truyền thơng điệp) Khi nhận thơng điệp giải phóng, tiến trình bắt đầu thi hành - 14 - Tiểu luận Lập trình mạng nâng cao - Loại trừ tương hỗ đạt được: Các dấu thời gian nhất, tất hàng đợi giữ yêu cầu thứ tự Chỉ tiến trình nằm đỉnh hàng đợi - Khơng đói: Các u cầu cấp quyền dựa sở trật tự dấu thời gian tiến trình gửi thơng điệp REL b Thuật toán Ricart Agrawala: Mục tiêu để giảm việc chuyển thông điệp cách kết hợp thông điệp REL REP.Nếu trạm thi hành miền găng yêu cầu REQ đến, u cầu chờ có dấu thời gian sớm hơn, khơng đáp ứng u cầu Thay vào đó, chờ khỏi miền găng Tại thời điểm đó, gửi thơng điệp hồi âm/giải phóng đến tất yêu cầu chờ Một trạm phải chờ nhận trả lời từ tất trạm cịn lại trước vào miền găng nó, u cầu phải cịn nằm đỉnh hàng đợi Thuật toán yêu cầu 2(N-1) thơng điệp: nửa cho u cầu, nửa cịn lại để trả lời Các thời gian lôgic tạo thuật toán Lamport (Hàng đợi phân tán) Phần yêu cầu Pi: - Gửi thông điệp REQ cho tất tiến trình thuật toán Lamport - Truy cập vào CSi sau Pi nhận thông điệp ACK từ tất tiến trình khác Phần thu Pi nhận thơng điệp REQ từ Pj: a Nếu Pi không muốn truy cập vào miền găng CSi (nó chưa gửi thơng điệp REQ), Pi trả lời với thơng điệp ACK b Nếu Pi miền găng CSi Pi hỗn lại việc hồi âmcho đến rời khỏi miền găng CSi c Nếu Pi muốn truy cập vào miền găng CSi (nó gửi cho tất tiến trình khác thơng điệp REQ), Pi so sánh thời gian lôgic ti thông điệp u cầu với thời gian lơgic tj yêu cầu từ Pj: Nếu ti > tj Pi trả lời với thông điệp ACK - 15 - Tiểu luận Lập trình mạng nâng cao Nếu ti < tj Pi hỗn lại việc hồi âm (cho đến sau Pi kết thúc CS tiếp theo) Các xung đột giải nhờ vào yêu cầu “sớm hơn”, xác định thời gian lôgic Sự xác: - Loại trừ tương hỗ: Giả sử Pi Pj CSi CSj thời điểm Đồng thời, giả sử thời gian lôgic ti yêu cầu Pi nhỏ tj, thời gian lôgic yêu cầu Pj - Khơng đói: Thỏa mãn c Một số Thuật toán khác Thuật toán tập trung (Assertion Based): - Có trạm trạm điều khiển đảm nhiệm việc cung cấp tài nguyên - Các trạm khác yêu cầu miền găng gửi thông điệp đến trạm điều khiển - Trạm điều khiển trì hàng đợi chứa yêu cầu cấp cho trạm quyền truy cập vào miền găng theo - Yêu cầu: thông điệp miền găng CS: Request, Grant, Release - Sd (trễ đồng bộ) = 2T: Release, Grant permission - Thông lượng: 1/(2T + E) Thuật toán Token Based: Một thuật toán dựa token sử dụng token (thông điệp) để xác định tiến trình miền găng Chỉ tiến trình giữ token này, trạm phép thi hành miền găng Thuật toán token đơn giản xếp tất vòng tròn logic (logical circle), dựa địa mạng số sơ đồ trật tự khác Một thông điệp đặc biệt hay token luân chuyển từ trạm đến trạm theo dạng điểm-nối-điểm Khi trạm nhận token này, xác định có cố gắng vào miền găng hay khơng Nếu có giữ token thi hành miền găng; ngược lại, chuyển token đến trạm vòng tròn Khi trạm khỏi miền găng, chuyển token đến trạm Ưu điểm: - 16 - Tiểu luận Lập trình mạng nâng cao - Khơng bế tắc - Khơng đói - Khơng lưu thơng thơng điệp ngoại trừ việc chuyển token (Khơng có thơng điệp Request, Reply, Release) Nhược điểm: - Mất token; điều kiện mà khó chấp nhận; Token có hay khơng, hay thời gian dài để nhận token tiến trình khác thi hành miền găng lâu? - Một trạm bị cố phá vỡ vịng trịn ln chuyển, cần đến thừa nhận Nếu thông điệp khơng đến, xem trạm chết vịng qua - Lưu lượng mạng thêm vào lưu thông token; khoảng thời gian để nhận token mạng lớn - 17 - Tiểu luận Lập trình mạng nâng cao CHƯƠNG XÂY DỰNG HỆ THỐNG ĐA SERVER & CHƯƠNG TRÌNH CÀI ĐẶT THUẬT TỐN SẮP XẾP THEO KIỂU ĐĨNG DẤU 5.1 THUẬT TOÁN LAMPORT DỰA TRÊN ĐỒNG HỒ LOGIC: CHƯƠNG Đồng hồ Logic: Đồng hồ logic Lamport dựa hai vấn đề sau: Các kiện xảy xử lý chúng ln trạng thái trật tự gắn bó cách sử dụng đồng hồ hệ thống (thời gian thực) giá trị đồng hồ hệ thống tăng Các kiện xảy xử lý khác gây tình trạng khơng gắn bó thời gian truyền thông điệp, không lâu sau chúng gắn bó xử lý P j gửi thông điệp cho xử lý P k vào thời gian T Pk khơng thể nhận thơng điệp vào thời gian T trước Tuy nhiên, vấn đề thời gian thực hệ thống không đồng bộ, đặc biệt hệ phân tán, khó giữ đồng hồ hệ thống chung tất tiến trình xếp Trong trường hợp vậy, đồng hồ logic dùng để biểu thị thứ tự thông tin cho kiện, đồng hồ logic Lamport khái niệm để xếp tiến trình kiện hệ phân tán CHƯƠNG Thuật toán Lamport Đặt T giá trị đồng hồ thực Cj(T) giá trị đồng hồ logic xử lý J thời gian T, đồng hồ logic hoạt động theo nguyên tắc sau: Đánh dấu kiện giá trị đồng hồ logic xử lý (với Cj: Đồng hồ logic Pj, khởi tạo từ 0) Nếu có kiện cục xảy ra, tăng giá trị đồng hồ logic lên Khi thông điệp gửi xử lý K, đánh dấu Ck(T) Khi xử lý K nhận thơng điệp có dấu thời gian C’ ta đặt lại đồng hồ logic xử lý K là: max(C’, Ck(T)) + Trong phần này, ta quan tâm đến việc truyền nhận thông điệp, nên nhận thơng điệp thời gian vào giá trị đồng hồ logic thông điệp để thực hiện: - 18 - Tiểu luận Lập trình mạng nâng cao Như thơng điệp ta phải truyền thêm ID xử lý (nếu xếp tiến trình ta phải dùng thêm ID tiến trình) Tổng qt cấu trúc thơng điệp sau: (METHOD, PARAs, Ci, i) Với: o METHOD: phương thức muốn gọi o PARAs: tham số cần truyền cho phương thức o Ci: giá trị đồng hồ logic xử lý i o i: ID xử lý (như Server1, Server2…) CHƯƠNG Xây dựng cấu trúc thông điệp Server: Phân tán thuật toán Lamport kéo theo việc phân tán chức cung cấp mà cần phải điều khiển hàng đợi trạm Do vậy, trạm chuyên cho việc tiếp nhận yêu cầu khuyến nghị giải phóng từ trạm cịn lại Một trật tự giống trạm đạt được, ta áp dụng dấu thông điệp đồng hồ logic truyền đánh số trạm Quan hệ trật tự tồn định nghĩa Thêm vào đó, trạm định việc tham chiếu vào hàng đợi mình, cịn cần phải nhận thơng điệp trạm khẳng định khơng có thơng điệp trước thông điệp khác mà cảnh đường Giả sử : Trạm i mạng gửi cho trạm khác thơng điệp có dạng (T, Hi, i), Hi dấu thơng điệp có nghĩa đồng hồ logic T nhận ba giá trị REQ, REL, ACQ STT Ba giá trị xác định chất ba loại thông điệp khác Thơng điệp Giải thích Thơng điệp REQ phát cho tất trạm, REQ trạm i muốn vào đoạn găng Thông điệp REL phát cho tất trạm, REL trạm i rời khỏi đoạn găng ACQ Thông điệp ACQ gửi trạm j cho trạm j - 19 - Tiểu luận Lập trình mạng nâng cao nhận từ trạm i thơng điệp REQ Khi có thông điệp gởi trạm i đồng thời ghi hàng đợi trạm Giả sử hàng đợi ban đầu chứa thông điệp : Mi = (REL, Hinit , i) Trong đó, i, Hinit thời điểm khởi giống cho tất trạm Mỗi trạm quản lý hàng đợi thơng điệp xếp hồn toàn quan hệ ⇒ theo cặp thông điệp dùng biến trạng thái State để xếp (State =muon : yêu cầu tài nguyên, state=namgiu : sử dụng tài nguyên, State=ranh : rãnh) CHƯƠNG Thuật tốn xếp thơng điệp đến vào giá trị đồng hồ logic Lamport: Thuật tốn mơ tả theo sơ đồ sau : + Khởi tạo hàng đợi, máy tự phát thông điệp Mi = (REL, Hinit , i) + Khi trạm yêu cầu tài nguyên: - Để truy cập vào tài ngun trạm phát thơng điệp yêu cầu Mi (T,Hi,i) đến tất trạm khác đưa yêu cầu vào hàng đợi yêu cầu trạm - Khi trạm j nhận thông điệp u cầu từ i, gởi ngược lại thơng điệp (có chứa đồng hồ logic Hj) cho Sj đưa yêu cầu vào hàng đợi yêu cầu If state =muon then Begin Send M(T,Hj,j) đến trạm i INSERT(Mi,hàngđợi) End + Khi trạm vào đoạn găng: Trạm i nhận thông điệp với đồng hồ logic lớn đồng hồ thời điểm trạm i yêu cầu trạm i vị trí hàng đợi u cầu If (H>Hi ) and (Vị trí M đầu hàng đợi) then state=namgiu + Khi trạm không thực - 20 - Tiểu luận Lập trình mạng nâng cao Xố u cầu gởi thơng điệp giải phóng trạm khác loại bỏ yêu cầu tương ứng If state=ranh then xử lý(các thông điệp hàng đợi) ‘sau xố Send thơng điệp giải phóng đến trạm Những trạm khác xoá yêu cầu hàng đợi 9.1 CÀI ĐẶT THUẬT TOÁN CHƯƠNG 10 Giả lập 03 Server 01 Client: Giả lập 03 Server máy đơn giống 03 Server độc lập chạy môi trường mạng thực Các Server có chức năng: Khi nhận thông điệp: - Server cập nhật giá trị đồng hồ logic - Lưu thơng điệp vào hàng đợi - Sắp xếp lại thơng điệp hàng đợi - Lấy thông điệp đầu hàng đợi khỏi hàng đợi thực - Sau thực thông điệp, Server tự động trả kết Để mô cho cách làm việc mạng Server ta mở đồng thời 03 cửa sổ chương trình, cửa sổ dùng làm Server Giả lập Client cửa sổ khác: - Kết nối với Server - Gửi thông điệp (Cấu trúc thông điệp thay đổi tùy theo yêu cầu toán cụ thể) - Nhận thông điệp trả từ Server cho biết thông điệp tiếp nhận xử lý Trên hình Client Server hiển thị giá trị đồng hồ Logic trạm CHƯƠNG 11 Một số Class chương trình: 11.1.1.1 Lamport.java Module chứa thơng tin phương thức đồng hồ logic import java.net.*; import java.io.*; public class Lamport implements Serializable{ private int c; public Lamport() { c = 0; - 21 - Tiểu luận Lập trình mạng nâng cao } public int getValue() { return c; } public void tick() { c = c + 1; } public void sendAction() { c = c + 1; } public void receiveAction(int sentValue) { if(sentValue > c) c = sentValue + 1; else c = c + 1; } } 11.1.1.2 Message.java Module chứa thông tin phương thức thông điệp trao đổi Server import java.net.*; import java.io.*; public class Message implements Serializable{ // Method of message private String method = ""; // Parameter of message private String param = ""; // ID of computer private String ID = ""; // Computer's Port private int port = 0; // Message's Lamport clock private Lamport lamport = null; public String getMethod(){ return method; - 22 - Tiểu luận Lập trình mạng nâng cao } public void setMethod(String method){ this.method = method; } public String getParam(){ return param; } public void setParam(String param){ this.param = param; } public String getID(){ return ID; } public void setID(String ID){ this.ID = ID; } public int getPort(){ return port; } public void setPort(int port){ this.port = port; } public Lamport getLamport(){ return lamport; } public void setLamport(Lamport lamport){ this.lamport = lamport; } } 11.1.1.3 Sắp xếp thông điệp hàng đợi // Sap xep cac message hang doi dua theo dong ho Lamport private void sort(Vector queue){ Message tmp = new Message(); - 23 - Tiểu luận Lập trình mạng nâng cao for(int i=0; i < queue.size() -1; i++) for(int j=i+1; j < queue.size(); j++) if(((Message)queue.get(j)).getLamport().getValue() > ((Message)queue.get(i)).getLamport().getValue()) { tmp = (Message)queue.get(j); queue.setElementAt(queue.get(i), j); queue.setElementAt(tmp,i); } } CHƯƠNG 12 Hướng dẫn demo chương trình 12.1.1.1 Yêu cầu hệ thống: - Máy tính cài đặt Java version 1.5 - Các file *.java đặt chung thư mục; Bao gồm file kèm theo: Lamport.java; Message.java; Client.java; Server.java - Các file *.bat để compile chạy chương trình; Bao gồm: Compiler.bat: dịch file *.java file *.class tương ứng Server.bat: Chạy chương trình giả lập Server (Chạy 03 lần để giả lập 03 server) Client.bat: Chạy chương trình giả lập Client phát thông điệp đến Server * Lần lượt thực thi file *.bat theo thứ tự nêu 12.1.1.2 Màn hình Demo Server Server - 24 - Server Tiểu luận Lập trình mạng nâng cao Client - 25 - Tiểu luận Lập trình mạng nâng cao KẾT LUẬN Qua trình nghiên cứu thực đề tài, thân tiếp thu nhiều kiến thức hệ phân tán lập trình mơi trường mạng Qua việc thực đề tài, tơi rút số thành hạn chế sau: Kết đạt • Phân tích đầy đủ u cầu tốn • Hiểu rõ thêm chất hệ tin học phân tán, trình gắn bó liệu phương pháp trật tự hóa hệ thống đa Server thông qua việc gửi nhận thơng điệp Client/Server, Server • Xây dựng giao diện trao đổi thông điệp Client 03 server, có monitoring theo dõi q trình gửi nhận thông điệp trực tiếp panel dấu đồng hồ Logic theo thuật tốn Lamport Hạn chế • Chưa mở rộng, áp dụng chương trình vào tốn thực tế đó; ví dụ: bán vé tàu, máy ATM,… Hướng phát triển • Ứng dụng phần code thực làm nhân cho toán thực tế; lĩnh vực quản trị sở liệu phân tán Tóm lại, lần đầu tiếp cận với kỹ thuật lập trình mạng nên kết nghiên cứu chưa thoả mãn mong muốn đặt thân Thầy giáo; Rất mong, nhận trao đổi, hướng dẫn Thầy đồng nghiệp - 26 - Tiểu luận Lập trình mạng nâng cao TÀI LIỆU THAM KHẢO Lê Văn Sơn, Hệ tin học phân tán Nhà xuất Đại học Quốc gia Thành phố Hồ Chí Minh, năm 2002 Lê Văn Sơn, Giáo trình lập trình mạng máy tính Tài liệu giảng dạy cho học viên Cơng nghệ thông tin, trường Đại học Sư phạm Đại học Đà Nẵng, Đà Nẵng, năm 2001 Nguyễn Thúc Hải, Mạng máy tính hệ thống mở Nhà xuất Giáo dục, Hà Nội, năm 1997 Nguyễn Đình Hố, Lí thuyết mạng máy tính Viện Đào tạo Cơng nghệ Thông tin, Đại học Quốc gia Hà Nội, năm 2000 Phạm Minh Việt Trần Công nhượng, Cơ sở kỹ thuật mạng Internet Nhà xuất Giáo dục, Hà Nội, năm 2000 Các tác giả, Thông báo khoa học trường Đại học Chuyên đề Toán - Tin học, Bộ Giáo dục Đào tạo, Hà Nội, năm 2001 - 27 - ... báo cáo trình bày theo yêu cầu Đề tài số 03 ? ?Viết chương trình cài đặt thuật tốn xếp theo kiểu đóng dấu? ?? danh mục “Đề tài tiểu luận tập mơn Lập trình mạng nâng cao” PGS TS Lê Văn Sơn, bao gồm: Chương. .. gian để nhận token mạng lớn - 17 - Tiểu luận Lập trình mạng nâng cao CHƯƠNG XÂY DỰNG HỆ THỐNG ĐA SERVER & CHƯƠNG TRÌNH CÀI ĐẶT THUẬT TỐN SẮP XẾP THEO KIỂU ĐĨNG DẤU 5.1 THUẬT TOÁN LAMPORT DỰA... 11 4.1.1.5.Các giải thuật loại trừ tương hỗ sở đóng dấu 13 CHƯƠNG XÂY DỰNG HỆ THỐNG ĐA SERVER & CHƯƠNG TRÌNH CÀI ĐẶT THUẬT TỐN SẮP XẾP THEO KIỂU ĐÓNG DẤU 18 5.1 THUẬT TOÁN LAMPORT DỰA TRÊN