Tải bản đầy đủ (.doc) (26 trang)

Tiểu luận môn hệ phân tán CƠ CHẾ ĐIỀU KHIỂN VIỆC THỰC HIỆN TỪ XA VÀ VÍ DỤ MINH HỌA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (222.66 KB, 26 trang )

ĐẠ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 :


1. Trao đổi giữa hai tiến trình.
2. Trao đổi giữa n tiến trình (n>2).
Em xin chân thành cảm ơn thầy PGS.TS. Lê Văn Sơn đã hướng dẫn và cung
cấp kiến thức và tài liệu để em có thể hoàn thành tiểu luận này.
Học viên thực hiện
Tôn Thất Huy
2
MỤC LỤC

CƠ CHẾ ĐIỀU KHIỂN VIỆC THỰC HIỆN TỪ XA VÀ VÍ DỤ MINH HỌA 1
GIẢI THUẬT ĐẢM BẢO VIỆC LIÊN LẠC GIỮA CÁC TIẾN TRÌNH 1
LỜI MỞ ĐẦU 2
CƠ SỞ LÝ THUYẾT 4
Điều khiển truy cập từ xa 4
I. Yêu cầu từ xa 4
II. Đăng ký từ xa 5
VÍ DỤ ỨNG DỤNG THỰC HIỆN TỪ XA 10
I. Giới thiệu hệ thống thi trắc nghiệm qua mạng 10
Hệ thống thi trắc nghiệm qua mạng là một hệ thống sử dụng kết nối giữa máy
chủ Server tới các máy trạm Client được đặt ở những nơi khác nhau cùng sử
dụng chương trình thi trắc nghiệm qua mạng. Ưu điểm của hệ thống là: 10
II. Mô hình Client-Server 10
.II.1. Giới thiệu 10
.II.2. Client 12
.II.3. Server 12
III. Cơ chế điều khiển việc thực hiện từ xa 13
IV. Bài toán minh họa 13
.IV.1. Mô tả 13
.IV.2. Giải quyết yêu cầu từ xa 14
.IV.3. Thực hiện đăng ký từ xa 14

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à

tên duy nhất và không được tùy tiện thay đổi.
 Sau khi đã trỏ đúng vào địa chỉ chứa thông tin, hệ phải có khả năng tiếp
nhận và ghi lại các yêu cầu chỉ dẫn.
 Biên dịch các yêu cầu này thành dạng lệnh có thể thực hiện được để có
thể truy tìm thông tin.
 Thực hiện công việc mang tính cục bộ hệ thống như: kiểm tra quyền truy
cập thông tin, thống kê số lượng người truy cập, lập hóa đơn, thanh
toán…
 Nếu tìm được thông tin theo yêu cầu thì gửi nó cho hệ thống yêu cầu.
Sau đây là cơ chế hoạt động có thể cài đặt trong A và B theo mô hình
Client/Server:
Hệ thống A Hệ thống B
Phatyeucau(B,yc)
Nhanlai(kq)
Lặp lại
Nhanyeucau(s, nh)
Nếu (yêu cầu hợp thức) thì
Bắt đầu
Tracuucsdl
4
Thongke
Guiketqua (s, kq)
Kết thúc
Nếu không
Guithongbao (s,tb)
Cho đến khi đúng
Trường hợp tra cứu vừa nêu là đơn giản bởi vì phép toán diễn ra độc lập. Có
rất nhiều trường hợp phức tạp hơn, trong đó một phép tra cứu lại phụ thuộc vào các
phép xử lý khác trước đó. Đây là giao dịch không thể tiến hành bằng một lệnh hoặc
là một hàm mà phải được tiến hành bằng thủ tục truy vấn. Thủ tục này có khả năng

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ứa
bảng
phương
tiện
vận
chuyển
Hình 3. Đăng ký từ xa
Ta cũng cần phải lưu ý là việc hợp đồng phương tiện chuyên chở phải khớp
với nhau trong cùng khoảng thời gian. Hiện tượng đó cho phép ta liên tưởng đến sự
gắn bó dữ liệu (Coherence) trong khi ta nghiên cứu hệ điều hành cho các hệ tập
trung.
Trong CSDL của hệ cục bộ thành phố B chứa các thông tin về hàng hóa, còn
phương tiện vận tải lại chứa trong CSDL của hệ cục bộ thành phố C. Việc đăng ký
(ký hợp đồng) được tiến hành xuất phát từ khách hàng ở thành phố A ngay trên hệ
cục bộ của bộ phận tại thành phố này.
Để đáp ứng yêu cầu đăng ký từ xa vừa nêu trên, ta có thể cài đặt tại hệ cục
bộ ở A một đoạn chương trình như sau:
Đoạn chương trình trên cho thấy rằng sau khi nhận được thông tin về trạng
thái hàng hóa tại B và phương tiện vận tải tại C chương trình sẽ lần lượt thực hiện
các lệnh sau:
1. Đăng ký sơ bộ mua hàng tại B trong ngày t.
2. Nếu việc đăng ký đó thành công thì đăng ký tiếp phương tiện vận tải tại C.
3. Lặp lại cho đến khi hết thời hạn cho phép.
Khi thực hiện chương trình tại A sẽ kích hoạt việc thực hiện chương trình ở
B. Tương tự như vậy, khi ta thực hiện chương trình đăng ký từ B sẽ là nguyên nhân
của việc thực hiện chương trình tại C.
6

