ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
TIỂU LUẬN
Môn: HỆ PHÂN TÁN
Đề tài
• CƠ CHẾ ĐIỀU KHIỂN VIỆC THỰC HIỆN TỪ
XA VÀ VÍ DỤ MINH HỌA
• GIẢI THUẬT ĐẢM BẢO VIỆC LIÊN LẠC GIỮA
CÁC TIẾN TRÌNH
GV hướng dẫn : PGS-TS Lê Văn Sơn
Học viên : Tôn Thất Huy
Chuyên ngành : Khoa Học Máy Tính
Khóa : 10
ĐÀ NẴNG, 07/2014
1
LỜI MỞ ĐẦU
Hệ tin học phân tán là hệ thống rất đa dạng, là vùng tri thức hiện đại đang
được các chuyên gia công nghệ thông tin đặc biệt quan tâm và đổi mới rất nhanh
chóng.
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 cách 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ử. . .
Để ứng dụng phần lý thuyết đã học về Hệ tin học phân tán vào trong đề tài
của tiểu luận, em trình bày hai vấn đề :
Ứng dụng lý thuyết về cơ chế điều khiển việc thực hiện từ xa trong bài toán
Hệ kinh doanh từ xa để mô phỏng một phần nhỏ trong đề án Xây dựng hệ
thống thi trắc nghiệm qua mạng.
Trình bày nguyên lý, giải thuật để giải quyết việc đảm bảo liên lạc gắn bó
giữa các tiến trình với nhau theo hai tình huống :
VẤN ĐỀ ĐẢM BẢO LIÊN LẠC GIỮA CÁC TIẾN TRÌNH TRONG HỆ PHÂN TÁN 16
I. Việc đồng bộ giữa các thực thể trao đổi thông tin qua lại 16
II. Bản chất của các thông điệp 16
III. Lai lịch (định danh) của các tiến trình 17
IV. Các khả năng xử lý lỗi trong khi truyền tin 21
V. Ví dụ minh hoạ 21
.V.1. Trường hợp 2 tiến trình 21
.V.2. Trường hợp n tiến trình 23
KẾT LUẬN 25
TÀI LIỆU THAM KHẢO 26
3
CHƯƠNG I
CƠ SỞ LÝ THUYẾT
Điều khiển truy cập từ xa
Giới thiệu các bước để thực hiện việc điều khiển từ xa thông qua bài toán về
hệ kinh doanh từ xa trong giáo trình hệ tin học phân tán nhằm làm cơ sở để áp dụng
phân tích trình bày trong ví dụ minh họa ở phần sau.
I. Yêu cầu từ xa
Giả sử một khách hàng muốn được cung cấp thông tin và thể hiện yêu cầu
đó qua một truy vấn. Bên kia, sau khi tiếp nhận, việc truy tìm trong cơ sở dữ liệu
được tiến hành. Nếu có thông tin cần tìm thì thông tin đó sẽ được chuyển lại cho
người yêu cầu.
Theo bài toán, ví dụ có một khách ở thành phố A muốn biết thông tin về giá
cả của một mặt hàng do một bộ phận ở thành phố B ở xa quản lý. Để đáp ứng được
yêu cầu này đòi hỏi hệ thống phải có khả năng thực hiện hàng loạt các thao tác
được xác định:
Nhận biết thông tin nằm tại vị trí nào (gọi là vấn đề trỏ thông tin); tức là
phải biến đổi tên của thành phố B thành tên của hệ thống cục bộ quản lý
thông tin của thành phố A để hệ thống viễn thông có thể nhận dạng được
và có thể gửi thông tin đến đúng địa chỉ. Tên của hệ thống cục bộ phải là
liên kết tự động các tra cứu sơ đẳng lại với nhau.
Chương trình truy vấn đầy đủ có thể được cài đặt tại máy Client hoặc tại máy
Server. Hai giải pháp này khác nhau ở bản chất và khối lượng thông tin trao đổi
giữa các trạm với nhau.
Một trong những vấn đề cần phải quan tâm là độ tin cậy của thông tin. Thông
tin là đúng tại thời điểm mà Server đọc nó, nhưng có thể sai khi Client nhận được;
điều này liên quan đến việc làm tươi thông tin trong CSDL. Nói một cách tổng quát
là cần phải có những giải pháp hữu hiệu cho việc truy cập đồng thời vào dữ liệu
dùng chung.
Trong thực tế, những trường hợp nêu trên hoàn toàn có thể diễn ra ví dụ như
có một khách hàng tại A đề nghị mua hàng hóa H tại B và C. Anh ta có thể nhận
được lời chấp nhận với một lượng cụ thể nhưng không có hoặc không đủ tại B và C.
Trong khi truy cập để báo cho khách thì số lượng này cũng vừa được cập nhật. Nói
tóm lại, khách nhận được thông tin mà trên thực tế không còn tồn tại nữa.
II. Đăng ký từ xa
Giả sử rằng có tình huống một khách từ A muốn hợp đồng mua hàng hóa H
tại B và đăng ký phương tiện để chuyên chở đến C theo yêu cầu càng sớm càng tốt
và thực hiện trong một khoảng thời gian xác định. Vậy có những vấn đề khó khăn,
phức tạp nào trong khi thiết kế một hệ phân tán đáp ứng được yêu cầu vừa nêu.
Trước hết, cũng như ứng dụng vừa nêu ta cần phải giải quyết vấn đề tìm tên
trong của hệ quản trị CSDL tại B như thế nào và có thể đề nghị nó thực hiện công
việc đặc biệt nêu trên hay không (ở đây là đăng ký phương tiện).
5
CSDL
CSDL
CSDL CSDL
A
B
C
Chứa bảng hàng hóa
Chừng nào (t<=Ngay_cuoi_cung) và (Not Ok) thực hiện
Bắt đầu
Dang_ky_hang_hoa(AB,t) {Đăng ký sơ bộ}
Nếu (thanh_cong) thì
Bắt đầu
Dang_ky_cho_hang(C,t) {Đăng ký chuyên chở}
Ok:=True
Kết thúc
Nếu không huy_dang_ky(AB,t)
t:=sau(t)
Kết thúc
…
Sau khi xem xét kỹ đoạn chương trình nêu trên, người ta nhận thấy rằng
phương pháp được thể hiện bằng đoạn chương trình trên sẽ có tác dụng chỉ với một
cặp <đăng ký hàng hóa, đăng ký phương tiện> duy nhất. Việc đăng ký như vậy là
đơn trị và khó sử dụng cho công việc thực tế.
Nếu ta vận hành nhiều chương trình cùng một lúc thì hậu quả diễn ra khá
nghiêm trọng. Do việc đăng ký hàng hóa chỉ diễn ra sơ bộ, cho nên nó có thể bị
đăng ký bởi NSD khác. Trong trường hợp đó danh sách hàng hóa mà ta cứ tưởng là
chính thức trở thành hàng hóa ảo.
Nhằm khắc phục tình hình nêu trên, người ta xây dựng chương trình cài đặt
tại hệ cục bộ A theo một kiểu khác như sau:
Rõ ràng, ở đoạn chương trình trên ta có hàm nguyên thủy
de_nghi(B,DS(hh,t), danhsach(pt,t)) cho phép xác định tại B loại hàng hóa theo yêu
cầu, số lượng, ngày chuyên chở đến C và phương tiện chuyên chở… Như vậy, hàm
nguyên thủy dang_ky_hang_hoa(AB,hhl,t) không còn cho kết quả sơ bộ như trước
đây. Giải pháp này cho phép rút ngắn được số lần truy cập và các thông điệp có thể,
nhưng nó chỉ đúng khi mà giữa hai phép tra_loi (bang(hhl,ptl,t)) và
dang_ky_hang_hoa(AB,hhl,t) không có đăng ký nào khác chen vào. Vì thế ta phải
cài then cho đoạn chương trình trên bằng hai động tác:
1. Các yêu cầu hợp đồng mua bán và chuyên chở kiểu như trên diễn ra đồng
thời theo chiều A-B và B-A có thể dẫn đến bế tắc.
Thực tế cho thấy các dãy:
được thực hiện lần lượt trên A và B.
2. Tình hình trên có thể được hoàn thiện nếu loại trừ tổng quát cho việc truy
cập vào dữ liệu của một trạm là không cần thiết. Ta chỉ cần then cài và mở then có
chọn lọc trên các dữ liệu trên các dữ liệu liên quan đến hàng hóa hay phương tiện
vận chuyển.
Như vậy, ta phải đưa tham số mới trong các hàm nguyên thủy Then_cai và
Mo_then_cai nhằm xác định chính xác dữ liệu nào cần phải khống chế khi truy cập.
Chính vì vậy, giải pháp nêu trên cần phải bổ sung thêm:
8
then_cai(B), then_cai(A), then_cai(A), then_cai(B)
Tại A:
[Chương trình tại đây được bao bởi]
Then_cai(hh,B) và Mo_then_cai(hh,B)
Tại B:
[Thủ tục hợp đồng cũng được bao như sau]
Then_cai(hd,A)
Bắt đầu
Dang_ky_hang_hoa(AB,hh,t)
Nếu (Thanh_cong) thì
Bắt đầu
Dang_ky_cho_hang(C,hh,t) {Đăng ký chuyên chở}
Ok:=True
Kết thúc
Nếu không t:=sau(t)
Kết thúc
Mo_then_cai(hd, A)
Như vậy, loại trừ tương hỗ được áp dụng với từng dữ liệu riêng biệt và thực
Tổ chức thi và quản lý kỳ thi dễ dàng và khách quan.
Chấm điểm ngay sau khi học viên kết thúc bài thi của mình.
Lưu trữ tự động bài làm của học viên vào csdl.
Với những đặc điểm nêu trên, thi trắc nghiệm qua mạng được xem là chương
trình sử dụng cơ chế điều khiển việc thực hiện từ xa với các yêu cầu như: tiếp nhận
yêu cầu nhận đề thi từ các máy Client và yêu cầu gửi bài làm của học viên đến máy
chủ Server.
II. Mô hình Client-Server
.II.1. Giới thiệu
Mô hình Client/Server là mô hình tổ chức trao đổi thông tin trong đó mô tả
cách mà các máy tính có thể giao tiếp với nhau theo một phương thức nhất định.
Phương thức này là một chiến lược tổ chức phân cấp mà trong đó có một máy tính
đặc biệt phục vụ các yêu cầu về lưu trữ, xử lý, tính toán tất cả các máy trên mạng.
Kiểu tổ chức tổng quát của mô hình này là một mạng LAN được thiết lập từ nhiều
máy tính khác nhau, trong đó một máy tính gọi là Server. Một chương trình client
chạy từ bất kỳ máy tính nào trong mạng cũng có thể gởi yêu cầu của mình đến
Server, khi server nhận được các yêu cầu này thì nó sẽ thực hiện và gởi kết quả về
cho Client.
10
Hình 1. Mô hình Client/Server
Có nhiều mô hình được sử dụng trong các chương trình mạng nhưng mô
hình Client/Server là mô hình chuẩn. Một Server là một quá trình, quá trình này chờ
sự liên hệ từ một Client. Một phiên làm việc điển hình của mô hình này như sau:
Phía Client gởi một yêu cầu thông qua mạng đến Server để yêu cầu một số
dạng dịch vụ nào đó như lấy tên máy Server, lấy đồng hồ hệ thống, đăng
ký cấp bằng …
Phía Server được khởi động trước trên hệ thống máy tính. Sau khi khởi
động nó sẽ chờ Client liên hệ nó để yêu cầu một số dịch vụ. Quá trình của
Server thành chia ra 2 kiểu:
Khi chỉ có một yêu cầu của Client được Server phục vụ tại một
Trong mô hình Client/Server, người ta còn định nghĩa cụ thể cho một máy
Client là một máy trạm mà chỉ được sử dụng bởi một người dùng với để muốn thể
hiện tính độc lập cho nó. Máy Client có thể sử dụng các hệ điều hành bình thường
như Win9x, DOS, OS/2
Bản thân mỗi một Client cũng đã được tích hợp nhiều chức năng trên hệ điều
hành mà nó chạy, nhưng khi được nối vào một mạng LAN, WAN theo mô hình
Client/Server thì nó còn có thể sử dụng thêm các chức năng do hệ điều hành mạng
cung cấp với nhiều dịch vụ khác nhau (cụ thể là các dịch vụ do các Server trên
mạng này cung cấp), ví dụ như nó có thể yêu cầu lấy dữ liệu từ một Server hay gửi
dữ liệu lên Server đó Thực tế trong các ứng dụng của mô hình Client/Server, các
chức năng hoạt động chính là sự kết hợp giữa Client và Server với sự chia sẻ tài
nguyên, dữ liệu trên cả hai máy.
Trong mô hình Client/Server, Client được coi như là người sử dụng các dịch
vụ trên mạng do một hoặc nhiều máy chủ cung cấp và Server được coi như là người
cung cấp dịch vụ để trả lời các yêu cầu của các Clients. Điều quan trọng là phải hiểu
được vai trò hoạt động của nó trong một mô hình cụ thể, một máy Client trong mô
hình này lại có thể là Server trong một mô hình khác. Ví dụ cụ thể như một máy
trạm làm việc như một Client bình thường trong mạng LAN nhưng đồng thời nó có
thể đóng vai trò như một máy in chủ (printer server) cung cấp dịch vụ in ấn từ xa
cho nhiều người khác (Clients) sử dụng. Client được hiểu như là bề nổi của các dịch
vụ trên mạng, nếu có thông tin vào hoặc ra thì chúng sẽ được hiển thị trên máy
Client.
.II.3. Server
Server còn được định nghĩa như là một máy tính nhiều người sử dụng
(multiuser computer). Vì một Server phải quản lý nhiều yêu cầu từ các Client trên
mạng cho nên nó hoạt động sẽ tốt hơn nếu hệ điều hành của nó là đa nhiệm với các
tính năng hoạt động độc lập song song với nhau như hệ điều hành UNIX,
WINDOWS Server cung cấp và điều khiển các tiến trình truy cập vào tài nguyên
của hệ thống.
Các ứng dụng chạy trên Server phải được tách rời nhau để một lỗi của ứng
Quản lý việc ra đề thi và thi.
Tiếp nhận và xử lý các yêu cầu từ máy Client.
13
Clients
Servers
DATABASES
DATABASES
(1) Gởi yêu cầu
(3) Trả lời
(2) Xử lý yêu cầu
.IV.2. Giải quyết yêu cầu từ xa
Khi tổ chức thi trắc nghiệm tại trung tâm tin học thì quá trình thi được diễn
ra như sau:
Mỗi học viên phải đăng nhập vào chương trình trên máy mình, sau đó
nhập mã số đề thi tương ứng.
Gửi yêu cầu đề thi đến Server đặt tai trường Bách Khoa.
Server tiếp nhận các yêu cầu từ phía các Client.
Server kiểm tra, xử lý và trả lời yêu cầu cho phía Client.
Kết thúc quá trình giao dịch tại đây và đợi các yêu cầu khác từ phía
các Client.
Ta cài đặt trong Client và Server như sau:
Client (A) Server (B)
Phatyeucau(B,yc)
Nhanlai(kq)
Lặp lại
NhanYeucau(s, dethi)
Nếu (yêu cầu hợp thức) thì
Bắt đầu
Tracuucsdl
đăng ký lấy đề thi và đăng ký gửi bài làm của mỗi học viên thông qua chương trình
thi trắc nghiệm ở mức đơn giản.Trong thực tế cần cài đặt lại chức năng của các hàm
nguyên thủy cho phù hợp và cần phải cài then trong các chương trình trên để trách
các trường hợp nhiều tiến trình cùng truy cập vào cùng một dữ liệu.
15
…
t:= yeu_cau_dau_tien
Ok:= False
Chừng nào (t <= yeu_cau_cuoi_cung) và (Not Ok) thực hiện
Bắt đầu
Dang_ky_gui_bai(B,t) {Đăng ký sơ bộ}
Nếu (thanh_cong) thì
Bắt đầu
Ok:=True
Luucsdl(B,t)
Kết thúc
Nếu không huy_dang_ky(B,t)
t:=sau(t)
Kết thúc
…
CHƯƠNG III
VẤN ĐỀ ĐẢM BẢO LIÊN LẠC GIỮA CÁC TIẾN
TRÌNH TRONG HỆ PHÂN TÁN
I. Việc đồng bộ giữa các thực thể trao đổi thông tin qua lại
Có ít nhất là 2 hàm nguyên thuỷ (sơ cấp) cần thiết cho quá trình gửi và nhận
một thông điệp. Để triển khai các hàm này, ta giả thiết có một hộp thư gắn với mỗi
tiến trình mà tại đó các thông điệp được đặt tự động mỗi khi được truyền đến. Tiếp
nhận thông điệp là phép toán tường minh mà theo đó một tiến trình cụ thể có thể
nhận thông điệp và thực hiện công việc xử lý. Nếu một tiến trình nào đó cố gắng lấy
thông điệp từ một hộp thư rỗng, thì nó phải chuyển sang trạng thái chờ. Ngược lại
1. Ta có thể giả định định danh của các tiến trình được ghi nhận theo kiểu
tĩnh ở trong hàm liên lạc cơ sở.
Ví dụ:
Đối với phongvan1:
17
V=ChoThongDiep
Lựa chọn:
Nếu V thuộc kiểu 1 thì xử lý 1
Nếu V thuộc kiểu 2 thì xử lý 2
Nếu V thuộc kiểu n thì xử lý n
Kết thúc lựa chọn
Tiến trình phongvan1
…
…
GuiThongDiep(mahh) cho truyvan1
gia=ChoThongDiep từ truyvan1
…
…
Chấm dứt phongvan1
Đối với phongvan2:
Đối với tiến trình truyvan1:
18
Tiến trình phongvan2
…
…
GuiThongDiep(mahh) cho truyvan1
gia=ChoThongDiep từ truyvan1
…
…
này có thể được sử dụng cho việc truyền sau này.
19
Tiến trình truyvan1
Vòng lặp
mahh=ChoThongDiep
gia= …
…
…
Chấm dứt vòng lặp
Chấm dứt truyvan1
Ví dụ:
Trong ví dụ này, biến ten là tên của tiến trình liên kết gửi đến, đó là một liên
hệ điều khiển.
Sự mở rộng của phương pháp kỹ thuật này thường được sử dụng trong thiết
kế thủ tục hoặc rẽ nhánh song song. Lúc này một số hàm liên lạc sơ cấp cần phải
được xác định. Hàm sơ cấp gửi thông điệp có chứa giá trị là lai lịch của tiến trình
gửi đến. Giá trị này cho phép với trả lời cho yêu cầu tương ứng. Điều đó tạo thuận
lợi cho trường hợp có nhiều thông điệp khác nhau được gởi đến cùng một nơi nhận.
Ví dụ:
Trong trường hợp thủ tục, ta có thể sử dụng hàm cơ sở đặc biệt nhằm thực
hiện gửi và chờ thông điệp.
20
Tiến trình truyvan1
Vòng lặp
(ten,mahh)=ChoThongDiep
gia= …
GuiThongDiep(gia,ten)
Chấm dứt vòng lặp
Chấm dứt truyvan1
Tiến trình phongvan1
Như vậy, ta cần xây dựng 3 hàm cơ sở sau đây:
GuiThongDiep(X): hàm gửi yêu cầu X cho tiến trình khác.
LoaiYeuCau(Y): Xác định, phân loại loại yêu cầu (Y) của tiến trình gửi
tới.
ChoThongDiep: hàm chờ thông điệp của tiến trình gửi tới.
Vậy thuật toán tổng quát ở tiến tiến trình 1 (server) có thể được mô tả
như sau:
21
Tiến trình 1
(Server)
Tiến trình 1
(Server)
Tiến trình 2
(Client)
Tiến trình 2
(Client)
Gửi thông điệp
Chờ kếtquả
Chờ thông điệp
;Xácđịnh loại yêu cầu
;Tìm kết quả
Gửi thông điệp (kết quả)
Thuật toán tổng quát ở tiến tiến trình 2 (tiến trình yêu cầu) có thể được
mô tả như sau:
Như vậy, theo thuật toán này, hai tiến trình sẽ trao đổi tốt với nhau.
Ngoài ra, ta có trường hợp tiến trình yêu cầu (tiến trình 2) gởi yêu cầu cho
bên nhận nhưng không cần sự phúc đáp. Như vậy, đoạn chương trình ở tiến trình
yêu cầu sẽ đơn giản hơn và được mô tả như sau:
22
Tiến trình 1
……
GuiThongDiep(Yêu cầu)
……
Chấm dứt tiến trình 2
Tiến trình 1
(Server)
Tiến trình 1
(Server)
Tiến trình 2
(yêu cầu)
Tiến trình 2
(yêu cầu)
Tiến trình 3
(yêu cầu)
Tiến trình 3
(yêu cầu)
Tiến trình n
(yêu cầu)
Tiến trình n
(yêu cầu)
(<Tên tiến trình>,<yêu cầu>)=ChoThongBao : để chờ thông báo đến từ
một tiến trình cụ thể có tên là <tên tiến trình> và yêu cầu mà nó muốn trả lời.
LoaiYeuCau(<Yêucầu>) : để phân tích yêu cầu mà tiến trình gửi cần đáp
ứng.
GuiTraLoi(<Kết quả>,<Tên tiến trình>) : dùng để gửi kết quả cho tiến
trình yêu cầu.
Như vậy ta có các thuật toán: Đối với phía yêu cầu:
Đối với phía phục vụ (tiến trình 1-server):
Từ thuật toán trên, các tiến trình gửi yêu cầu hay trả lời đều biết mình gửi
yêu cầu đến cho tiến trình nào và gửi yêu cầu trả lời cho ai. Tuy nhiên, ở đây chưa
mạng còn đơn giản, chỉ mang tính mô phỏng bài toán về Hệ kinh doanh
từ xa trong giáo trình Hệ tin học phân tán.
25