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

VẤN ĐỀ BẾ TẮC TRONG HỆ TẬP TRUNG VÀ HỆ PHÂN TÁN

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 (270.7 KB, 22 trang )

Báo cáo Hệ tin học phân tán
BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC ĐÀ NẴNG

TIỂU LUẬN
HỆ TIN HỌC PHÂN TÁN
VẤN ĐỀ BẾ TẮC TRONG HỆ TẬP
TRUNG VÀ HỆ PHÂN TÁN
Giảng viên hướng dẫn: PGS.TS LÊ VĂN SƠN
Học viên thực hiện: NGUYỄN VĂN VIỆT ĐỨC
Đà Nẵng – Năm 2014
LỜI MỞ ĐẦU
Học viên: Nguyên Văn Việt Đức Trang 1
Báo cáo Hệ tin học phân tán
Hệ tin học phân tán là hệ thống xử lý thông tin bao gồm nhiều bộ xử lý
hoặc bộ vi xử lý nằm tại các vị trí khác nhau và được liên kết với nhau thông
qua phương tiện viễn thông dưới sự điều khiển thống nhất của một hệ điều hành.
Hệ tin học phân tán rất đa dạng, đa diện, phức tạp về mặt cấu trúc, tập hợp
bao gồm các bộ xử lý hoặc bộ vi xử lý với bộ nhớ và đồng hồ nhịp độc lập, các
bộ xử lý không sử dụng chung bộ nhớ và đồng hồ. Như vậy mỗi một hệ xử lý
thông tin thành phần của hệ tin học phân tán bao gồm một hay nhiều bộ xử lý và
bộ nhớ cục bộ. Trong hệ phân tán hệ xử lý thông tin thành phần phải được thiết
kế sao cho về cấu trúc, số lượng và dung lượng có thể cho phép thực hiện một
cách trọn vẹn các chức năng mà nó phải đảm nhận.
Hệ tin học phân tán thực hiện hàng loạt các chức năng phức tạp, nhưng cơ
bản nhất là đảm bảo cung cấp cho người sử dụng khả năng truy cập có kết quả
đến các loại tài nguyên vốn có và rất đa dạng của hệ thống như là những tài
nguyên dùng chung.
Những ưu điểm căn bản của việc sử dụng chung tài nguyên so với hệ tập
trung được phản ảnh như sau:
1. Tăng tốc độ bình quân trong tính toán-xử lý.


2. Cải thiện tình trạng luôn luôn sẵn sàng của các loại tài nguyên.
3. Tăng độ an toàn dữ liệu.
4. Đa dạng hóa các loại hình dịch vụ tin học.
5. Đảm bảo tính vẹn toàn của thông tin.
Điều quan trọng là để đảm bảo các chức năng, yêu cầu nêu trên, hệ phân
tán cần phải có các cơ chế kỹ thuật đủ mạng nhằm đồng bộ hóa hoạt động của
các tiến trình và sự trao đổi thông tin với nhau sao cho hệ thống tránh được các
trường hợp có thể dẫn đến bế tắc mà khi nghiên cứu hệ điều hành các máy tính
chúng ta đã có dịp làm quen.
Để tìm hiểu rõ hơn về vấn đề bế tắc và thuật toán dự phòng bế tắc của
Lomet tôi chọn đề tài “Vấn đề bế tắc trong hệ tập trung và hệ phân tán” để
nghiên cứu. Trong thời gian thực hiện đề tài, tôi đã nhận được sự hướng dẫn tận
tình của PGS.TS Lê Văn Sơn, được sự động viên và giúp đỡ của đồng nghiệp
trong cơ quan và các anh chị em lớp Cao học - Khoa học Máy tính Khóa 10
(2008 – 2011) để hoàn thành đề tài.
Xin chân thành cảm ơn!
Học viên: Nguyên Văn Việt Đức Trang 2
Báo cáo Hệ tin học phân tán
Chương 1. BẾ TẮC TRONG HỆ TẬP TRUNG
1.1 Bế tắc
Tất cả các hiện tượng bế tắc đều bắt nguồn từ sự xung đột về tài nguyên của
hai hoặc nhiều tiến trình đang hoạt động đồng thời trên hệ thống. Tài nguyên ở đây
có thể là một ổ đĩa, một mẫu tin trong cơ sở dữ liệu, hay một không gian địa chỉ trên
bộ nhớ chính. Sau đây là một số ví dụ minh hoạ cho điều trên.
Ví dụ 1: Giả sử có hai tiến trình P
1
và P
2
hoạt động đồng thời trong hệ thống.
Tiến trình P

1
đang giữ tài nguyên R
1
và xin được cấp R
2
để tiếp tục hoạt động,
trong khi đó tiến trình P
2
đang giữ tài nguyên R
2
và xin được cấp R
1
để tiếp tục
hoạt động. Trong trường hợp này cả P
1
và P
2
sẽ không tiếp tục hoạt động được.
Như vậy, P
1
và P
2
rơi vào trạng thái bế tắc (minh hoạ bởi sơ đồ ở hình 1.1).
Hình 1.1. Chờ đợi vòng tròn
Bế tắc thường xảy ra do xung đột về tài nguyên thuộc loại không phân chia
được, một số ít trường hợp xảy ra với tài nguyên phân chia được. Ví dụ sau đây là
trường hợp bế tắc do xung đột về tài nguyên bộ nhớ, là tài nguyên thuộc loại phân
chia được.
Ví dụ 2: Giả sử không gian bộ nhớ còn trống là 200Kb, trong hệ thống có hai
tiến trình P

1
và P
2
yêu cầu được sử dụng bộ nhớ như sau:
P
1
P
2
…. ….
Request1 80Kb Request1 70Kb
…. ….
Request2 30Kb Request2 40Kb
…. ….
Bế tắc xảy ra khi cả hai tiến trình cùng yêu cầu thêm bộ nhớ lần thứ hai.
Tại thời điểm này, không gian bộ nhớ còn trống là 50Kb, lớn hơn lượng bộ nhớ
mà mỗi tiến trình yêu cầu (30Kb và 40Kb), nhưng vì cả hai tiến tình đồng thời
yêu cầu thêm bộ nhớ nên hệ thống không thể đáp ứng được, và bế tắc xảy ra.
Ví dụ 3: Trong các ứng dụng cơ sở dữ liệu, một chương trình có thể khoá một
vài record mà nó sử dụng để dành quyền điều khiển về cho nó. Nếu tiến trình P
1
Học viên: Nguyên Văn Việt Đức Trang 3
G
i

Y
ê
u

u
Tiến trình 2

(P
2
)
G
i

Y
ê
u

c

u
Tiến trình 1
(P
1
)


Tài
nguyên R
2
Tài
nguyên R
1
Báo cáo Hệ tin học phân tán
khoá record R
1
, tiến trình P
2

khoá record R
2
, và sau đó mỗi tiến trình lại cố gắng
khoá record của một tiến trình khác. Bế tắc sẽ xảy ra.
Như vậy bế tắc là hiện tượng: Trong hệ thống xuất hiện một tập các tiến
trình, mà mỗi tiến trình trong tập này đều chờ được cung cấp tài nguyên, mà tài
nguyên đó đang được một tiến trình trong tập này chiếm giữ. Và sự đợi này có
thể kéo dài vô hạn nếu không có sự tác động từ bên ngoài.
Trong trường hợp của ví dụ 1 ở trên: hai tiến trình P
1
và P
2
sẽ rơi vào trạng
thái bế tắc, nếu không có sự can thiệp của hệ điều hành. Để phá bỏ bế tắc này,
hệ điều hành có thể cho tạm dừng tiến trình P
1
để thu hồi lại tài nguyên R
1
, lấy
R
1
cấp cho tiến trình P
2
để P
2
hoạt động và kết thúc, sau đó thu hồi cả R
1
và R
2
từ

