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

Tiểu luận hệ phân tán: CƠ CHẾ ĐIỀU KHIỂN VIỆC THỰC HIỆN TỪ XA GIẢI THUẬT ĐẢM BẢO VIỆC LIÊN LẠC GIỮA CÁC TIẾN TRÌNH

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 (212.5 KB, 29 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

: Nguyễn Trọng Ân

Chuyên ngành

: Khoa Học Máy Tính

Khóa

: 30


ĐÀ NẴNG, 06/2015


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 đăng kí tín chỉ 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
Nguyễn Trọng Ân


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...........................................................................................................1
Điều khiển truy cập từ xa............................................................................................1
I. Yêu cầu từ xa..................................................................................................................1
II. Đăng ký từ xa.................................................................................................................3
VÍ DỤ ỨNG DỤNG THỰC HIỆN TỪ XA........................................................................9
I. Giới thiệu hệ thống đăng kí tín chỉ qua mạng.................................................................9

Hệ thống đăng kí tín chỉ 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 đăng kí tín chỉ qua mạng. Ưu điểm của hệ thống là:..........9
II. Mô hình Client-Server...................................................................................................9

.II.1. Giới thiệu...................................................................................................9
III. Cơ chế điều khiển việc thực hiện từ xa......................................................................11
IV. Bài toán minh họa......................................................................................................12

.IV.1. Mô tả.......................................................................................................12
.IV.2. Giải quyết yêu cầu từ xa........................................................................12
.IV.3. Thực hiện đăng ký từ xa........................................................................13
VẤN ĐỀ ĐẢM BẢO LIÊN LẠC GIỮA CÁC TIẾN TRÌNH TRONG HỆ PHÂN TÁN 15
I. Việc đồng bộ giữa các thực thể trao đổi thông tin qua lại.............................................15
II. Bản chất của các thông điệp........................................................................................15
III. Lai lịch (định danh) của các tiến trình........................................................................16
IV. Các khả năng xử lý lỗi trong khi truyền tin................................................................20
V. Ví dụ minh hoạ.............................................................................................................20

.V.1. Trường hợp 2 tiến trình............................................................................20
.V.2. Trường hợp n tiến trình............................................................................22
KẾT LUẬN........................................................................................................................25

TÀI LIỆU THAM KHẢO.................................................................................................26


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.

1



 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
Phatyeucau(B,yc)
Nhanlai(kq)

Hệ thống B
Lặp lại
Nhanyeucau(s, nh)
Nếu (yêu cầu hợp thức) thì
Bắt đầu
Tracuucsdl
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.

2


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).
A
CSDL

Chứa bảng hàng hóa


C

CSDL
CSDL

B

CSDL

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.
3


Để đá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:

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

Đ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.
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ị
4


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

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


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:


then_cai(B)

mo_then_cai(B)


5


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:
then_cai(B), then_cai(A), then_cai(A), then_cai(B)
đượ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:

6


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

7


 Đề 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.

8


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 đăng kí tín chỉ qua mạng ở các trường đại
học.

I. Giới thiệu hệ thống đăng kí tín chỉ qua mạng
Hệ thống đăng kí tín chỉ 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 đăng kí tín chỉ qua mạng. Ưu điểm của hệ thống là:

 Quản lý tín chỉ đã đăng kí dễ dàng.
 Hỗ trợ tư vấn chọn môn cho nhiều ngành khác nhau.
 Đăng kí tín chỉ nhanh, dễ dàng, hoạt động trơn tru.
Với những đặc điểm nêu trên, đăng kí tín chỉ 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 danh sách tín chỉ chưa đăng kí từ các máy Client và yêu cầu gửi danh
sách tín chỉ được đăng kí đế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
9


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.

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
10


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

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

(1) Gởi yêu cầu

Clients

(3) Trả lời

(2) Xử lý yêu cầu
Servers
DATABASES
DATABASES


Hình 2. Quá trình truy cập từ xa
11