t:= ngay_dau_tien
Ok:= False

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:

7

De_nghi(B,DS(hh,t),danhsach(pt,t)) {B cung cấp hàng hóa và phương tiện }
Tra_loi (bang(hh1,pt1,t))
t:=ngay_dau_tien
Ok:=false
Chừng nào (t<=Ngay_cuoi_cung) và (Not Ok) thực hiện
Bắt đầu
dang_ky_hang_hoa(AB,hh1,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


then_cai(B)

mo_then_cai(B)

Hay nói cách khác là ta áp dụng nguyên lý loại trừ tương hỗ giống trong lĩnh
vực hệ điều hành các máy tính tập trung. Tất cả các truy cập vào trạm dữ liệu từ
trạm A cần phải đảm bảo được bao bởi then_cai(A) và mo_then_cai(A) và tương tự
như vậy tại C bằng then_cai(C) và mo_then_cai(C). Do đó, việc gọi thủ tục
dang_ky_hang_hoa(AB,hhl,t) sẽ đồng bộ dữ liệu ngay cả trên trạm cục bộ A và
đương nhiên trạm này cũng được đóng khung.
Việc tổ chức đăng ký từ xa như trên cũng đặt ra cho chúng ta nhiều vấn đề
cần phải giải quyết. Sau đây, ta sẽ xem xét các hệ quả đó.

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

sự tránh được bế tắc.
3. Bây giờ ta giả sử rằng HKDTX cho phép hợp đồng ở cả hai thành phố A
và B. Ta có thể gặp bế tắc dữ liệu liên quan đến hàng hóa. Một trong những biện
pháp phòng chống hiện tượng nêu trên là đặt toàn bộ chương trình đăng ký hợp
đồng vào đoạn găng trải đến tận tất cả các trạm có liên quan. Nhưng biện pháp này
tỏ ra không hiệu quả nhiều và rất tốn kém. Người ta cũng đã nghiên cứu một vài
giải pháp cho phép thực hiện song song các chương trình đăng ký mua bán hàng
hóa.
Điểm chung nhất của các giải pháp này là:
 Phát hiện xung đột trong hệ.
 Loại bỏ ra khỏi quá trình thực hiện các chương trình phát sinh xung đột.
 Cho phép tái lập lại việc thực hiện các chương trình bị loại bỏ do xung
đột
 Đề phòng trường hợp một yêu cầu nào đó phải chờ vô thời hạn mà
không được đáp ứng.
9
CHƯƠNG II
VÍ DỤ ỨNG DỤNG THỰC HIỆN TỪ XA
Trong phần này chủ yếu là vận dụng phần lý thuyết về vấn đề điều
khiển từ xa đã nêu trong chương I (ví dụ Hệ kinh doanh từ xa (HKDTX) trong
Thương mại điện tử) để ứng dụng minh họa về cơ chế điều khiển việc thực hiện
từ xa vào việc xây dựng hệ thống thi trắc nghiệm qua mạng tại trung tâm tin
học liên kết với Trung tâm tin học trường Đại học Bách khoa.
I. Giới thiệu hệ thống thi trắc nghiệm qua mạng
Hệ thống thi trắc nghiệm qua mạng là một hệ thống sử dụng kết nối giữa
máy chủ Server tới các máy trạm Client được đặt ở những nơi khác nhau
cùng sử dụng chương trình thi trắc nghiệm qua mạng. Ưu điểm của hệ thống
là:
 Quản lý ngân hàng đề thi dễ dàng.
 Hỗ trợ quá trình làm bộ đề thi cho nhiều chuyên ngành khác nhau.

 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

thời điểm thì gọi đó là Server lặp.
 Khi Server có thể phục vụ đồng thời nhiều yêu cầu từ Client
gởi đến gọi đó là Server đồng thời.
Client/Server là mô hình tổng quát nhất, trên thực tế thì một Server có thể
được nối tới nhiều Server khác nhằm làm việc hiệu quả hơn. Khi nhận được một
yêu cầu từ Client, Server này có thể gửi tiếp yêu cầu vừa nhận được cho Server
khác ví dụ như Database Server vì bản thân nó không thể xử lý yêu cầu này được.
Máy Server có thể thi hành các nhiệm vụ đơn giản hoặc phức tạp.
Ví dụ như một máy chủ trả lời thời gian hiện tại trong ngày, khi một máy
Client yêu cầu lấy thông tin về thời gian nó sẽ phải gửi một yêu cầu theo một tiêu
chuẩn do Server định ra, nếu yêu cầu được chấp nhận thì máy Server sẽ trả về thông
tin mà Client yêu cầu. Có rất nhiều các dịch vụ Server trên mạng nhưng nó đều hoạt
động theo nguyên lý là nhận các yêu cầu từ Client sau đó xử lý và trả kết quả cho
client yêu cầu. Thông thường chương trình Server và Client được thi hành trên hai
máy khác nhau. Cho dù lúc nào Server cũng ở trạng thái sẵn sàng chờ nhận yêu cầu
từ Client nhưng trên thực tế một tiến trình liên tác qua lại (interaction) giữa Client
và Server lại bắt đầu ở phía Client, khi mà Client gửi tín hiệu yêu cầu tới Server.
Các chương trình Server thường đều thi hành ở mức ứng dụng (tầng ứng dụng của
mạng).
Sự thuận lợi của phương pháp này là nó có thể làm việc trên bất cứ một
mạng máy tính nào có hỗ trợ giao thức truyền thông chuẩn cụ thể ở đây là giao thức
TCP/IP. Với các giao thức chuẩn này cũng giúp cho các nhà sản xuất có thể tích
hợp nhiều sản phẩm khác nhau của họ lên mạng mà không gặp phải khó khăn gì.
Với các chuẩn này thì các chương trình Server cho một dịch vụ nào đấy có thể thi
11
hành trên một hệ thống chia sẻ thời gian (timesharing system) với nhiều chương
trình và dịch vụ khác hoặc nó có thể chạy trên chính một máy tính các nhân bình
thường. Có thể có nhiều chương Server cùng làm một dịch vụ, chúng có thể nằm
trên nhiều máy tính hoặc một máy tính.
.II.2. Client

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

dụng này không làm hỏng ứng dụng khác. Tính đa nhiệm đảm bảo một tiến trình
không sử dụng toàn bộ tài nguyên hệ thống. Server như là một nhà cung cấp dịch vụ
cho các Clients yêu cầu tới khi cần, các dịch vụ như cơ sở dữ liệu, in ấn, truyền file,
hệ thống Các ứng dụng Server cung cấp các dịch vụ mang tính chức năng để hỗ
trợ cho các hoạt động trên các máy Clients có hiệu quả hơn.
12
III.Cơ chế điều khiển việc thực hiện từ xa
Trong mô hình Cilent/Server, các bước cơ bản của việc thực hiện từ xa:
 Client gởi yêu cầu cho Server
 Server tiếp nhận, xử lý yêu cầu từ Client gởi lên
 Server trả lời lại cho Client


Hình 2. Quá trình truy cập từ xa
IV. Bài toán minh họa
.IV.1. Mô tả
Bài toán minh họa được mô tả ở đây là một phần trong chương trình đang
thực hiện của em về việc xây dựng hệ thống thi trắc nghiệm trên mạng liên kết với
Trung tâm Tin học trường Đại học Bách khoa Đà Nẵng.
Hiện nay, trung tâm tin học này là nơi tổ chức cho các học viên học và thi
lấy chứng chỉ kỹ thuật viên tin học, và hình thức thi cử lấy bằng là qua mạng
internet. Việc tổ chức thi tại trung tâm phải được thông báo cho trường Đại học
Bách Khoa Đà Nẵng được biết và việc quản lý ngân hàng đề thi cũng như việc ra đề
thi là do trường Bách Khoa quản lý.
Thông qua chương trình thi trắc nghiệm, mỗi thí sinh sẽ được cấp một mã số
duy nhất để đăng nhập tại máy Client ở trung tâm tin học và chương trình thi trắc
nghiệm sẽ lấy đề thi được đặt tại máy Server tại trường Bách Khoa Đà Nẵng và sau
đó sẽ tải về máy của các thí sinh.
Chương trình thi trắc nghiệm qua mạng có các chức năng cơ bản như sau:
 Cập nhật ngân hàng đề thi.

 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

Xacnhanyeucau
Guiketqua (s, kq)
Kết thúc
Nếu không
Guithongbao (s,tb)
Cho đến khi đúng
Phía Client sử dụng hàm nguyên thủy phatyeucau(B,yc) để gửi yêu cầu cho
Server, chờ cho Server xử lý yêu cầu. Hàm nhanlai(ketqua) sẽ được sử dụng để trả
lời cho Client biết.
Phía Server, cài đặt đặt thủ tục gồm các hàm nguyên thủy:
 nhanyeucau(s,dethi): nhận yêu cầu cấp đề thi.
 tracuucsdl: tra cứu thông tin trong cơ sở dữ liệu
 xacnhanyeucau: xác nhận yêu cầu gởi đến
 guiketqua(s,kq) hay guithongbao(s,thongbao): trả lời cho Client biết.
.IV.3. Thực hiện đăng ký từ xa
Từ ví dụ trên ta xét đến trường hợp: trong mỗi kỳ thi, sau khi kết thúc bài
làm, học viên tại trung tâm tin học (A) phải gửi thông tin bài làm của mình đến máy
14
chủ. Sau khi Server tại trung tâm tin học tại trường ĐH Bách Khoa Đà Nẵng (B)
nhận được yêu cầu thì sẽ xem xét và tra cứu trong cơ sở dữ liệu, sau cùng gửi lại kết
quả cho phía Client.
Việc thực hiện đăng ký từ xa đã được nêu như trên ta có thể cài đặt tại máy
Client trung tâm tin học như sau:
Đoạn chương trình trên cho thấy rằng sau khi nhận được thông tin về việc
đăng ký lưu kết quả bài làm tại B chương trình sẽ lần lượt thực hiện các lệnh sau:
1. Đăng ký sơ bộ gửi bài làm của học viên tại B.
2. Nếu việc đăng ký đó thành công thì lưu vào csdl và đăng ký tiếp tục được
xem xét
3. Lặp lại cho đến khi kết thúc.
Đoạn chương trình trên chỉ là ví dụ minh họa cho bài toán ứng dụng việc

đă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

với công việc nhận một thông điệp, gửi một thông điệp được thể hiện dưới hai dạng
như sau:
 Dạng không treo: Tiến trình gửi thông điệp tiếp tục thực hiện các công
việc của nó.
 Dạng treo: Tiến trình gửi thông điệp chờ nhận lời khẳng định (confirm)
từ phía nhận đang ở trong trạng thái sẵn sàng nhận.
II. Bản chất của các thông điệp
Một thông điệp nào đó sử dụng có hiệu quả trong quá trình xử lý truyền
thông được xem như là một dãy các ký tự có cấu trúc thống nhất được trạm phát
truyền đi và trạm nhận có thể hiểu được.
Xét trên góc độ ngôn ngữ lập trình, việc cải tiến các hàm nguyên thuỷ (sơ
cấp) chính là gắn kiểu dữ liệu cho mỗi loại thông điệp, nhờ đó mà người lập trình có
thể kiểm tra tính tương thích giữa thông điệp gửi đi và thông điệp nhận được.
Nhằm đảm bảo một cuộc trao đổi thật gắn bó giữa các tiến trình với nhau,
bên nhận cần phải có khả năng phân loại và lựa chọn giữa các thông điệp gửi đến
trong hộp thư của mình, các thông điệp cần phải được xử lý theo đúng chức năng
riêng biệt của nó.
16
Ta sẽ thể hiện việc chờ đợi một thông điệp và khả năng lựa chọn này theo
dạng sau:
Nếu có một thông điệp đến mà nội dung của nó thuộc vào kiểu1 thì việc xử
lý được tiến hành theo xử lý 1; tương tự như vậy ta có kiểu 2, kiểu 3… sẽ được xử lý
theo xử lý 2, xử lý 3…
III.Lai lịch (định danh) của các tiến trình
Các dạng hàm nguyên thuỷ liên lạc và các khả năng của nó sẽ thay đổi dựa
vào việc xác định chính xác hay không lai lịch của tiến trình liên lạc với nó.
Ở đây, ta sẽ giới thiệu các hình thức phổ biến nhất dựa vào sự minh hoạ
trong ứng dụng thương mại điện tử. Ta sẽ tìm cách biểu diễn tiến trình truyvan1
thuộc loại server, trong điều kiện có hai tiến trình có nhu cầu thông tin về giá cả là
phongvan1 và phongvan2.

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



Chấm dứt phongvan2
Tiến trình truyvan1
Vòng lặp:
Lựa chọn:
mahh= ChoThongDiep(phongvan1)
gia=…
GuiThongDiep(gia,phongvan1)
Hoặc
mahh= ChoThongDiep(phongvan2)
gia=…
GuiThongDiep(gia,phongvan2)
Chấm dứt lựa chọn
Chấm dứt vòng lặp
Chấm dứt tiến trình truyvan1
Một vài lưu ý:
Tại đây, lựa chọn được thực hiện căn cứ vào định danh của trạm phát các
thông điệp mà loại của nó là loại của biến mahh.
Kiểu biểu thức này thường áp dụng trong hệ CSP cho phép kiểm tra sự tồn
tại của tiến trình liên kết khi dịch. Ngược lại, viết một vài thuật toán thường gặp
như tiến trình đánh thức chẳng hạn là rất nặng nề bởi vì khi đó tiến trình truyvan1
cần phải thực hiện công việc lựa chọn mã hàng hoá của tiến trình liên kết với nó,
ngoài ra nó còn phải xác định được tất cả các tiến trình gửi thông điệp cho nó.
2. Để giải bài toán vừa nêu, ta cần phải xây dựng hàm nguyên thuỷ (hàm sơ
cấp) tiếp nhận khác mà không cần phân biệt định danh của tiến trình phát.
Ví dụ:
Trong ví dụ này, truyvan1 chấp nhận các thông điệp từ bất kỳ tiến trình nào
miễn là kiểu của chúng là kiểu mahh.
3. Khi ta sử dụng hàm sơ cấp như vậy thì cũng phải biết lai lịch của tiến trình
gửi để trường hợp cần thiết có thể liên lạc được với nhau. Một trường hợp tổng quát
là hàm nguyên thuỷ nhận cần phải sinh tên của tiến trình đã phát thông điệp. Tên

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



ten=GuiThongDiep(mahh,truyvan1)
gia= ChoTraLoi(ten)
Kết thúc tiến trình phongvan1
Tiến trình truyvan1
Vòng lặp
(ten,mahh)=ChoThongBao
gia=…
GuiTraLoi(gia,ten)
Kết thúc vòng lặp
Kết thúc tiến trình truyvan1
IV. Các khả năng xử lý lỗi trong khi truyền tin
Lỗi trong quá trình truyền tin có thể được xử lý theo các cách sau đây:
 Ẩn: Người sử dụng không hề biết lỗi phát sinh trong quá trình khai thác.
Các lỗi này thường được khắc phục bên trong chương trình.
 Điều khiển tường minh: Các lỗi được điều khiển tường minh bởi người
lập chương trình. Trong trường hợp này, các tham số của chương trình
cần phải kiểm tra phát hiện lỗi, thời gian cần thiết cho việc khắc phục và
tên thủ tục lỗi khi gọi.
V. Ví dụ minh hoạ
.V.1.Trường hợp 2 tiến trình
Trong trường hợp có hai tiến trình, ta giả sử tiến trình 1 là server, còn
tiến trình 2 là tiến trình yêu cầu.
Ta có sơ đồ như sau:
Hình 7. Trường hợp 2 tiến trình
Trong trường hợp chỉ có hai tiến trình thì không cần phải kiểm tra định danh
của tiến trình gửi mà chỉ xác định loại yêu cầu. Như vậy, khi bên tiến trình 1
(server) nhận được yêu cầu, nó phải có một hàm cơ sở (nguyên thuỷ) để xác định
loại yêu cầu sau đó gửi trả lại kết quả cho tiến trình 2 (tiến trình yêu cầu).

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

……
Vòng lặp:
Y= ChoThongDiep
LoaiYeuCau(Y)
Ketqua=Lấy kết quả từ yêu cầu phân tích được
GuiThongDiep(ketqua)
Kết thúc vòng lặp
……
Chấm dứt tiến trình 1
Tiến trình 2
……
GuiThongDiep(Yêu cầu)
ketqua=ChoThongDiep
……
Chấm dứt tiến trình 2
.V.2.Trường hợp n tiến trình
Ta có sơ đồ như sau:
Hình 8. Trường hợp n tiến trình
Trong trường hợp này, có tất cả n tiến trình liên lạc gắn bó với nhau. Để liên
lạc được thông suốt, khi gửi một thông điệp, một tiến trình thứ i phải gửi luôn cả
định danh của mình để tiến trình nhận biết nhận được từ đâu. Vì vậy, hàm gửi cơ sở
sẽ có dạng như sau:
Đối với phía yêu cầu (tiến trình yêu cầu cần có các hàm cơ sở):
 GuiThongDiep(<Yêu cầu>,<Tên tiến trình>) : để gửi thông điệp đến tiến
trình nhận và hàm chờ trả lời thông điệp cũng có dạng:
 <Kết quả>= ChoTraLoi(<tên tiến trình>) : có nghĩa là chờ trả lời từ tiến
trình <tên tiến trình>
Đối với bên dịch vụ (server) cũng cần có các hàm cơ sở:
23
Tiến trình 2

……
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

có cơ chế đồng bộ nên sẽ có nhiều vấn đề phát sinh cần giải quyết như: khi tiến
trình nhận nhận được cùng lúc hai yêu cầu thì việc cần xử lý yêu cầu nào trước hoặc
xảy ra tình trạng một tiến trình yêu cầu tiến trình server trả lời nhưng chờ mà không
có hồi đáp thì xử lý ra sao? Để giải quyết những vấn đề này cần phải đồng bộ hóa
các tiến trình.
24
Tiến trình thứ i (i>1)
Ten=GuiThongDiep(<yêu cầu>,<Tiến trình 1>)
Kết quả= ChoTraLoi(<Tiến trình 1>)
Kết thúc tiến trình i
Tiến trình 1
Vòng lặp
(<tên tiến trình gửi>,<yêu cầu>)=ChoThongBao
LoaiYeuCau(<Yêucầu>)
;… thao tác trả lời theo yêu cầu vừa phân tích
GuiTraLoi(<kết quả>,<tên tiến trình gửi>)
Kết thúc vòng lặp
Kết thúc tiến trình 1
CHƯƠNG IV
KẾT LUẬN
 Em đã nắm bắt được một phần lý thuyết cơ bản về hệ phân tán.
 Tìm hiểu cơ chế điều khiển việc thực hiện từ xa trong bài toán Hệ kinh
doanh từ xa và ứng dụng mô phỏng trong việc xây dựng Hệ thống thi trắc
nghiệm qua mạng tại Trung tâm tin học trường Đại học Bách khoa – Đại
học Đà Nẵng.
 Tìm hiểu và nêu ra được nguyên lý về cơ chế hợp tác và liên lạc gắn bó
giữa các tiến trình.
 Tuy nhiên, việc đưa ra các mô hình, giải thuật vẫn chưa thật sự cụ thể, chỉ
mang tính nguyên lý, mô phỏng.
 Phần ví dụ bài toán minh họa về xây dựng hệ thống thi trắc nghiệm qua

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

×