tiến trình P
2
để cấp cho P
1
và tái kích hoạt P
1
để P
1
hoạt động trở lại. Như vậy,
sau một khoảng thời gian cả P
1
và P
2
đều ra khỏi tình trạng bế tắc.
Trong trường hợp của ví dụ 2 ở trên: Nếu hai tiến trình này không đồng
thời yêu cầu thêm bộ nhớ thì bế tắc không thể xảy ra, hoặc khi cả hai tiến trình
đồng thời yêu cầu thêm bộ nhớ thì hệ điều hành phải kiểm tra lượng bộ nhớ còn
trống của hệ thống, nếu không đáp ứng cho cả hai tiến trình thì hệ điều hành
phải có cơ chế ngăn chặn (từ chối) một tiến trình và chỉ cho một tiến trình được
quyền sử dụng bộ nhớ (đáp ứng) thì bế tắc cũng không thể xảy ra. Tuy nhiên để
giải quyết vấn đề bế tắc do thiếu bộ nhớ, các hệ điều hành thường sử dụng cơ
chế bộ nhớ ảo. Bộ nhớ ảo là một phần quan trọng của hệ điều hành mà chúng ta
sẽ khảo sát ở chương Quản lý bộ nhớ của tài liệu này.
Khi hệ thống xảy ra bế tắc, nếu hệ điều hành không kịp thời phá bỏ bế tắc
thì hệ thống có thể rơi vào tình trạng treo toàn bộ hệ thống. Như trong trường
hợp bế tắc ở ví dụ 1, nếu sau đó tiến trình P
3
đang giữ tài nguyên R
3
, cần R

2
để
tiếp tục thì P
3
cũng sẽ rơi vào tập tiến trình bị bế tắc, rồi sau đó, nếu có tiến trình
P
4
cần tài nguyên R1 và R
3
để tiếp tục thì P
4
cũng rơi vào tập tiến trình bị bế tắc
như P
3
, … cứ thể dần dần có thể dẫn đến một thời điểm tất cả các tiến trình
trong hệ thống đều rơi vào tập tiến trình bế tắc. Và như vậy hệ thống sẽ bị treo
hoàn toàn.
1.2 Điều kiện hình thành bế tắc
Năm 1971, Coffman đã đưa ra và chứng tỏ được rằng, nếu hệ thống tồn tại
đồng thời bốn điều kiện sau đây thì hệ thống sẽ xảy ra bế tắc:
1.2.1 Loại trừ lẫn nhau (Mutual excution) hay độc quyền sử dụng
Đối với các tài nguyên không phân chia được thì tại mỗi thời điểm chỉ có
một tiến trình sử dụng được tài nguyên.
1.2.2 Giữ và đợi (Hold and wait)
Một tiến trình hiện tại đang chiếm giữ tài nguyên, lại xin cấp phát thêm tài
nguyên mới.
1.2.3 Không ưu tiên (No preemption)
Không có tài nguyên nào có thể được giải phóng từ một tiến trình đang
chiếm giữ nó.
Học viên: Nguyên Văn Việt Đức Trang 4

Báo cáo Hệ tin học phân tán
Trong nhiều trường hợp các điều kiện trên là rất cần thiết đối với hệ thống.
Sự thực hiện độc quyền là cần thiết để đảm bảo tính đúng đắn của kết quả và
tính toán vẹn của dữ liệu (chúng ta đã thấy điều này ở phần tài nguyên găng trên
đây). Tương tự, sự ưu tiên không thể thực hiện một cách tuỳ tiện, đặc biệt đối
với các tài nguyên có liên quan với nhau, việc giải phóng từ một tiến trình này
có thể ảnh hưởng đến kết quả xử lý của các tiến trình khác.
Sự bế tắc có thể tồn tại với ba điều kiện trên, nhưng cũng có thể không xảy ra
với ba điều kiện đó. Để chắc chắn bế tắc xảy ra cần phải có điều kiện thứ tư.
1.2.4 Đợi vòng tròn (Circular wait)
Đây là trường hợp của ví dụ một mà chúng ta đã nêu ở trên. Tức là, mỗi
tiến trình đang chiếm giữ tài nguyên mà tiến trình khác đang cần.
Ba điều kiện đầu là điều kiện cần chứ không phải điều kiện đủ để xảy ra bế tắc.
Điều kiện thứ tư là kết quả tất yếu từ ba điều kiện đầu.
1.3 Các phương pháp sử dụng trong hệ tập trung để xử lý bế tắc:
1.3.1 Phương pháp dự phòng
Phương pháp dự phòng đơn giản và thường hay sử dụng là phương pháp
các nhóm sắp xếp Havender.
Tư tưởng cơ bản của phương pháp này là các tài nguyên được sắp xếp theo
các nhóm con C
1
, C
2
, …Cn. Một tiến trình nào đó có thể thu hồi tài nguyên của
nhóm C
i
với i>1, nếu trước đó nó đã thu hồi tất cả các tài nguyên của nhóm cần
thiết cho nó C
1
, C

2
, …C
i
-
1
. Như thế, trật tự duy nhất của việc thu hồi các tài
nguyên được xác định sẽ tránh được bế tắc. Phương pháp này dẫn đến các tiến
trình cần thu hồi trước (tạm ứng) các tài nguyên của chúng và do vậy làm giảm
khả năng thực hiện song song của hệ.
1.3.2 Phương pháp phát hiện và chữa trị
Phương pháp Holt sử dụng một đồ thị trạng thái định hướng mà các nút là
các tài nguyên hay các tiến trình. Các cung tiến trình- tiến trình thể hiện các
cung cấp đã được thực hiện. Nếu có sự hiện diện của vòng lặp khép kín trong đồ
thị này thì đó chính là biểu hiện của tình trạng bế tắc.
Sau khi đã phát hiện bế tắc, vấn đề chữa trị được đặt ra, nhưng các phương
pháp này rất phức tạp, tốn kém. Hiện nay, thuật toán chữa trị đang được các nhà
chuyên môn quan tâm nghiên cứu và phát triển.
1.3.3 Kết luận
Thực tế, trong các hệ điều hành, người ta sử dụng:
1. Hoặc là các phương pháp dự phòng đơn giản như cung cấp tổng quát tất
cả các tài nguyên hay phương pháp nhóm sắp xếp.
2. Hoặc là các phương pháp phát hiện thường rất cồng kềnh; khắc phục nó
đòi hỏi phải loại bỏ hoàn toàn các tiến trình và khởi sự cũng trở lại từ đầu. Điều
đó đòi hỏi phải lưu trữ ngữ cảnh theo từng chu kỳ hết sức phức tạp và tốn kém
bộ nhớ.
Học viên: Nguyên Văn Việt Đức Trang 5
Báo cáo Hệ tin học phân tán
Chương 2. BẾ TẮC TRONG HỆ PHÂN TÁN
2.1 Một số khái niệm
Trong chương này, chúng ta sẽ đề cập cách giải quyết các vấn đề đặt ra và