IV. Bài toán minh họa
.IV.1. Mô tả
Hiện nay, các trường đại học đều tổ chức học theo quy chế tín chỉ. Các sinh
viên được tự chọn môn học và lớp học cho riêng mình. Cần phải có một hệ thống để
giúp sinh viên có thể thực hiện được yêu cầu trên mà không hạn chế số lượt truy
cập cũng như hạn chế được gánh nặng về vật lý của hệ thống như băng thông, CPU
xử lý…
Thông qua chương trình đăng kí tín chỉ, mỗi sinh viên sẽ được cấp một mã
số duy nhất để đăng nhập tại máy Client và chương trình sẽ lấy danh sách các tín
chỉ dành cho ngành học của sinh viên được đặt tại máy Server tại trường và sau đó
sẽ tải về máy Client.
Chương trình đăng kí tín chỉ qua mạng có các chức năng cơ bản như sau:
 Liệt kê danh sách tín chỉ của ngành học cho sinh viên
 Tư vấn nên lựa chọn môn học nào
 Liệt kê danh sách phòng học và giảng viên của tín chỉ cần đăng kí về
thông tin số lượng sinh viên đã đăng kí, thời gian mở lớp…
 Tiếp nhận và xử lý các yêu cầu từ máy Client.
.IV.2. Giải quyết yêu cầu từ xa
Khi tổ chức đăng kí tín chỉ qua mạng thì quá trình thi được diễn ra như sau:
 Mỗi sinh viên phải đăng nhập vào chương trình trên máy mình, sau đó
nhập mã đăng nhập tương ứng.
 Gửi yêu cầu danh sách tín chỉ dành cho sinh viên đang đăng nhập đến
Server đặt tai trường.
 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.
12



 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)
Phatyeucau(B,yc)

Server (B)
Lặp lại

Nhanlai(kq)

NhanYeucau(s, dstinchi)
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, dstinchi): nhận yêu cầu cấp danh sach tin chỉ.

 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 lần đăng kí một môn học, sau
khi được thấy trạng thái lớp học còn chổ để đăng kí, sinh viên tại Client (A) phải
gửi thông tin môn học muốn đăng kí của mình đến máy chủ. Sau khi Server tại
13


trường (B) nhận được yêu cầu thì sẽ xem xét và tra cứu trong cơ sở dữ liệu thử lớp
có trống không, 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:

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_lop(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



Đ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ớp học 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ộ đăng kí lớp cho sinh 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 lấy
danh sách tín chỉ và đăng ký lớp cho mỗi sinh viên thông qua chương trình đăng kí
tín chỉ ở 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.

14


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
15


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ó.
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:
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

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ụ:
16


 Đối với phongvan1:
Tiến trình phongvan1


GuiThongDiep(mahh) cho truyvan1
gia=ChoThongDiep từ truyvan1


Chấm dứt phongvan1

 Đối với phongvan2:
Tiến trình phongvan2

GuiThongDiep(mahh) cho truyvan1
gia=ChoThongDiep từ truyvan1

Chấm dứt phongvan2


 Đối với tiến trình truyvan1:
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

17


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ụ:

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

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.

18


Ví dụ:
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
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ụ:

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

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.
19


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:
Gửi thông điệp
Chờ kếtquả
Tiế
Tiếnn trì
trìnnhh 11
(Server)
(Server)

Tiế
Tiếnn trì
trìnnhh 22
(Client)
(Client)
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ả)

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:
20


 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:
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

 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:
Tiến trình 2
……
GuiThongDiep(Yêu cầu)
ketqua=ChoThongDiep
……

Chấm dứt tiến trình 2

21


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:

Tiến trình 2
……
GuiThongDiep(Yêu cầu)
……
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:

Tiế
Tiếnn trì
trìnnhh 22
(yêu
(yêu cầ
cầuu))

Tiế
Tiếnn trì
trìnnhh 11
(Server)

(Server)

Tiế
Tiếnn trì
trìnnhh 33
(yêu
(yêu cầ
cầuu))

Tiế
Tiếnn trì
trìnnhh nn
(yêu
(yêu cầ
cầuu))

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ả
22


×