LỜI NÓI ĐẦU Công nghệ: bí quyết và giải pháp . Có lẽ đây là câu Slogan đã quá quen thuộc với mọi người trong giai đoạn hiện nay. Và công nghệ thông tin chính là giải pháp cho hầu hết các công việc trong kỷ nguyên này, đó là kỷ nguyên của nền văn minh dựa trên cơ sở của công nghiệp tri thức. Mở đầu cho cuộc cách mạng khoa học và công nghệ này là sự ra đời và phát triển ồ ạt của máy vi tính và các phương tiện xử lý thông tin khác. Cùng với sự phát triển nhanh chóng số lượng máy vi tính cũng như nhu cầu trao đổi thông tin trong mọi hoạt động xã hội loài người đòi hỏi sự phát triển đồng bộ các phương pháp truyền thông. Mạng máy tính ra đời làm cho thế giới của chúng ta “phẳng” ra và nhỏ lại. Trên thực tế, một xu hướng kỹ thuật mới được hình thành xu hướng phân tán các thành phần tạo nên hệ tin học theo hướng tiếp cận nơi sử dụng và sản xuất thông tin trên cơ sở mạng máy tính. Song để khai thác có hiệu quả toàn bộ hệ thống, vấn đề quan trọng hàng đầu cần phải tính đến là các tài nguyên và chiến lược khai thác, sử dụng chúng một cách tối ưu nhất. Bản thân người sử dụng thuần tuý không thể tự xây dựng nên chiến lược đó được, mà nó là chức năng chủ yếu của các hệ thống tin học phân tán đồng thời cũng chính là đối tượng nghiên cứu của báo cáo này. Phạm vi và nhiệm vụ nghiên cứu của đề tài là nghiên cứu vấn đề đồng bộ hóa thời gian, thuật toán lamport cải tiến, thiết kế đa server theo kiểu ngang hàng có khả năng phát và nhận thông điệp, xây dựng cấu trúc của các thông điệp, xây dựng chương trình sắp xếp các thông điệp đến căn cứ vào giá trị của đồng hồ lamport và chương trình giám sát trình tự sắp xếp tại các server trên màn hình. Về mặt bố cục, ngoài phần mở đầu, tài liệu tham khảo và mục lục, báo cáo được chia làm các phần sau: Cở sở lý thuyết. Đồng bộ hoá thời gian trong hệ phân tán. Cài đặt thuật toán Lamport trên n Server. Kết luận. Chân thành cám ơn Thầy giáo PGS.TS. Lê Văn Sơn và anh Đặng Hùng Vĩ đã định hướng và cung cấp kiến thức và tài liệu để tôi hoàn thành báo cáo này. Do thời gian và kiến thức hạn chế nên đề tài chắc không tránh khỏi sai sót. Kính mong sự góp ý của Thầy giáo hướng dẫn và các bạn đồng môn.
Đề tài !" !" #$%&''(%)* #$%&''(%)* &+&+$,&! %/0123%2 45%2647%48 92-:2;1<=8>?%2@9AA Đà Nẵng, tháng 3 năm 2010 BCD Công nghệbí quyết và giải pháp !"#$%!%!&'!( )'*#+,#- .,'.'/ 01! 2'.,'*34! 5 34!6#789#'*: ;<6#.,'*'=><1!!(+3# ., ;9*#) ''*?@+'6#'/ :',ABC'.'3 D;9''*?#;EF'/G!1!'*#H '.''*+'(A$( )IJ;9''*?@K( :'*!7'.>+'/*#) '2 6# L'# “phẳng”*# J+ M*'9'25('A!3N'!O'FP' A!' ' 1'+,''&'2O:;BQ ;0A!R''.''* :;<+'/"?3#',!%!0' K(,'E5R7%!#'* 1!10'/2 ' ! 2F3#'5;BQL(' 'E!R'S0');BQ'!1'!C3.'?'9A92 FF5 =862!6#,'E''@') G/ E'F=!6#K T+ ,Q=!6#7' =!R7@K(#') #5'!O''#*'0'25'2'32#;&*&*'&3?!# 308 ' O'.,5A9R!'*L6#'.,5A9:'*P ;UA2'.,28= '*V6#@@#*' :'*P ;''*P'9;UA2'+;&*&*'* P -7W'KEQ5 1<1!5' ,!'#30 QQ5KF# 1;#! <;<C'!2' X@K(')#'*,' W''!O''#*''*"&*&* Y2'!O ' :M1T"M"-8": #XWD-Z$V !R32'= ' ,!?'. ' K [')# 32'=+27' U3.'*3J;#;'Y/ ;9C6#M1 K+@. '9, Tiểu luận môn Lập trình mạng ! !&EFG I.Các khái niệm cơ bản A+AH>2I%/>J%2;1 ,'E'\] ,'EK#@#1:K0 K2L%10%/\] K2L%<M<\] UK^!:#! 308ABC'.','E' @K#'9'?1=5175^,! A+NH>J%2;1K27%>=% ,'' ,'E !"#$%%X7! _K,'('A!'37&''/''*7!K(AB C#ABC6#,'E#K(ABC ,''IJ,'E1=6#P0'*#KVK(Q K(K(ABC'*#H#!'.%!#,'E)'*!73#! %!#5,'+5!Q5K!;'*#H5 A+*JO%>PQ%2 M2'*P\T*&;;] 3,3%!&'!( E'F=!6# ,7! M*,''#`A&A_' KH;!W?+'( '*! O6#'2'*P!1!!R' !D! W? o '2'*PFP' 7!3?K<,7!3?!R'Z# 2!'*' 1'##,'+'/5,'O '*!5'?,7! *'2'*P*6#P5'P LGKV;+'*"(6#'2'*P5' o M2'*P :'*P#+:'*P#+'('*, ' E'F62!!1!' !1=#17?'9 ,,6#PM2'*P1' !?''*?-7!'U5'R' 0'2'*P ' !F!R E'F<A# o !C6#,'O'*!'?=! Q'2'*P '9I EK2'U5EA!('5 HVTH: 45%2647%48@ %/0123%2 a Tiểu luận môn Lập trình mạng o Y'2'*PF!R' !'?'9,#52! E 'FFB2'b'*'*K(ABC\]QK(W0BE'F '2'*P%!#,'E)'*!7 o -,!R' !'2'*P'?'9,'&c'*, ' M.%!#,'E!R!' ,'**de#'* M.%!#e#'*QK('*"&*&*df*3;'#'Kg'#2! K0'*+'506#'.'' Q II. Đồng bộ hóa các tiến trình X@K('2'*PF?! %!'*P7!3?'+;983 #!^#'R'0'2'*P3#!L,'+'(V 5 'O I'*;9E3N'!O' N+AR%SM>TU%/>P:%2V.2WKXY1 M*'R'0,'E'5'#10=!.Q6+ ,!%!0?'?@K(#'2'*PM/R'2'7W'!C 3N'!O' 6#R7 '?,<#!:K0;#! a '2'*P3?0'2'*PA!R'''b=Q(O!E'*! O ' !;EF*R'+2#'*!O '.' D!D('L,'F'*!O M:'*# !/6#A!('^#'2'*P!E '*!O ' !D! c'2'*P6#D(',=Q+'('&3?!)*?0 %!2'K '#W'*# 32'%!0#R'X7! _ '8,!8;BQ'2'KV ,!%!0+'(6#:'*P F9 !/6#;9'(':hFO'*P^# '2'*Pg_L'## (! "9 )*^#'2'*PIJ0'*#H'.'%!# +#!M*,'E'O'*!57!F'9,)'!O''+'*b ':h'.%!#K2D'('*('D!M*,' '5'.'1'*#H'.%!#'.,Kg3i'. >(';9+'(UK6#:'*P!R'%!0C'* D(''OF' !`+'F2!'!'6%!'U;#! HVTH: 45%2647%48@ %/0123%2 c Tiểu luận môn Lập trình mạng & Z4J>[1 a K(!RKU'K!(0'9,D('0'!O' c K(!R7!O'R'0'.,''b'2'*P j '.,0FABCD(''*O''9#!'* :'*P!R k!'U!E5R+2;9'2'2!0(''*O''9!R''*'OF '.,6#,M*O''9 '?F'9,'.%!#,F96# '2'*P!Rl1;#!L'#=!(';E:;UA2g AO(''*O''90K0!1!@K(# N+NR%SM/[%\]^_XJH4 UK^,! %!'*P3'9,'*#H'.'%!#+#! '+(' ')?' 'P'*V'2'*P0E#!X??!*m:7UK^ ,!'#A_'K 'K$hA&\M*ano,''-8":pqSXk MT>] N+*P`>>Y>a%/K2L% 1LC*g5'*,'E''O'*!5R7@K(F0 %!2''.%!#:2+'*b':h:2 _;UW'\AO'*O''9] ' ;93,M*'9'i5('/A5(','ER7 7@K(`IJ'*O''9'b1/PO'*O''9'b1^# ;93, '2'*P6#10@K( R710%!#'0%!2' M*,'E'5,@K(`W'*#!R'R7'2'O (''*O''9^#;93,^#'*+3#!5'*O''9`'?,F '.%!#,'*#H'.,#! rrrb2Q%2XJc%>d&cPVcP jaJeJ>2JH4VM<b2Q%2XJc%>d&cPVcP >.PFHK2R' FRO*(*$'*,'E' .P&'d;&*&*M*.P ;(''O'2'*P h'2'*P #'*I (''*P%!0C' !(''OF' ! '* (''OF'2'*P&''*h'2'*P'9,(''Q 1'*!A!R''' !1=W17D!S0' '*P%!0C' !10'*!A!R''' !D!F%!0C K<(''2'*P35PO(';E'2'*Pb# '2'*P&'b# '2'*P ;&*&*'2'*P'*#!1!';&*&*KR'3s3 L1'*! A!R''(''*' !6#;&*&*2!!1! LU'P;&*&*; '9, (F!1! B('='*0)''2'*P&' HVTH: 45%2647%48@ %/0123%2 j Tiểu luận môn Lập trình mạng >.P&'d;&*&*!R(''2O'H%!'?#;t' ! '*,'E'>.P '?F W'Kg*R'7!.'*) 1= 173#!'/F;BQ?+'2'*P &'d;&*&*7!3?!3#! 3.1'2'0K,'^#Lu0 '2'*P&' '2'*P;&*&*7!'?+'*D(''/>(''2 '*P;&*&*'?;BQVQ6#(';&*&*3 >.P'*!7'&'d;&*&*',!RVQk!'*P'*#H ^,!K#@ Truyền một yêu cầu từ tiến trình client tới tiến trình server Yêu cầu được server xử lý Truyền đáp ứng cho client >.P'*!7' %!#2,'*!7#'., ('+@K( #Q'?^#&' ;&*&*M2'*P;&*&*0O'=F'.,F !1!<K('#32 ('*#!1!'*&'0F '+b\KV'J#] K!('2'*P&'<'*+')'3O F=;&*&*B7<KK# >.P&'d;&*&*')F W'9#'*'#':K0 B\;&] O\*&&&] HVTH: 45%2647%48@ %/0123%2 M2'*P#'J# M2'*P#ABC v&;;&&;;#& v&%!&;' &;;#& v&wA&!' f#' &cPVcP XJc%> x Tiểu luận môn Lập trình mạng k!'*P#'2&' ;&*&*'?i*#'&(''*#2(KV 'J#\K3&] 3.KV'J#\K3&] Chế độ bị phong tỏa (blocked): M*2(KV'J#53'2'*P&'W;&*&*'*#,B^,! \;&]5,'9'6#'2'*P;KV'+b'3'2'*PO'*#, O^,!\*&&&] M:'9E'2'*PO^,!52!'2'*P \&'W;&*&*] '*#,O^,!5 '+')?#^,!B''P,'9'6# '2'*PG;KV'+b'3^,!B' Chế độ không bị phong tỏa (non-blocked): M*2( 53'2'*P&'#;&*&*'*#,B^,!'9;95 ,'9'6#'2'*PF'2 3.%!#'2,'2'*P '*#,O^,!#3. M:'9'*)FO^,!53'2'*P'*#,O^,!5; O^,!,5,'9'6#'2'*PF'2 3.%!#' 2,'2'*P '*#,B^,!'2'. *+N=1fJO%>Pg1XJc%>d&cPVcP Mô hình Client/Server XJc%>d&cPVcP2:J>L%/+ Y2'*L&'d;&*&*:0R' 32'*L#'1M*'9'21!2' 32'*L&'d;&*&* 32'*L#'1>('=Q#'1!R7!'*+ ,(''1'*Pi'ER'5'1 '*!7''1!'*^^,! 'O'*!M1'*Pi'.') &'5 '1!'*^^,! ;&*&* 1!2'=Qr'&*&' '&&'5y''O/ 0f&K = Q#'1T1O'*P'*P=Q2'=Q&'d;&*&* A!'2;BQ32'*L M*=Q#'1'*!7'E53EF.,ABCF /#&''*3;&*&*`:0#'*I :'*P3?;'!@ *#^#=Q ^,!Y2'%!0 3.`,!86#=QKV0 ' !+26#T5 3EF^,!'*!7'*+G'8'& HVTH: 45%2647%48@ %/0123%2 n Tiểu luận môn Lập trình mạng Y' K(=QFABC'*('T5=QKU'K!(0!1!7!^ ,!'*3#*#KR'3s32'%!0ABC )D7!!1!^,! G 0,!86#+>('R7')W3E=Q# '1 R7K0'*P`1(''#HJE=QG10'#H +' K(=Q&' ;&*&* XJc%>d&cPVcP\:>L%/ M#'?'*FR76#32'*L&'d;&*&*#'1Kg< *(32'*L' K#'1>('32'*LK#'1'(''1'K,',AB C^,!<V'*/'*!' M&32'*LK#'15('=QF#' K#'1'K,'#!7W' M11!' '1'*Pi')K#@#,@#M1'= #5IF '1'*!##'1',M1'=K#=#^,!1 =QM1'=K#7:K0 :'*P'9,) ?'P 32^,!1'2'M1'*PiO^,! V+??'V"9' K,'^#=8ABC#,$'+;9+','2'32= Q7!#,)DFA9 '*?3# 3. '#H =Q M1'=K#=#^,!1'2'=Q[^,! '?K#@KR'3s !@'.' 5K#@:;<^,!z*##&5"k"&*&*W' ,!q> 9JO%>Pg1%@>L%/ Y2'*L'1F#' '1;#! { M1#,)D%!0C':'6#)D=Q { M1'*PiqV'=?'V#,)D ! 1!6#)DF%!0C'2 { M1',>.P#%!'U',5 { M1VQ+'1!R('=8KH'*F1'2'=Q ' 1\'*!7'.,5h'*F#'] HVTH: 45%2647%48@ %/0123%2 | Tiểu luận môn Lập trình mạng *+*`K>PQ%2K27%>=%VeJK2TU%/>201>PJH4/;J>ah: *+*+Ai%/j4:% v>r (':2_('E'F#+'*('0}## \}##-*'!#>#&]:'=6#('E'F#'@'+'*(' 0}##3\}->] M9R'v>r (':2:'='bA#$F'9, '/F '*.^}##-P}## ('.^O'*PE'F5: O'*P'*v>r :E'F'#'#) :'=7!%!#2E'F *#5v>rI_('&' '?B'('E'F2"&*&*ABC5 E'F G'?FA& '#;E) 'bA#5E'F G^^,!K'* ('E'F'9;9 So sánh giữ gọi phương thức từ xa với các lời gọi thủ tục từ xa :'='bA#3.0 ('3,MO/'*3*#) O'*PE'F17$'? '6'Q'bA#, 'EvT$F;BQ'*7!8 ,#F;BQ M*2'5}## ('.^(O7 _=Q}## '*!7'=Q}###+'*KR'3s1= ,7! h'*F}->"93K,'/^##Q'! vTh'*F#.^5F+ v>r`h'*F=QF2'Kg}## R77.^ ,'E5(';E;93K,'8K0^#vT v>r:'='bA# ,E'F5_:'=R O '*07E'F}##G3?!^,!!'E\*&'&'&] F+'6'Q'bA#3.h'*F3,E'F'.,B (' V Q vT \v&'& T*&!*& #]F K?!i K< . ^ q[v \wA'&*#[#'#v&*&;&'#']+'=K?!i^,! `3?!^ ,!'?FVZ#K<q[v'?'*!7 *+*+N k1S?121l: { h'*F:'='bA#'*E'F'*03#! { h'*FF:'=F'b;&*&*'#&' { M/F.PE'F' .^O'*P}##'&(' '9'*3!'*P^0E'F6#.^O'*P}## { ;93K,'^#.PE'F' .PE'FQ K(3.;93K,' { M+*#=Q'('O('i HVTH: 45%2647%48@ %/0123%2 o Tiểu luận môn Lập trình mạng { [!'*P;9#' 3?!F!RK<.'*)')#+6#7'0 }## { h'*F^0'#2!3#!E'F'bA# { [!'*P.'*)#' 6#}##Kg'*PK0# '*P+ *+*+* 9JO%>Pg1 "93K,'8K0^#E'F'bA# E'FQK( E 'F'bA#g'*('03M.')5'#;EE'FF '*!7:'= '*VE'FF'*07'b:'='. %!#'*!7'&'#2!M! 3. ,3: '= :'=F3.Dg'*('0 -PO5K#:23#!F;BQ?'*!7'#;E: '='bA# O32'%!0'*07'b:'=<A#3?!!'E\'5 K!K&5~]F'*!7'&'#'*V'#2!'E'F'bA# F'*!7+'#2!_'R'0/#O:'= '*E'F'bA#E'F3.'9'#'2'bA#\Z# E 'F3.'9'#'2v&'&]F'*!7'&'#'*VuZ# K0;# 16F'*!7Kg;BQ:2'!1'9#E'!FE'F 3.308'!1'9#'P3.'?F'*!7':'=<A# E'F<A#+'*;&*&*'?FK<E'F#+ '*&'E'F3.0<A#5E'F30'!1'9+'*, 'E&' X?%!'*P'*!7' '*;!E')O'*P5'*!7'^#&' ;&*&*F W''&.P'1P HVTH: 45%2647%48@ %/0123%2 "'!K•"3&&' M#2!'bA# "'!K•"3&&' M#2!'bA# M1#O : '*P3 : '*P6 ,'E v>r 9JO%>Pg1\:>L%/1l: € [...]... Cả hai thuật toán: Thỏa mãn đặc tính loại trừ tương hỗ và không đói − Số lượng các thông điệp vào/ra miền găng: + Lamport: 3(N-1) + Ricart and Agrawala: 2(N-1) HVTH: Huỳnh Xuân Tuy - Hoàng Đức Thịnh 18 Tiểu luận môn Lập trình mạng CHƯƠNG 3 CÀI ĐẶT THUẬT TOÁN LAMPORT TRÊN n SERVER (n > 3) 1.1 Yêu cầu bài toán • Viết chương trình cài đặt thuật toán Lamport trên n SERVER, n>3 • Xây dựng đa server theo... một server trong textbox To Server khi kích nút Send 3 Cách vận hành chương trình: Sau khi kích hoạt xong 4 server, tiếp theo kết nối vào mạng bằng nút Connect Hộp List Servers trong tab Information Servers cho biết những server nào hiện có trên mạng Chương trình được cài đặt dựa trên thuật toán Lamport cải tiến (RicartAgrawala) nên người sử dụng cần xem qua thuật toán để tiện việc khai thác chương trình. .. logic Lamport 3.3 Kết quả chạy chương trình Hình 1 HVTH: Huỳnh Xuân Tuy - Hoàng Đức Thịnh 22 Tiểu luận môn Lập trình mạng Hình 2 Hình 3 Hình 1, Hình 2, Hình 3: Kết quả chạy chương trình khi mới khởi tạo Server chưa kết nối các Servers với nhau HVTH: Huỳnh Xuân Tuy - Hoàng Đức Thịnh 23 Tiểu luận môn Lập trình mạng Hình 4 Hình 4: Kết quả chạy chương trình trao đổi thông tin (manual) giữ hai Server1 và Server2 ... Khắc phục những hạn chế trên - Nghiên cứu thêm các thuật toán tối ưu để đồng bộ hóa các tiến trình - Đề tài này làm cơ sở để có thể xây dựng các chương trình ứng dụng về hệ phân tán vào thực tế HVTH: Huỳnh Xuân Tuy - Hoàng Đức Thịnh 25 Tiểu luận môn Lập trình mạng PHỤ LỤC HƯỚNG DẪN SỬ DỤNG CHƯƠNG TRÌNH 1 Kích hoạt các Server - Chương trình demo, gồm có 4 server hoạt động độc lập trên địa chỉ IP cục bộ:... đa server theo kiểu ngang hàng có khả năng phát và nhận thông điệp - Cài đặt chương trình sắp xếp các thông điệp đến căn cứ vào giá trị của đồng hồ lamport và chương trình giám sát trình tự sắp xếp tại các server trên màn hình trên nền của công cụ lập trình Java Hạn chế Chương trình dừng lại ở mức đáp ứng yêu cầu của đề tài về môn học, còn một số hạn chế nhất định như sau : - Chưa khắc phục được hiện... kích hoạt các server, người sử dụng kích hoạt các file server1 .bat, server2 .bat, server3 .bat và server4 .bat trong thư mục chương trình 2 Các thành phần trên giao diện chương trình: + Các Tab: - Tab Monitoring: thể hiện việc giám sát hoạt động của Server - Tab Information Server: thể hiện thông tin của Server - Tab About: thể hiện thông tin về chương trình và tác giả + Các đối tượng trên màn hình:... Hoàng Đức Thịnh 24 Tiểu luận môn Lập trình mạng KẾT LUẬN Kết quả đạt được - Nắm được một phần lý thuyết cơ bản về hệ phân tán và lập trình mạng phân tán - Tìm hiểu nguyên lý đồng bộ hóa các tiến trình trong hệ tin học phân tán - Nắm được thuật toán đồng bộ hóa các tiến trình Lamport và thuật toán Ricart-Agrawala - Xây dựng cấu trúc của các thông điệp - Thiết kế thành công đa server theo kiểu ngang hàng... trao đổi giữa các server • Xây dựng đoạn chương trình sắp xếp các thông điệp đến căn cứ vào giá trị đồng hồ Lamport • Xây dựng chương trình quan sát trình tự sắp xếp tại các server trên màn hình 1.2 1.2.1 Giải quyết bài toán Hướng giải quyết bài toán Sử dụng thuật toán loại trừ tương hỗ để giải quyết yêu cầu của bài toán Nguyên lý của phương pháp này được khái quát như sau: Một tiến trình nào đó gửi... nào chúng ta có thể thực thi các đồng hồ thỏa mãn Điều kiện Đồng hồ? Bằng thuật toán đóng dấu thời gian của Lamport – cung cấp một tập hợp các quy luật thực thi đơn giản 2.3 Thuật toán đóng dấu thời gian của Lamport Khái quát: + Thuật toán là sự suy rộng của Hàng đợi tập trung cho việc cài đặt phân tán + Thuật toán này được Lamport (1978) đưa ra, nó sử dụng cơ chế đóng dấu thời gian cho việc đồng bộ... Huỳnh Xuân Tuy - Hoàng Đức Thịnh 27 Tiểu luận môn Lập trình mạng TÀI LIỆU THAM KHẢO [1] PGS.TS Lê Văn Sơn, Hệ tin học phân tán, NXB Đại học Quốc Gia, TP HCM [2] TS Lê Văn Sơn – Giáo trình kỹ thuật mạng máy tính – Trường Đại học Bách khoa – Đại học Đà Nẵng - 1994 [3] Phương Lan, Lập trình mạng với Java, Tập 1, 2, NXB Lao động xã hội - 2004 [4] Các tài liệu khác trên internet HVTH: Huỳnh Xuân Tuy - Hoàng