trình bày các giải pháp thể hiện dưới dạng các giải thuật riêng cho hệ phân tán.
Trong hệ phân tán, thông thường người ta hay sử dụng khái niệm giao dịch như
là thực thể sử dụng các tài nguyên chẳng hạn.
Giao dịch là phép toán hợp thành một logich hoàn chỉnh mà việc triển khai
nó có thể dẫn đến thực hiện một tiến trình duy nhất hay nhiều tiến trình được
định vị trên các trạm khác nhau.Trường hợp dẫn đến thực hiện nhiều tiến trình
trên các trạm ở xa là đối tượng mà ta cần phải quan tâm nghiên cứu trong
chương này.
Một tiến trình nào đó cần sử dụng tài nguyên để phát triển công việc của
mình phải yêu cầu bộ cung cấp một cách hợp thức bằng cách gửi thông điệp yêu
cầu. Như thế, rõ ràng là một tiến trình có nhu cầu tài nguyên sẽ bị treo chừng
nào tài nguyên đó còn chưa được giải phóng hay chưa được cung cấp cho nó.
Bộ cung cấp có thể áp dụng nhiều kiểu cung cấp khác nhau như tiến trình
duy nhất, tập hợp các tiến trình, tập hợp các thủ tục, Các thông điệp yêu cầu sử
dụng tài nguyên cũng có thể có các dạng khác nhau như gọi thủ tục, thông báo,
thực hiện các lệnh đặc biệt,
Một yêu cầu được thoả mãn bởi bộ cung cấp tài nguyên cho tiến trình đề
nghị với điều kiện là yêu cầu đó phải tuân thủ các quy tắc nhất định.
Có hai điều kiện làm cho tiến trình mất khả năng sử dụng tài nguyên đã
được cung cấp trước đó.
Stt Tên gọi Điều kiện
1 Giải phóng Tiến trình phát tín hiệu ngừng sử dụng tài nguyên
2 Thu hồi
Sự lấy lại tài nguyên đã được cung cấp cho tiến
trình. Bộ cung cấp tài nguyên sẽ tiến hành công
việc này
Trong hệ, hoạt động của một tập hợp các tiến trình trên một tập hợp các tài
nguyên dùng chung được xem là tuyệt vời, nếu không để xảy ra bế tắc và thiếu
thốn tài nguyên vĩnh viễn.
Bế tắc hay còn gọi là khoá tương hỗ là sự kẹt chéo lẫn nhau có tính chất

sống còn của các tiến trình. Bế tắc diễn ra khi hai tiến trình đang sử dụng hai tài
nguyên lại phát yêu cầu về nhu cầu sử dụng tài nguyên mà tiến trình kia còn
đang sử dụng.
Hình vẽ 2.1 sau đây cho phép chúng ta hình dung vấn đề một cách rõ ràng
hơn. Theo hình vẽ này, ta có 4 tài nguyên T
1
, T
2
, T
3
và T
4
và có 3 nhu cầu tài
nguyên là Tr
1
, Tr
2
và Tr
3.
Cả ba tiến trình này đang ở trong tình trạng bế tắc. Tiến
trình Tr
2
chờ tài nguyên T
3
do Tr
3
đang chiếm giữ.Tiến trình Tr
3
chờ tài nguyên
T

2
được giải phóng bởi Tr
1
và Tr
3
.Thêm vào đó, tiến trình chờ tiền trình Tr
2
giải
phóng T
1
.
Lúc này, ta thấy có hai chu trình kín trong đồ thị là:
Học viên: Nguyên Văn Việt Đức Trang 6
Báo cáo Hệ tin học phân tán
Tr
1
– T
1
– Tr
2
– T
3
– Tr
3
– T
2
– Tr
1
và Tr
3

– T
2
– Tr
2
– T
3
– Tr
3
Hình 2.1. Đồ thị cung cấp tài nguyên bị bế tắc
Thiếu tài nguyên vĩnh viễn là sự chờ đợi bất tận của một tiến trình mà yêu cầu
của nó trễ đến mức không thể xác định được. Nguyên nhân của hiện tượng vừa nêu
có nhiều, nhưng ta có thể chỉ ra ví dụ thường gặp là do sử dụng luật ưu tiên để cung
cấp tài nguyên.
Một chiến lược cung cấp tài nguyên tồi cũng có thể là nguồn gốc huỷ hoại hiệu
năng hoạt động của hệ do các hiện tượng "sốc" làm tăng các yêu cầu mà không được
đáp ứng của một số tài nguyên. Ví dụ như sự sụp đổ của hệ đa chương trình.
Để tránh các hiện tượng đó, bộ cung cấp tài nguyên cần phải đảm bảo chức
năng điều khiển
Ta có thể phân chia thành hai phương diện để nghiên cứu:
1. Phân tán các yêu cầu giữa các tài nguyên tương đương có khả năng thoả
mãn. Chức năng này gọi là phân phối tải. Trong hệ phân tán, nó cần phải tạo
điều kiện để tránh tình hình mà ở đó các yêu cầu đợi đến lượt được thoả mãn
trên một trạm đầy, trong khi đó các tài nguyên tương đương lại rỗi rãi trên các
trạm khác.
2. Giới hạn số lượng các yêu cầu được phép cho một số tài nguyên. Việc đó
có thể thực hiện bằng cách hạn chế (tĩnh hay động) số các tiến trình hay số các
giao dịch được chọn (trúng tuyển) sử dụng toàn bộ hay từng phần tài nguyên.Ta
gọi trường hợp này là điều khiển tải tổng quát.
Tóm lại: Bộ cung cấp cần phải phân phối các tài nguyên trên cơ sở tuân thủ
các quy tắc sử dụng, tránh xảy ra bế tắc và thiếu thốn vô hạn, phân bố tải tương đối

đồng đều giữa các tài nguyên cùng loại(cùng có thể thoả mãn) và giới hạn nhu cầu
nhằm duy trì hệ thống hoạt động đạt mức hiệu quả nhất định.
2.2 Cung cấp tài nguyên duy nhất
Vấn đề cung cấp tài nguyên duy nhất trên một trạm trong hệ phân tán liên
quan đến việc phân phối tài nguyên này cho một tập hợp các tiến trình trên cơ sở quy
tắc: truy cập loại trừ hay chia sẻ, có hệ số ưu tiên, không được mất, … Các tiến trình
có thể đề nghị sử dụng tại nguyên ngay tại trạm có tài nguyên mà cũng có thể ở các
trạm khác từ xa.
Việc quản lý các truy cập đến một tài nguyên duy nhất có thể được thực
hiện theo hai cách:
Học viên: Nguyên Văn Việt Đức Trang 7
T1 T3
Tr1 Tr2 Tr3
T2
T4
Báo cáo Hệ tin học phân tán
Stt Kiểu thực hiện
1 Truy cập bằng một tiến trình duy nhất
2 Truy cập bằng các tiền trình tương tranh
2.3 Truy cập bởi server duy nhất
Một tiến trình duy nhất hay còn gọi là server được giao nhiệm vụ quản lý
tài nguyên. Nó xử lý tất cả các yêu cầu truy cập từ các tiến trình và các khách
(client). Sự loại trừ truy cập được đảm bảo bởi tính duy nhất của server. Server
đồng thời cũng là chương trình đánh thức.
Chương trình có thể viết như sau:
Vòng lặp
m:= cho-thong-diep(nil) {treo}
<Chương trình xử lý các yêu cầu và gửi trả kết quả>
Kết thúc vòng lặp
Do vậy, sơ đồ này loại bỏ tất cả các đặc tính song song để truy cập vào tài

nguyên. Tiến trình server có thể được lập trình để triển khai toàn bộ chiến lược
liên quan đến loại trừ tương hỗ của các yêu cầu (độ ưu tiên, quyền truy cập tài
nguyên).
Hình 2.2. Đồ thị truy cập vào tài nguyên bằng server duy nhất
2.4 Truy cập tương tranh có điều khiển
Trong trường hợp này, tài nguyên được truy cập bởi nhiều server, thông
thường, có số lượng không cố định. Các server này thực hiện các truy cập tương ứng
với các yêu cầu dưới dạng gọi thực hiện các thủ tục.Việc thực hiện các thủ tục này
được điều khiển bởi cơ chế đảm bảo tôn trọng các quy tắc truy cập.
Các quy tắc được khởi sự bằng hai cách bởi các tiến trình khách cho thấy
việc truy cập được tiến hành bằng một chương trình trực duy nhất.
Hình 2.3. Đồ thị truy cập vào tài nguyên bằng một chương trình trực duy nhất
Học viên: Nguyên Văn Việt Đức Trang 8
Hàng đợi các yêu cầu
T-Tài nguyên Tr-Tiến trình khách Si-
Server D-Đánh thức
Tr1
Tr
n
Tr2 D T
S1
Sn
S2
Tr1
Tr
n
Tr2 S T
T-Tài nguyên Tr-Tiến trình khách S-Server
Báo cáo Hệ tin học phân tán
Trong cách thứ hai, việc truy cập được tiến hành trực tiếp với các server và thể

hiện bằng hình vẽ 2.4.
Hình 2.4. Truy cập trực tiếp vào các server
Hình vẽ 2.3, ta thấy một tiến trình đánh thức D duy nhất sau hàng đợi làm nhiệm
vụ phân phối yêu cầu cho các server cục bộ. Các tiến trình khách không biết
server.
Ngược lại, hình vẽ 2.4, các máy server đều được các tiến trình khách biết trước.
2.5 Cung cấp một tập hợp các tài nguyên - Vấn đề bế tắc
Trước hết, ta tìm hiểu một số thuật ngữ và khái niệm có quan hệ mật thiết
với nhưng vấn đề sẽ sử dụng trong phần này.
Tiến trình p đưa ra yêu cầu cung cấp tài nguyên e để thực hiện phép toán cài
then có tính loại trừ v_loai_tru_th(e). Ngoại trừ một số trường hợp đặc biệt, tất
cả các tài nguyên đều được truy cập theo kiểu loại trừ. Nếu việc cung cấp hoán
toàn hợp thức thì tài nguyên này được trao cho p sử dụng. Ta nói rằng tài
nguyên này đã được p cài then, nếu không thì p bị treo và đương nhiên p không
cài then được tài nguyên này.
Trong hệ phân tán, ta sẽ tập trung xem xét các giao dịch T
i
có thể sử dụng
các tài nguyên được định vị trên các trạm. Mỗi một giao dịch được triển khai
nhờ một tập hợp các tiến trình thể hiện là các đại diện của chúng trên các trạm
khác nhau. Hai tiến trình của cùng một giao dịch được định vị trên các trạm
khác nhau có thể được thực hiện song song. Nhằm thu hồi lại tài nguyên e trên
trạm S
j
, giao dịch T
i
cho thực hiện phép toán v_loai_tru_th(e) thông qua đại diện
p
ij
của mình trên trạm này.

Ngoại trừ một số trường hợp đặc biệt, việc cung cấp diễn ra không có thu
hồi. Một tài nguyên bị khoá bởi một tiến trình không thể rút nó trở về được. Như
thế, nó cần phải được giải phóng bởi tiến trình này một cách tường minh nhờ
vào phép toán mở then cài mo_then(e).
Bế tắc có thể được giải quyết bằng cách dự báo và vòng tránh (gọi chung là
dự phòng) có nghĩa là tài nguyên được cung cấp theo kiểu có đề phòng trường
hợp bế tắc. Một phương pháp khác có liên quan đến vấn đề này là phát hiện và
chữa trị có nghiã là khi có sự cố thì quay trở về trạng thái trước đó.
Các thuật toán dự phòng, phát hiện và chữa trị được nghiên cứu cho trường
hợp là tất cả các tài nguyên đều được quản lý bởi bộ cung cấp duy nhất. Bộ cung
cấp này tiếp nhận tất cả các yêu cầu và biết rõ trạng thái của tất cả các tài
nguyên.
Học viên: Nguyên Văn Việt Đức Trang 9
Tr1
Tr
n
Tr2
T
S1
Sn
S2

Báo cáo Hệ tin học phân tán
Ta bắt đầu việc nghiên cứu trong phần này bằng cách nhắc lại các kết quả
chủ yếu của trường hợp nêu trên, trước khi phát triển các vấn dề về hướng tin
học phân tán.
2.6 Phân tán chức năng cung cấp
Bây giờ, ta giả định rằng chức năng cung cấp không thể tin tưởng giao phó
hoàn toàn cho một bộ cung cấp duy nhất, mà được phân tán thành tập hợp các bộ
cung cấp trên các trạm khác nhau, trong đó mỗi bộ cung cấp chỉ quản lý các đối

tượng cục bộ của trạm đó mà thôi.
Tồn tại hai nhóm giải pháp cho vấn đề đặt ra:
2.6.1 Duy trì tính duy nhất của trạng thái tài nguyên
Biểu hiện duy nhất (thể hiện tính duy nhất) của trạng thái tài nguyên được chia
sẻ bởi tập hợp các bộ cung cấp. Biểu hiện này tuần hoàn giữa các trạm khác nhau
dưới dạng một thông điệp. Các trạm luân phiên đóng vai trò của bộ cung cấp các tài
nguyên mà mình đang chịu trách nhiệm quản lý. Giải pháp này loại bỏ tất cả các khả
năng song song, không loại bỏ khả năng mất thông điệp trạng thái, thiếu thốn tài
nguyên một cách vô hạn.
2.6.2 Phân tán biểu hiện trạng thái và chức năng cung cấp
Có rất nhiều giải pháp có thể:
Stt Giải pháp
1
Ta duy trì mỗi trạm một bản sao trạng thái tài nguyên tổng quát.
Trong trường hợp này, cần phải đảm bảo sự gắn bó hữu cơ giữa
các bản sao.
2
Ta phân tán biểu hiện trạng thái trên các trạm, mỗi một trạm chỉ
co trạng thái của các tài nguyên cục bộ của mình.Các quyết định
được đưa ra trên các trạm khác nhau cần phải được phối hợp theo
kiểu sao cho dữ liệu của việc cung cấp phải được gắn bó với nhau.
3
Một phương pháp đầy ấn tượng là nhóm sắp xếp nhằm đảm bảo
cho tất cả các yêu cầu tài nguyên xuất phát từ các tiến trình đến
được các bộ cung cấp khác nhau theo một trật tự duy nhất được
cố định từ trước.
Các phương pháp khác nhau mang tính năng động cao cho phép ra các
quyết định cung cấp tài nguyên xuất phát từ quan điểm từng phần (ngược với
toàn phần) của trang thái tài nguyên.
Trong các phần tiếp theo, ta sẽ được giơi thiệu lần lượt các vấn đề sau đây:

1. Nguyên lý được hiện bằng giải thuật dự phòng bế tắc cho trường hợp đầu
tiên vừa nêu theo kiểu sử dụng các bản sao trang thái tổng quát .
2. Hai giải thuật toán cho các trường hợp sau; một cho dự phòng và một cho
phát hiện bế tăc được trình bày bằng cách sử dụng quan điểm tưng phần của
trạng thái toàn phần.
Học viên: Nguyên Văn Việt Đức Trang 10
Báo cáo Hệ tin học phân tán
2.6.3 Các phương pháp cung cấp sử dụng trạng thái tổng quát
Bây giờ, vấn đề quan trọng được đặt ra là tại sao có thể áp dụng thuật toán
dự phòng bế tắc của các hệ tập trung vào môi trường phân tán theo kiểu duy trì
trên mỗi trạm một bản sao trạng thái cung cấp của tất cả các tài nguyên.
Nội dung của các bản sao trên các trạm của hệ có thể phản ảnh trong bảng
sau đây:
Stt Nội dung của bản sao
1 Tập hợp tất cả các tài nguyên còn chưa được cung cấp
2 Tập hợp các tài nguyên đã cung cấp
3 Đối tượng đang chiếm giữ tài nguyên
5 Kiểu sử dụng
6 Tập hợp các yêu cầu không được thoả mãn
7 Tập hợp các thông điệp dành cho trường hợp đã được sử dụng
8 Tập hợp các thông điệp dành cho trường hợp thất bại
9 …
Cung cấp tài nguyên chỉ được chấp nhận, nếu trạng thái xuất phát từ việc
cung cấp đó được đánh giá là chấp nhận được theo thuật toán đã sử dụng.Trên
cơ sở thực hiện cùng một thuật toán và có cùng thông tin, mỗi trạm ra quyết
định cung cấp căn cứ vào bản sao trạng thái cục bộ của nó. Việc cung cấp cho
tiến trình đề nghị sẽ được thực hiện ngay trên trạm có tài nguyên.
Để cập nhật thông tin, mỗi tiến trình phát đi cho một tập hợp nhất định các
trạm:
1. Các thông điệp của mình.

2. Các yêu cầu của mình.
3. Các thông điệp giải phóng của mình.
Các bản sao tổng quát trên các trạm phải có cùng các bước chuyển trạng
thái. Để đảm bảo điều đó, cầm phải xử lý các yêu cầu trong cùng một trật tự trên
tất cả các trạm. Trật tự này có thể khác với trật tự đến. Có thể sử dụng các kỹ
thuật đã được kiểm tra trong chương IV như dấu, bộ tuần tự tuần hoàn,… để giải
quyết vấn đề đồng bộ thông tin.
Ta sẽ sử dụng với tư cách là ví dụ nguyên lý triển khai thuật toán trình bày
trong ấn phẩm của Lomet và ứng dụng kỹ thuật thông cáo hợp thức.
Khi bắt đầu thực hiện giao dịch T
i
thì giao dịch này cần phải phát thông
điệp hợp thức của tập hợp các tài nguyên mà nó định sử dụng. Một tài nguyên
chỉ có thể thu hồi, nếu đó là một phần của thông điệp.
Ta định nghĩa một quan hệ gọi là phụ thuộc thế năng giữa hai giao dịch T
j
và T
k
và ký hiệu T
j
> T
k
điều đó nói lên rằng

T
j
chậm hơn T
k.
T
j

> T
k
nghĩa là tồn tại ít nhất một tài nguyên bị cài then bởi T
j
và là thành phần
thuộc thông điệp của T
k
.
Quan hệ này có thể được biểu diễn bằng đồ thị G, biến theo thời gian gọi là
đồ thị các xung đột thế năng.Tồn tại vòng lặp trong đồ thị này sinh ra bế tắc.
Học viên: Nguyên Văn Việt Đức Trang 11
Báo cáo Hệ tin học phân tán
Ví dụ 1:
Hãy đánh giá 3 giao dịch T
1
, T
2
và T
3
sử dụng 3 tài nguyên e
1
, e
2
và e
3.
Ta
ký hiệu a_loai_tru_th() là phép toán thông điệp.
Giao dịch T
1
t

11
: a_loai_tru_th(e
1
, e
2
)
…….
t
12
: v_loai_tru_th(e
1
)
…….
t
13
: v_loai_tru_th(e
2
)
Giao dịch T
2
t
21
: a_loai_tru_th(e
2
, e
3
)
…….
t
22

: v_loai_tru_th(e
2
)
…….
t
23
: v_loai_tru_th(e
3
)
Giao dịch T
3
t
31
: a_loai_tru_th(e
3
, e
1
)
…….
t
32
: v_loai_tru(e
3
)
…….
t
33
: v_loai_tru_th(e
1
)

Giả sử rằng các lệnh thực hiện theo trình tự t
11
, t
21
, t
31
, t
12
, t
22
, t
32
, vào thời
điểm t sau khi thực hiện các lệnh này, đồ thị G có thể biểu diễn như sau. Bế tắc
không tránh khỏi được. Đồ thị G được biểu diễn trong hình vẽ 2.8.
Để tránh bế tắc diễn ra, ta duy trì mỗi trạm một bản sao của đồ thị G và ta
chỉ được cung cấp tài nguyên, nếu việc cung cấp đó không phát sinh vòng lặp
trong đồ thị này.
Mỗi một thông cáo, thông điệp hay khuyến nghị giải phóng đều nhận một
dấu, rồi phát ra cho tất cả các trạm.Để cập nhật bản sao của mình về đồ thị G,
mỗi trạm xử lý các thông điệp mà nó nhận được trong một trật tự chặt chẽ được
xác định bởi dấu.
2.6.4 Các phương pháp cung cấp theo kiểu sử dụng trạng thái từng phần
Hai thuật toán mà ta sẽ giới thiệu sau đây rất thích hợp với môi trường
phân tán. Mỗi trạm chỉ quản lý các tài nguyên cục bộ của mình và các quyết
định cung cấp được đưa ra dựa trên thông tin cục bộ. Ta giới hạn về việc trình
bày của mình cho mục đích khá đơn giản. Đó là tất cả các tài nguyên đều được
truy cập theo kiểu loại trừ. Các tài nguyên chia sẻ sẽ là đối tượng xử lý của bài
tập số 2 của chương này.
Học viên: Nguyên Văn Việt Đức Trang 12

Báo cáo Hệ tin học phân tán
2.6.4.1 Thuật toán dự phòng bế tắc
Hai thuật toán mà ta sẽ giới thiệu sau đây là một trong những phiên bản của
thuật toán Lomet. Đây là phiên bản sử dụng trạng thái từng phần.
a. Vị trí của vấn đề:
Đây là một ví dụ minh hoạ các khó khăn trong khi ứng dụng vào hệ phân tán.
Ví dụ 2:
Trở lại với ví dụ 1 và bổ sung các điểm như sau; ta giả sử rằng các tài
nguyên e
1
, e
2
và e
3
được bố trí trên các trạm tương ứng S
1
, S
2
và S
3
. Nếu trạm S
i
chỉ nhận thông cáo tương ứng với tài nguyên mà nó quản lý thì nó chỉ duy trì đồ
thị G
i
–hình ảnh thu nhỏ của G cho các giao dịch đã phát thông báo. Như vậy,
sau khi đã thực hiện t
32
, ta có các hình ảnh sau:
Tại trạm S

1
ta có
đồ thị G
1
Hình 2.5. Đồ thị G
1
trên trạm S
1
sơ đồ tương tự tại trạm S
2
là:
Tại trạm S
2
ta có
đồ thị G
2
Hình 2.6. Đồ thị G
2
trên trạm S
2
còn tại S
3
ta có sơ đồ:
Tại trạm S
3
ta có
đồ thị G
3
Hình 2.7. Đồ thị G
3

trên trạm S
3
Rõ ràng, thông qua ba đồ thị trên đây, ta không phát hiện mạch khép kín
dẫn đến tình trạng bế tắc.Nhưng, nếu ở hệ tập trung hay trạng thái không phải
từng phần, ta có đồ thị sau đây:
Hình 2.8. Phát sinh bế tắc
Học viên: Nguyên Văn Việt Đức Trang 13
T
1
T
3
e
1
T
2
T
1
e
2
T
3
T
2
e
2
T
3
T
1
T

2
e
3
e
1
e
2
Báo cáo Hệ tin học phân tán
Trong thực tế, mặc dầu không có đồ thị nào trong số này cho phép phát
hiện sự hình thành một vòng lặp bế tắc, nhưng trên một trạm cho trước nào đó,
ta lại không thể dự phòng bế tắc có kết quả được.
b. Nguyên lý và thuyết minh phương pháp
Ta sẽ thay thế vào điều kiện cung cấp trong đồ thị G không vòng lặp một
điều kiện khác mạnh hơn, nhưng được kiểm tra bằng các thông tin cục bộ trên
từng trạm.
Để làm được điều đó, ta thêm vào cho từng đồ thị G

i
hình ảnh thu nhỏ cho
S
i
của đồ thị của một quan hệ trật tự toàn bộ chặt chẽ được xác định trên các tập
hợp giao dịch. Quan hệ trật tự này có thể được nhờ phương tiện dấu. Điều kiện
cung cấp tài nguyên là duy trì tình trạng không vòng lặp cho các đồ thị G
i
. Căn
cứ theo cấu trúc, điều kiện này có thể được kiểm tra cục bộ trên từng trạm. Ta sẽ
chỉ ra G có được tình trạng không vòng lặp như thế nào. Để làm việc đó, ta bắt
đầu chỉ ra sự tồn tại của vòng trong G kéo theo sự tồn tại của vòng trong ít nhất
một G


i
.
Ta ký hiệu T
j
>>T
k
là quan hệ trật tự toàn phần chặt chẽ trên các giao dịch.
Lúc này, G

i
là hình ảnh thu nhỏ của trạm S
i
của đồ thị của quan hệ >> xác định
bởi:
T
j
>>T
k
⇔ T
j
>T
k
hay T
j
>>T
k

Giả sử rằng G có vòng lặp bao gồm một tập hợp của n giao dịch được đánh
số từ 0 đến n-1 trong trật tự của vòng lặp của trật tự xác định bởi quan hệ >. Giả

sử rằng T
p
là nguyên tố của tập hợp này đến trước tất cả các cái khác theo chiều
của quan hệ >> và giả sử rằng q = p-1 modulo n. Ta có :
T
p
>>T
q
vì T
p
đến trước các cái khác
T
j
>T
k
trong vòng lặp của đồ thị G
Nếu S là số của trạm chứa tài nguyên bị cài then bởi T
q
và thuộc quyền sở
hữu của thông cáo của T
p
thì G

i
chứa vòng lặp.
c. Thuật toán
Như vậy, thuật toán dự phòng được triển khai như sau:
Stt Triển khai
1
Việc cung cấp tài nguyên tại trạm S cho giao dịch T

i
được
tiến hành, nếu việc cung cấp đó không tạo ra vòng lặp trong
đồ thị G

i
2
Trong trường hợp bị từ chối, tiến hành được giao dịch trên
trạm S được đưa vào hàng đợi cục bộ tại S
3
Khi tài nguyên được giải phóng, tất cả các tiến trình của
hàng đợi được kiểm tra nếu các yêu cầu của chúng có thể
được thoả mãn
Qui trình vận hành thuật toán được minh hoạ bởi ví dụ kề liền sau đây:
Học viên: Nguyên Văn Việt Đức Trang 14
Báo cáo Hệ tin học phân tán
Ví dụ 3:
Ta hãy lấy lại ví dụ 1. Khi T
1
thực hiện t
12
: v-loai-tru-th(e1), yêu cầu này
vào xung đột với thông cáo a-loai-tru-th(e1) thực hiện bởi T
3
. Như thế, cung T
1
-
T
3
được thành lập trong G. Lúc này, yêu cầu vẫn được chấp nhận vì T

1
>>T
3.
Sau khi diễn ra việc cung cấp này, các đồ thị G

i
trên ba trạm sẽ như sau:
T1
T3
T1
T2
T2
T3
Hình 2.9. Trạng thái cung cấp tài nguyên trên 3 trạm
Yêu cầu t
22
: v-loai-tru-th(e2) kéo theo trên trạm S
2
sự tạo nên cung T
2
-T
1
bị
loại bỏ; bởi vì nó sinh ra vòng lặp trên S
2
. Tương tự như vậy, yêu cầu t
32
: v-loai-
tru-th(e3) bị từ chối bởi vì nó tạo ra vòng lặp trên S
3

. Nhưng ta cần lưu ý là nếu
trật tự theo dạng T
1
,T
2
, T
3
thì yêu cầu vừa nêu có thể được chấp nhận.
Thuật toán này đặt ra một nguyên tắc tương tự như các nhóm sắp xếp. Duy
chỉ khác nhau có một điều là nó tránh được sự thiếu thốn vô hạn, bởi vì trật tự
tổng quát được triển khai cho các giao dịch chứ không phải cho các tài nguyên.
Một giao dịch trở nên rất cần thiết là giao dịch có thời gian chờ đợi dài nhất sau
một khoảng thời gian xác định, nó đã trở thành giao dịch được ưu tiên nhất trên
tất cả các trạm mà nó đã gởi thông điệp.
2.6.4.2 Thuật toán phát hiện bế tắc
Khi các tài nguyên được sử dụng bởi giao dịch được xác định theo kiểu
động trong quá trình thi hành giao dịch, các phương pháp dự phòng bế tắc dựa
trên nền tảng các thông điệp không còn phù hợp nữa. Lúc này, ta phải sử dụng
các phương pháp phát hiện và chữa trị.
Phương pháp được mô tả bởi Menasce sẽ được trình bày. Phương pháp này
đặt ra vấn đề sử dụng một đồ thị các tranh chấp mà việc kiểm tra các tranh chấp
đó cho phép phát hiện bế tắc.
Tương tự như thuật toán vừa nêu, mỗi trạm quản lý các đối tượng riêng của
mình và việc phát hiện chỉ dựa vào thông tin cục bộ. Các trạm khởi sự các giao
dịch bị treo được đề phòng phát sinh bế tắc (mà bế tắc này có thể phát hiện tại
một trạm nào đó) cần phải đề ra các biện pháp chữa trị cho mình.
a. Các định nghĩa:
Ta cần xác định trong mọi thời điểm giữa hai giao dịch Tj và Tk quan hệ
chặn trực tiếp như sau:
T

j
> T
k
⇔ Tồn tại ít nhất một tài nguyên bị cài then bởi T
j
và yêu cầu
bởi T
k
nhưng không được đáp ứng
Học viên: Nguyên Văn Việt Đức Trang 15
Trạm S
1
Trạm
2
Trạm S
3

Báo cáo Hệ tin học phân tán
Quan hệ này được biểu hiện bằng một đồ thị gọi là đồ thị các xung đột hữu
hiệu.Sự tồn tại một vòng lặp trong đồ thị này báo hiệu cho ta biết sẽ có bế tắc
diễn ra. Một giao dịch “không bị chặn” có nghĩa là trong đồ thị biểu hiện bằng
một nút mà tại đó không có cung nào dẫn đến.
Giả sử rằng Tk là một giao dịch bị chặn. Tập hợp tất cả các giao dịch mà có
thể đạt được bằng cách chạy khắp các cung xuất phát từ Tk , theo chiều ngược
lại với hướng của chúng, và gọi là tập hợp các chặn của Tk , ký hiệu E(Tk). Các
giao dịch thuộc vào E(Tk) là các giao dịch có nguồn gốc từ sự chặn của Tk .
Tại một thời điểm cho trước, đồ thị các xung đột hữu hiệu sinh ra các quan
hệ chặn tồn tại giữa các giao dịch của hệ. ta kí hiệu B(T
k
) là tập hợp các giao

dịch bị chặn do T
k
, nghĩa là các giao dịch có thể đạt được bằng cách chạy khắp
các cung xuất phát từ T
k.
Ví dụ 1:
Cho đồ thị xung đột hữu hiệu như sau:
Hình 2.10. Đồ thị các xung đột hữu hiệu
Các giao dịch không bị chặn là T
3
,

T
4
,

T
5
Ta có:
E(T
5
) = {T
2,
T
3,
T
4,
T
5
}

B(T
5
) = {T
1,
T
3
}
Đồ thị các xung đột hữu hiệu chứa vòng lặp nếu và chỉ nếu tồn tại giao dịch
T
k.
mà tập hợp chặn của nó chứa một giao dịch bị chặn bởi T
k.
:
∃k: B(T
k.
) ∩ E(T
k.
) ≠ 0 {Tồn tại vòng lặp}
Nếu ta không muốn duy trì trên mỗi trạm một bản sao của đồ thị tổng quát thì
cần phải xây dựng một ảnh cục bộ cho phép đánh giá các điều kiện vừa nêu trên.
Đó là điều mà ta thực hiện trong giải thuật sau đây:
b. Thuật toán:
Ta kí hiệu S(T
k.
) là trạm nguồn của giao dịch T
k.
. Để cho mỗi giao dịch T
k.
,
trạm S(T

k.
) duy trì các tập hợp B(T
k.
) và E(T
k.
). Việc cập nhật E(T
k.
) cần phải
được biểu hiện trên tất cả các trạm nguồn của các giao dịch thuộc B(T
k.
). Thực
tế, giao dịch bị chặn T
k.
là phần tử của toàn bộ tập hợp chặn của các giao dịch
thuộc B(T
k.
).
Giả sử rằng T
k.
đã yêu cầu một tài nguyên e của trạm S
i
nào đó. Trên trạm
này, ta thực hiện các phép toán sau đây:
STT Phép toán
Học viên: Nguyên Văn Việt Đức Trang 16
T
5
T
2
T

1
T
3
T
4
Báo cáo Hệ tin học phân tán
1
Nếu e là có sẵn để dùng, yêu cầu được thoả mãn và ta ghi
nhận là T
k.
đang có tài nguyên.
2
Nếu e đã được cung cấp cho giao dịch T
j
thì thông điệp “T
j
chặn T
k.
” được truyền cho trạm S(T
j.
) và S(T
k.
). Sau này (j, k)
chỉ một thông điệp như vậy.
Khi nhận một thông điệp (j, k) trên một trạm S nào đó, ta thực hiện các tác
động sau đây:
1. Trên trạm S(T
j.
) nguồn của giao dịch chặn T
k.

, ta thêm T
k.
vào tập hợp
B(T
j.
) và kiểm tra rằng ta không làm phát sinh bế tắc, có nghĩa là:
B(T
j.
) ∩ E(T
j.
) = 0.
Ta gửi tiếp tục thông điệp (l, k) về phía các trạm nguồn của các giao dịch T
l
chặn T
j
nhằm cho phép các trạm S(T
k.
) cập nhật các tập hợp BB(T
l.
) của các giao
dịch bị chặn bởi T
l
. Song song với tác động trên, các thông điệp (l, k) được gửi
về trạm nguồn của các giao dịch T
k.
để cập nhật tập hợp E(T
k.
) của các giao dịch
bị chặn T
k.

.
2. Trên trạm S(T
k.
) nguồn của giao dịch bị chặn T
k.
, Ta thêm T
j
cho tập hợp
E(T
k.
) và kiểm tra không có bế tắc, có nghĩa là:
B(T
j.
) ∩ E(T
k.
) = 0.
Ta gửi tiếp tục (j,m) về phía các trạm nguồn của các giao dịch T
m
bị chặn
bởi T
k.
nhằm cho phép các trạm S(T
m.
) cập nhật các tập hợp E(T
m.
) của các giao
dịch chặn T
m
.
Các khuyến nghị giải phóng dẫn đến thuật toán đối xứng mà ta không có

điều kiện giới thiệu ở đây.
Ví dụ 2:
Hãy xét 3 trạm S
1
, S
2
và S
3.
Mỗi trạm S
i
chứa đối tượng e
i
và là nguồn giao
dịch của T
i
:
T
1
T
2
T
3
v-loai-tru-th(e
1
)
…………
v-loai-tru-th(e
2
)
v-loai-tru-th(e

2
)
…………
v-loai-tru-th(e
3
)
v-loai-tru-th(e
3
)
…………
v-loai-tru-th(e
1
)
Ta hãy tưởng tượng rằng tại thời điểm mà tất cả các giao dịch đã được thực
hiện có kết quả phép toán đầu tiên của then cài. Khi đó chuyển sang thời điểm
của phép toán thứ hai, Các giao dịch đều bị chặn. Điều đó kéo theo các sự kiện
sau đây:
T
1
trên S
2
đề nghị cung cấp e
2
có trên T
2
;
S
2
gửi (2,1) cho S
1

và S
2
, từ đó ta có:
E(T
1.
)={T
2
} B(T
1.
)= 0
B(T
2.
)={T
1
} E(T
2.
)= 0
T
2
trên S
3
đề nghị cung cấp e
3
có trên T
3
;
S
3
gửi (3,2) cho S
2

và S
3
, từ đó ta có:
B(T
3.
)={T
2
} B(T
3.
)= 0
E(T
2.
)={T
3
} E(T
2.
)={T
1
}
Học viên: Nguyên Văn Việt Đức Trang 17
Báo cáo Hệ tin học phân tán
S
2
gửi(3,1) cho S
1
và từ đó sinh ra:
E(T
1.
)={T
2

,T
3
} B(T
1.
)= 0
T
3
trên S
3
đề nghị cung cấp e
1
có trên T
1
;
S
1
sinh ra T
3
trong B(T
1.
) và ta ghi nhận là:
E(T
1.
) ∩ B(T
1.
) =
{
T
3
}

Như vậy, bế tắc được phát hiện trên S
1
.
2.7 Kết luận
Hai thuật toán vừa được giới thiệu ở trên xuất phát từ cơ sở cùng một
nguyên lý tương tự. Đó là sự thiếu chắc chắn của trạng thái các trạm xa phát
sinh vấn đề lưu trữ một “giới hạn an toàn” nhất định.
Nhưng bản thân hai thuật toán này, khi triển khai lại cho phép sử dụng các
kỹ thuật khác nhau. Trong thuật toán dự phòng, ta kiểm tra trên trạng thái từng
phần một điều kiện mạnh hơn điều kiện tối thiểu. Trong thuật toán phát hiện, ta
có trong một trạm trạng thái của các trạm khác. Thông thường, mỗi trạm đều
nhận các thông tin dư thừa.
Học viên: Nguyên Văn Việt Đức Trang 18
Báo cáo Hệ tin học phân tán
Chương 3. BÀI TẬP
Dùng phương pháp sắp xếp các giao dịch của Lomet hãy xác định cho trạm
i thuật toán cập nhật đồ thị cục bộ khi nhận thông điệp mới có đóng dấu H(ANj)
đến từ trạm j.
Ta cần phải đảm bảo rằng một thông điệp AN
k
nào đó như H(AN
j
)>H(AN
k
)
được xếp trước AN
j
ngay cả khi nó chỉ đến trạm i sau AN
j
. Ngoài ra, ta còn giả

sử rằng mỗi trạm j có thể gửi cho chính trạm i nhiều thông điệp AN'
j
, AN''
j
,
AN'''
j
, liên quan đến các giao dịch khác nhau.
Để giải quyết vấn đề trên, ta cần phải giải quyết các vấn đề sau:
1. Trước khi có thông điệp gửi tới từ trạm j, tại trạm i lúc này duy trì đồ thị cục
bộ với nhiệm hình thành trật tự cho các giao dịch. Các giao dịch trên trạm i tại
thời điểm trước khi có thông điệp H(AN
j
) được sắp xếp trong hàng đợi, tiêu chí
sắp xếp là dấu của các thông điệp. Trạm phát được gắn một giá trị gọi là dấu.
Giá trị này có tính chất thời điểm cho trạm phát thông tin và dựa vào đồng hồ lô-
gích cục bộ của chính trạm đó. Các đồng hồ được lấy thông qua hội thoại giữa
các trạm. Trạm i của mạng có thể gửi cho các trạm khác thông điệp có dạng (T,
H
i
, i) trong đó H
i
là dấu của thông điệp tức là đồng hồ lô gích của nó và T có thể
nhận một trong ba giá trị REQ, REL và ACQ.
REQ: được phát đi cho tất cả các trạm khi trạm i muốn vào trong đoạn găng.
REL: được phát đi cho tất cả các trạm khi trạm i đã rời khỏi đoạn găng.
ACQ: được gửi bởi trạm j cho trạm i khi trạm j đã nhận được từ trạm i thông
điệp REQ
Giả sử rằng, tại thời điểm thông báo của trạm j gửi tới, đồng hồ thời gian lô gích
của trạm i sẽ thực hiện phép toán:

Nếu H
i
thì
H
i
:= H
j
+1;
Kết thúc nếu
và thông điệp H(AN
j
) được xếp vào hàng đợi.
2. Tại trạm i có tài nguyên e
i
, phương pháp Lomet nhằm sắp xếp trật tự các giao
dịch để chống xung đột xảy ra chứ không áp dụng cho các tài nguyên. Điều kiện
cung cấp tài nguyên là duy trì tình trạng không vòng lặp cho các đồ thị G
i
. Căn
cứ theo cấu trúc, điều kiện này có thể được kiểm tra cục bộ trên từng trạm. Ta sẽ
chỉ ra G có được tình trạng không vòng lặp như thế nào. Để làm việc đó, ta bắt
đầu chỉ ra sự tồn tại của vòng trong G kéo theo sự tồn tại của vòng trong ít nhất
một G’
i
.
Trên trạm i có tài nguyên e
i
, giao dịch T
i
và ký hiệu trạm là S

i
.
Trạm j có tài nguyên e
j
, giao dịch T
j
và ký hiệu trạm là S
j
. Giữa giao dịch T
i

T
j
hình thành quan hệ:
Học viên: Nguyên Văn Việt Đức Trang 19
e
i
T
i
T
j
Báo cáo Hệ tin học phân tán
Xét xem có vòng lặp trong G không:
T
i1
: phát thông báo a_loaitru_th(ei, ej)

T
i2
: v_loaitru_th(e

j
)
T
j1
: a_loaitru_th(e
j
, e
i
)

T
j2
: v_loaitru_th(e
i
)
vậy giữa giao dịch T
i1
và T
j2
hình thành một cung trong G, sau khi xảy ra việc
này ta phân giải đồ thị G’
i
trên trạm i như sau:
T
i
T
j
Nếu đã hình thành cung T
i
-> T

j
thì các yêu cầu khác tạo nên các cung giữa các
cặp giao dịch khác như :
T
i+1
T
j+1
………
T
i+n
T
j+m
sẽ bị từ chối.
3. Để đảm bảo rằng một thông điệp AN
k
nào đó như H(AN
j
)>H(AN
k
) được xếp
trước AN
j
ngay cả khi nó chỉ đến trạm i sau AN
j
. Ngoài ra, ta còn giả sử rằng
mỗi trạm j có thể gửi cho chính trạm i nhiều thông điệp AN'
j
, AN''
j
, AN'''

j
, liên
quan đến các giao dịch khác nhau:
Do sử dụng đồng hồ logich và mỗi Gi là hình ảnh thu nhỏ của G nên mặc
dù thông điệp AN
k
đã phát đi và được đóng dấu H(AN
k
), nhưng còn lang thang
trên đường và đến trạm i sau thì trạm i vẫn có hình ảnh về thông điệp của AN
k
.
Vì vậy trạm i vẫn sắp xếp AN
k
vào hàng đợi dựa trên dấu H(AN
k
).
Để đảm bảo được như vậy thì phải đảm tính gắng bó dữ liệu mạnh. Tại mọi lúc
mọi nơi thì hình ảnh thu nhỏ của G trên i là tức thời, nêu không đảm bảo được
tinh gắng bó mạnh thì thông điệp AN
k
sẽ đến sau AN
j
hoặc mất thông điệp mặc
dù AN
k
phát thông điệp trước.
Học viên: Nguyên Văn Việt Đức Trang 20
Báo cáo Hệ tin học phân tán
Chương 4. 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.Hồ Chí
Minh, 2002.
[2] Nguyễn Gia Định, Nguyễn Kim Tuấn, Nguyên lý hệ điều hành, NXB Khoa
học và Kỹ thuật Hà Nội, 2005.
[3] Distributed systems, george coulouris – jean dollimore – tim kindberg,
pearson education, 2005.
Học viên: Nguyên Văn Việt Đức Trang 21
Báo cáo Hệ tin học phân tán
PHỤ LỤC
LỜI MỞ ĐẦU 1
Chương 1. BẾ TẮC TRONG HỆ TẬP TRUNG 3
1.1 Bế tắc 3
1.2 Điều kiện hình thành bế tắc 4
1.2.1 Loại trừ lẫn nhau (Mutual excution) hay độc quyền sử dụng 4
1.2.2 Giữ và đợi (Hold and wait) 4
1.2.3 Không ưu tiên (No preemption) 4
1.2.4 Đợi vòng tròn (Circular wait) 5
1.3 Các phương pháp sử dụng trong hệ tập trung để xử lý bế tắc: 5
1.3.1 Phương pháp dự phòng 5
1.3.2 Phương pháp phát hiện và chữa trị 5
1.3.3 Kết luận 5
Chương 2. BẾ TẮC TRONG HỆ PHÂN TÁN 6
2.1 Một số khái niệm 6
2.2 Cung cấp tài nguyên duy nhất 7
2.3 Truy cập bởi server duy nhất 8
2.4 Truy cập tương tranh có điều khiển 8
2.5 Cung cấp một tập hợp các tài nguyên - Vấn đề bế tắc 9
2.6 Phân tán chức năng cung cấp 10
2.6.1 Duy trì tính duy nhất của trạng thái tài nguyên 10

2.6.2 Phân tán biểu hiện trạng thái và chức năng cung cấp 10
2.6.3 Các phương pháp cung cấp sử dụng trạng thái tổng quát 11
2.6.4 Các phương pháp cung cấp theo kiểu sử dụng trạng thái từng phần 12
2.6.4.1 Thuật toán dự phòng bế tắc 13
2.6.4.2 Thuật toán phát hiện bế tắc 15
2.7 Kết luận 18
Chương 3. BÀI TẬP 19
Chương 4. TÀI LIỆU THAM KHẢO 21
Học viên: Nguyên Văn Việt Đức Trang 22

×