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

Deadlock distributed databases

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 (478.98 KB, 39 trang )

Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

Trường Đại Học Xây Dựng
Khoa Công Nghệ Thông Tin – Bộ Môn Công Nghệ Phần Mềm
-----------------------***------------------------

BÁO CÁO CƠ SỞ DỮ LIỆU
Đề tài: Deadlock Detection in Distributed Databases - Phát
hiện khóa chết trong cơ sở dữ liệu phân tán

Giảng viên hướng dẫn:

Nguyễn Hồng Hạnh

Nhóm thực hiện:

Vũ Tuấn Anh
Đinh Văn Tuân
Nguyễn Thị Như Quỳnh
Dương Văn Thỉnh
Nguyễn Hồng Giang
Phạm Văn Luân

Hà Nội, 2009
Nhóm thực hiện : Nhóm 1

-1-



Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

PHÁT HIỆN DEADLOCK TRONG CƠ SỞ DỮ LIỆU PHÂN TÁN
EDGAR KNAPP
Sở Khoa học máy tính, Đại học Texas tại Austin, Austin, Texas 78712

Các vấn đề phát hiện deadlock trong hệ thống phân tán đã trải qua quá
trình nghiên cứu rộng rãi. Một ứng dụng quan trọng liên quan đến các hệ
thống cơ sở dữ liệu phân tán. Một mô hình thống nhất trong đó công bố các
thuật toán có thể được đổi kiểu đã cho, và các nguyên tắc cơ bản mà trên đó
những sơ đồ phát hiện deadlock phân tán được dựa được trình bày. Những
nguyên tắc này đại diện các cơ chế phát triển các thuật toán phân tán nói
chung và những sơ đồ phát hiện deadlock nói riêng. Ngoài ra, một trật tự
deadlock của các mô hình được trình bày; mỗi mô hình được đặc trưng bởi
các hạn chế được áp dụng theo biểu mẫu nguyên yêu cầu có thể giả định.
Các trật tự bao gồm các mô hình của tài nguyên đã biết và giao tiếp
deadlock. Các thuật toán được phân loại phù hợp với cả những nguyên lý
tầng dưới và những truy vấn thông thường của nguồn mà chúng chấp thuận.
Một số thuật toán được thảo luận một cách chi tiết, và sự phức tạp của chúng
giới hạn bởi số thông điệp được sử dụng để so sánh. Điểm được làm để
chứng minh sự chính xác cho các thuật toán đang sử dụng những luận cứ
toán tử là bế tắc và lỗi nghiêng, do đó, những thử nghiệm chỉ hoàn thành
hình thức là đủ cho việc chứng minh tính đúng đắn.
Bộ miêu tả thể loại và Tiêu đề: C.2.4 [máy tính-Giao tiếp mạng]: Hệ
thống phân phối các ứng dụng, phân phối các cơ sở dữ liệu, mạng lưới hoạt
động hệ thống; D.4.1 [vào hệ điều hành]: Quy trình quản lý-sự trùng hợp;
deadlocks; đồng bộ hóa; D.4.7 [vào hệ điều hành]: Thiết kế-Tổ chức và phân
phối hệ thống; H.2.4 [Cơ sở dữ liệu Quản lý]:-Hệ thống phân phối các hệ

thống; giao dịch chế biến.
Điều khoản chung: Algorithms ( Nguyên lý, nguyên tắc)
Các Từ khóa và cụm từ: Deadlock phát hiện, deadlock mô hình, phân phối
deadlocks
INTRODUCTION
Phát hiện Deadlock là một vấn đề quan trọng trong hệ thống cơ sở dữ
liệu (DBSs), và có nhiều sự chú ý đã được dành riêng cho nó trong sự
nghiên cứu cộng đồng. Nói chung, tình trạng một deadlock có thể là kết quả
Nhóm thực hiện : Nhóm 1

-2-


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

của cạnh tranh các nguồn tài nguyên, chẳng hạn như nhiều độc quyền yêu
cầu cơ sở dữ liệu giao dịch truy cập vào dữ liệu bản ghi.
Các vấn đề deadlock có nhiều yếu tố thú vị. Trong số này có deadlock
phòng, chống, tránh deadlock, và trong kết hợp với phát hiện deadlock-lựa
chọn của một nên gọi là nạn nhân có phục hồi hoặc dừng sự hủy bỏ
deadlock, và cuối cùng, deadlock giải quyết chính nó. Trang này chỉ là có
liên quan với các khía cạnh của phát hiện deadlock. Gần đây phát triển
trong lĩnh vực phát hiện deadlock phân tán những thuật toán đã được khảo
sát, với một nhấn mạnh đặc biệt vào việc chúng liên quan đến DBSs phân
tán Bài báo giới thiệu một khung mô hình cho thảo luận của các thuật toán
này. Sự trừu tượng đã đạt được cách này cho phép chúng tôi nói chuyện về
các thuật toán trong điều kiện của các khái niệm lý thuyết, thay vì chỉ đưa ra
một hiện tượng luận mô tả về hoạt động của các thuật toán (cf. Elmagarmid

[1986]).
Bài báo được tổ chức như sau. Phần 1 tập trung vào mối quan hệ giữa
vấn đề deadlock và DBSs. Đối với lợi ích của những độc giả không quen
thuộc với các thuật ngữ cơ sở dữ liệu cần thiết, một phác thảo của các khái
niệm xác đáng có liên quan được đưa ra. Để có một chi tiết hơn điều trị của
tài liệu này, người đọc được tham khảo những văn bản gần đây về điều
khiển tranh chấp, ví dụ, Bernstein et al. [1987] và Papadimitriou [1987].
Tiếp theo, một mô hình cơ sở dữ liệu được trình bày, và một đặc điểm kỹ
thuật của vấn đề phát hiện deadlock trong giới hạn của mô hình này đã được
phát triển. Phần 2 đưa ra một phân loại hệ thống của các mô hình deadlock
như là chúng xuất hiện trong cơ sở dữ liệu ứng dụng. Một trật tự của các mô
hình mang lại một trong những cách phân loại của hầu hết các phương pháp
phát hiện deadlock phân tán đã tìm thấy trong tài liệu được giới thiệu. Một
phân loại khác, tập trung vào các lý thuyết nguyên lý tầng dưới các công
việc trong những đồ thị phát hiện deadlock phân tán, được đưa ra trong phần
3. Một cuộc khảo sát của một số thuật toán có thể được tìm thấy trong Phần
4, với các ví dụ từ mỗi loại của các giới thiệu trong hai phần trước đó. Trong
phần cuối cùng chất lượng tương đối của các thuật toán được trình bày sẽ
được thảo luận. Các tài liệu tham khảo bao gồm một danh sách đầy đủ về
các công việc đã thực hiện trong lĩnh vực phát hiện deadlock phân tán sau
năm 1980. Những giấy tờ trước đó bao gồm "Các bài viết cổ điển " liên quan
đến đối tượng trên.

Nhóm thực hiện : Nhóm 1

-3-


Deadlock Detection in Distributed Databases


Nhóm thực hiện : Nhóm 1

B/m Công Nghệ Phần Mềm

-4-


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

1. Các vấn đề Deadlock
1.1 Giới thiệu tóm tắt về điều khiển tranh chấp
Các vấn đề deadlock trong DBSs là một phần của khu vực điều khiển
tranh chấp. Điều khiển tranh chấp nói về vấn đề hoạt động phối hợp xử lý
các phép toán song song, chia sẻ quyền truy nhập dữ liệu, do đó có khả năng
gây nhiễu với nhau. Các đối tượng của nghiên cứu là một sự rút ra (mô
hình) của rất nhiều các loại hình hệ thống thông tin khác biệt. Thành phần
chính của mô hình này là sự giao dịch. Thông thường, một giao dịch là một
sự cài đặt của chương trình mà truy nhập một cơ sở dữ liệu được chia sẻ.
Trong những mô hình giao dịch của chúng tôi được đặc trưng bởi một chuỗi
ký tự các phép toán, ví dụ, R (x) kí hiệu các phép toán đọc một vài phần tử
dữ liệu x từ cơ sở dữ liệu và W (x) chấp nhận cho các phép toán gán một giá
trị mới vào mục dữ liệu x trong cơ sở dữ liệu. Khi hai hoặc nhiều hơn các
giao dịch thực hiện tranh chấp, các phép toán thực hiện cơ sở dữ liệu của
chúng trong một fashion bị xếp chồng. Tức là, các phép toán từ một giao
dịch có thể thực hiện giữa hai phép toán của giao dịch khác. Kỹ thuật đan
xen này có thể là nguyên nhân những giao dịch xử lý sai hoặc gây nhiễu, do
đó dẫn đến một trạng thái không nhất quán cơ sở dữ liệu.
Thành phần của DBS điều khiển cấp lệnh tương đối trong đó các phép

toán cơ sở dữ liệu được truy vấn bởi thực hiện những giao dịch được gọi là
trình lập dịch. Kỹ thuật đan xen xác định trình lập dịch của các phép toán cơ
sở dữ liệu mà phù hợp với cơ sở dữ liệu thì được bảo toàn. Nói cách khác kỹ
thuật đan xen của các phép toán cơ sở dữ liệu được gọi là một lập trình.
Một ví dụ, xem trình lập dịch đưa ra dưới đây gồm hai giao dịch t 1 và t2
và hai đại lượng x và y (những chú thích nhỏ theo Bernstein et al. [1987] và
Papadimitriou [1987] ):
t1: R (x)
t2 :

W (y)
R (y)

W (x)

Những hình thức hóa trình lập dịch này theo dãy của các phép toán cơ
sở dữ liệu : giao dịch đầu t 1 đọc cơ sở dữ liệu mục x, sau đó t 2 đọc y, theo
sau đó t1 viết y, và cuối cùng là t2 viết x.

Nhóm thực hiện : Nhóm 1

-5-


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

1.2 Deadlock trong hệ tập trung
Có rất nhiều chiến lược khác nhau được biết đến cho các trình lập dịch

cho việc giải quyết vấn đề của tranh chấp truy nhập mà không cần thỏa hiệp
cơ sở dữ liệu nhất quán. Một thảo luận chi tiết của các chiến lược trên là
vượt ra ngoài phạm vi của nghiên cứu này. Các độc giả quan tâm được tham
khảo tới Bernstein et al. [1987] và Papadimitriou [1987].
Bản phổ biến nhất của các chiến lược này gọi là khóa. Khóa là chiến
lược dành riêng quyền truy cập đúng (ổ khóa) mà ngăn chặn các giao dịch
khác nhận được từ một số (xung đột) ổ khóa đã biết.
Ví dụ, xem xét một giao thức gọi chung là hai giai đoạn cơ bản khóa
(2PL), mà sử dụng rộng rãi trong các hệ thống thương mại. Trong giao thức
này một giao dịch đã được giải phóng một khóa sau đó có thể không đạt
được nhiều hơn bất cứ ổ khóa. Nếu chiến lược này được áp dụng vào lập
trình cho ví dụ trên, các diễn tiến sau đây được giới hạn phải xảy ra:
t1 khóa x,
t2 khóa y,
t1 đợi t2 để giải phóng khóa y,
t2 đợi t1 để giải phóng khóa x.
Do đó cả hai giao dịch đã bị nghẽn, đang đợi cho cái khác: một tình
huống deadlock.
Thông thường một deadlock trong DBS có thể được định nghĩa như là
"một tình huống mà trong đó mỗi giao dịch trong một tập hợp các giao dịch
bị chặn đang chờ các giao dịch khác trong tập hợp, và do đó không có gì trở
nên không nghẽn trừ khi có sự can thiệp từ bên ngoài" (cf. Bernstein et al.
[1987]).
Mặc dù một số những giao thức điều khiển tranh chấp có thể chứng tỏ
deadlock miễn phí (e.g., bảo toàn 2PL, cây khóa), hầu hết các giao thức đã
biết là dễ bị tổn thương đến deadlock. Chúng tôi xem xét tiếp một số cách
khác mà deadlock có thể phát sinh trong một DBS.
Hãy cùng chúng tôi xem xét các trường hợp của đa phiên bản trình lập
dịch, nơi mà mỗi phép toán viết của một số mục dữ liệu sản xuất một phiên
bản mới của mục dữ liệu này, và mỗi phép toán đọc của một mục dữ liệu

Nhóm thực hiện : Nhóm 1

-6-


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

được ánh xạ tới một số phiên bản của mục dữ liệu này mà đã được viết trước
đó. Trong giao thức cho một đa phiên bản – khung nhìn - serializability
(MV-VSR) trình lập dịch, bước cuối cùng của một giao dịch được điều trị
theo một cách đặc biệt để bảo đảm rằng nhiều nhất là một phiên bản không
ràng buộc hiện hành cho bất kỳ mục dữ liệu nào trong cơ sở dữ liệu. Nếu
như vậy một trình lập dịch được đưa ra lập trình cho các ví dụ trước, theo đó
xảy ra:
t1 đọc x,
t2 đọc y,
t1 đợi cho t2 để hoàn thành (cam kết),
t2 đợi cho t1 để hoàn thành (cam kết),
và, một lần nữa, kết quả là deadlock.
Khóa chuyển đổi là một kỹ thuật điều khiển tranh chấp cho phép nâng
cấp một khóa thành một loại khóa mạnh hơn, chẳng hạn như chuyển đổi một
khóa đọc trên một dữ liệu vào một khóa ghi trên cùng dữ liệu đó. Trình lập
dịch đó cho phép cho khóa chuyển đổi dễ bị hỏng đến tình huống deadlock
cho một lý do nào được nêu ra. Để xem được điều này, xem xét các ví dụ
sau:
t1: R (x)
W (x)
t2 :

R (x)
W (x)
Sau khi đọc cả hai đã được thực hiện, với t 1 và t2 tổ chức đọc các khóa
trên x, không phải giao dịch có thể chuyển đổi nó đọc khóa vào một khóa
viết, vì vậy chúng bị khóa vĩnh viễn.
Khóa đa chi tiết là một phương thức nơi mà các giao dịch đó có thể
khóa các chi tiết khác nhau của mục dữ liệu, như là một bản ghi, một trang
đĩa, hoặc toàn bộ một tập tin. Trong các giao thức khóa đa chi tiết, deadlock
có thể xảy ra cho nhiều hơn một lý do. Trước tiên, chúng tôi có những vấn
đề do đã nói đến quy tắc hai giai đoạn và khóa chuyển đổi, đặc biệt là trong
phép toán AND cùng với sự leo thang khóa, một kỹ thuật mà trong đó một
giao dịch nhận được quá nhiều khóa trên bản ghi dữ liệu của chi tiết nhỏ có
thể tăng chi tiết của nó theo khóa yêu cầu. Khác nữa vấn đề phát sinh khi có
hạt được cấu trúc trật tự trong một gốc đồ thị không tuần hoàn có hướng.
Trong trường hợp này, một giao thức khóa có thể yêu cầu một giao dịch mà
muốn khóa một số bộ hạt tới phần lớn khóa cha mẹ của các hạt đầu tiên này.
Nếu hai giao dịch xảy ra để thử khóa cùng một bộ hạt, chúng có thể được
hưởng một điểm mà ở đó chúng giữ cả hai khóa trên chính xác một nửa của
Nhóm thực hiện : Nhóm 1

-7-


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

các cha mẹ của các thiết lập để cho không phải của chúng sẽ thành công.
Nếu có nhiều hơn hai giao dịch cạnh tranh cho một bộ hạt giao nhau, sau đó
deadlock có thể đều dẫn tới kết quả.

Chú ý rằng có một sự khác biệt cơ bản giữa deadlocks do đa số khóa và
các chương trình khác được đề cập ở trên. Các cuộn cảm được giới hạn bởi
giao tiếp deadlock, từ đó nó được nghiên cứu đầu tiên trong hệ thống của
các quá trình giao tiếp, nơi có một quy trình đợi để giao tiếp với bất kỳ từ
một tập hợp các hàng xóm. Cùng một nguyên tắc làm cơ sở đa số khóa,
trong đó một giao dịch mà bị khóa có thể tiến hành sau khi một số giao dịch
khác giải phóng nó khóa trên một phụ huynh của các hạt trong câu hỏi.
Những ví dụ khác chứng minh những gì đã được gọi là một nguồn
deadlock, mà giả định rằng một quá trình trở thành hết khóa chỉ sau khi nhận
được tất cả các nguồn mà nó đang phải chờ. Trong trường hợp của một mô
hình cơ sở dữ liệu mà một giao dịch hoặc hoạt động hoặc đang chờ chính
xác một nguồn, các phân biệt giữa các nguồn lực và giao tiếp deadlock là
không liên quan vì chúng giảm cho cùng một khái niệm.
Vì chúng ta sẽ thấy trong Phần 2, có một trật tự của toàn bộ các mô
hình deadlock mà các bao hàm - trong số những thứ khác – nguồn truyền
thống và các mô hình giao tiếp.
1.3 Deadlock trong Cơ sở dữ liệu phân tán
Nói chung, một DBS phân tán bao gồm một số lượng các khu vực,
mỗi khu vực đó cấu tạo nên một hệ thống tập trung. Do đó tất cả các vấn đề
của phần trước cộng thêm những vấn đề phân tán tự nhiên của cơ sở dữ liệu
(e.g., sao chép các dữ liệu, một giao dịch đơn thực hiện song song tại các
khu vực khác nhau) được trình bày. Ngoài ra, phân tán deadlock khó hơn là
để phát hiện, từ mỗi khu vực chỉ có một vùng xem toàn bộ hệ thống, và vì
vậy sự hợp tác của các khu vực được đòi hỏi để phát hiện deadlocks liên
quan đến nhiều hơn một khu vực.
Cả hai nguồn lực và giao tiếp deadlocks có thể được phân tán. Trong
DBSs phân tán, các giao dịch mà truy cập không định khu dữ liệu di chuyển
đến các khu vực khác bởi các yêu cầu giao dịch phụ mà có thể chạy tranh
chấp với nhau. Vì vậy, nguồn gốc giao dịch bị chặn cho đến khi tất cả các
giao dịch phụ kết thúc, một dấu hiệu của các mô hình nguồn.

Giao tiếp deadlock có thể xảy ra nếu trong một cơ sở dữ liệu sao chép
một giao dịch yêu cầu giá trị của một số mục dữ liệu không định khu và bị
chặn cho đến khi một trong các khu vực mà giữ một bản sao của mục dữ liệu
này trả lời. Hơn nữa, nó có thể tái sinh giao dịch phụ chạy song song trên

Nhóm thực hiện : Nhóm 1

-8-


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

một cơ sở dữ liệu sao chép, kết quả tình huống này là nguồn và các mô hình
giao tiếp được kết hợp.
Như một ví dụ một tác động qua lại giữa cả hai mô hình, chú ý đến
một DBS phân tán với dữ liệu sao chép. Gifford [1979] đã chỉ ra rằng để duy
trì tính phi mâu thuẫn cơ sở dữ liệu, một giao dịch mà muốn đọc (viết) một
mục dữ liệu sao chép, phải đọc (viết) r (w) ra các bản sao của n bản sao các
mục dữ liệu như vậy r + w > n và 2w > n. Điều này là để bảo đảm rằng
nhiều nhất là một trong những người viết có quyền truy nhập vào một mục
dữ liệu sao chép tại một thời điểm. Để đọc hoặc viết một số bản sao của một
mục dữ liệu, một giao dịch phải yêu cầu và nhận được một ổ khóa trên bản
sao này. Do đó, đọc và viết của một mục dữ liệu phát sinh như vậy gọi là ( r n)
và (w n) nguồn truy vấn, tương ứng với nhau. Những yêu cầu này đòi hỏi cơ
bản một sự kết hợp của các nguồn lực và các mô hình giao tiếp.
Một mô hình thống nhất của một DBS tầng dưới được phân tán hầu hết
các thuật toán tìm thấy tại các tài liệu được thực hiện chính xác trong những
phần sau.

1.4 Các mô hình cơ sở dữ liệu
Chúng tôi giới thiệu một mô hình do Menasce và Muntz [1979]
nghiên cứu các thuật toán phát hiện deadlọck cho các DBSs phân tán. Một
DBS phân tán bao gồm một tập hợp N khu vực, S 1, S2, . . . , SN, kết nối bởi
một mạng giao tiếp. Mạng được giả định là đáng tin cậy và được kết nối đầy
đủ. Mỗi khu vực là một cơ sở dữ liệu tập trung một vài phần bộ nhớ của cơ
sở dữ liệu. Có M giao dịch, T 1, T2, . . . , TM đang chạy trên cơ sở dữ liệu phân
tán. Một giao dịch được trình bày truy vấn nguồn đến một giao dịch quản lý
(TM), cũng được gọi là bộ điều khiển. Có một bộ điều khiển C i theo khu vực
Si. Một truy vấn nguồn có thể được yêu cầu khóa một số mục dữ liệu hoặc
có thể có một đoạn tóm tắt ý nghĩa. Một giao dịch là bị chặn từ thời gian đó
trình bày một yêu cầu cho một TM cho đến khi TM chấp thuận yêu cầu và
giao dịch trở nên hoạt động. Một truy vấn nguồn có thể được nội vùng hoặc
có thể tham khảo tới một nguồn ở khu vực khác, trong đó có trường hợp
giao dịch được phân tán. Một giao dịch phân tán T i được thực thi bởi những
chi nhánh giao dịch tij, mà nó là chi nhánh địa phương cho giao dịch T i tại
khu vực Sj. Trong trường hợp một chi nhánh giao dịch tij truy vấn một nguồn
không định xứ mà được quản lý bởi một số bộ điều khiển C m , bộ điều khiển
Cj truyền các yêu cầu tới chi nhánh t im, thông qua bộ điều khiển Cm. Khi tim
có được nguồn truy vấn từ Cm nó sẽ gửi một thông điệp đến tij (thông qua
Cm và Cj) chỉ ra rằng nguồn đã có được. Do vậy số những khu vực truy vấn
luôn luôn ở giữa hai chi nhánh của cùng một giao dịch.
Nhóm thực hiện : Nhóm 1

-9-


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm


Khi các chi nhánh trong một giao dịch Ti không cần dài hơn một nguồn
quản lý bởi bộ điều khiển Cm, chúng liên lạc với chi nhánh tim, nơi mà có
trách nhiệm cho nguồn thoát ra tới C m. Chúng tôi giả thiết rằng các thông
điệp đã gửi đi bởi bất kỳ bộ điều khiển C i tới Cj nhận theo tuần tự và trong
thời gian xác định. Chúng tôi giả thiết xa hơn rằng nếu một giao dịch đơn
chạy bởi chính nó trong DBS phân tán, nó sẽ kết thúc trong thời gian xác
định và tất cả các nguồn thoát ra. Khi hai hoặc nhiều hơn các giao dịch chạy
song song, deadlock có thể phát sinh.
Một chi nhánh giao dịch được gọi là nhàn rỗi nếu nó là đang chờ để thu
được một nguồn; nó được gọi là đang chạy nếu nó không phải là nhàn rỗi.
Vì vậy, nếu một chi nhánh không bao giờ có được một nguồn truy vấn, nó là
vĩnh viễn nhàn rỗi. Đối với hệ thống các ký hiệu đơn giản, chúng tôi có thể
gán giá trị nhận dạng một chỉ số dưới đơn (chứ không phải là một chỉ số đôi)
đến một chi nhánh. Vì vậy ti ký hiệu cho chi nhánh thứ i.
Trong những phần tiếp theo chúng tôi thường xuyên tham khảo tới các
quá trình thay vì các chi nhánh giao dịch. Các quy trình là mạnh hơn các chi
nhánh giao dịch. Chúng được giả thiết để biết được nhận dạng của tất cả các
quy trình mà chúng đang đợi, ví dụ, bằng cách truy cập vào bảng bộ điều
khiển của chúng. Bên cạnh đó gửi truy vấn và phát ra các thông điệp như chi
nhánh giao dịch, chúng cũng có thể trao đổi các thông điệp khác. Điều này
có nghĩa là, với tôn trọng sự tính toán deadlock, các giao dịch là các đối
tượng bị động, trong khi các quy trình đang hoạt động tham gia phát hiện
deadlock. Trong mô hình cơ sở dữ liệu của chúng tôi, các quy trình có thể
xem như là thuộc một phần bộ điều khiển và một phần để giao dịch. Mặc dù
có thể có được nhiều nhất một chi nhánh giao dịch tại trạm đó, không có các
hạn chế đối với các quy trình. Đối với bộ điều khiển, thông điệp chuyển giữa
các quy trình được giả định là vào trước, ra trước.
Ở bất kỳ thời điểm nào một quy trình ở một trong hai trạng thái: bị
chặn hoặc đang thực hiện. Một quá trình là bị cấm từ thời gian đó các vấn đề

truy vấn nguồn cho đến khi nó nhận được một thông điệp chấp nhận cho các
nguồn được truy vấn. Nếu một quá trình không bao giờ nhận được một
thông điệp chấp nhận mà nó chờ đợi, đó là vĩnh viễn bị cấm. Trong khi một
quá trình bị chặn nó có thể không gửi bất kỳ yêu cầu hoặc cho phép các
thông điệp. Tuy nhiên, nó có thể, gửi và nhận các thông điệp khác hoặc thực
hiện công việc khác (ví dụ như, có liên quan đến phát hiện deadlock). Các ví
dụ về các trạng thái này được đưa trong các phần sau.
Do đó từ trước chúng tôi tham khảo hoặc các chi nhánh giao dịch hoặc
các quy trình, tùy thuộc vào biến thể của các mô hình thích hợp hơn cho các
cuộc thảo luận của chúng tôi.
Nhóm thực hiện : Nhóm 1

- 10 -


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

1.5 A specification of the Deadlock Problem ( Đặc điểm của vấn đề
Deadlock)
Một giao dịch đồ thị chờ đợi (WFG) là một mô hình toán học về đề tài
yêu cầu. Các đỉnh của đồ thị kết hợp với tác nhân giải quyết (hoặc xử lý, phụ
thuộc vào hoàn cảnh). Những điểm trực tiếp trên đồ thị miêu tả những khối
quan hệ giữa những tác nhân (những xử lý). Một đỉnh với việc hướng ra
những cạnh tương ứng với những tác nhân xử lý rảnh rỗi (khối xử lý). Chính
xác hơn, có một cạnh trong WFG từ tác nhân giải quyết tij tới tkj nếu trình
điều khiển Cj có một yêu cầu từ tij cho phương hướng kiểm soát bởi tkj. Như
vậy có một cạnh sẽ được gọi là cạnh kiểm soát trong. Có một cạnh từ tij tới
tin nếu tij đang chờ đợi một thông điệp cung cấp từ tim (đến khi nó thu được

một cách quản lý bởi Cm), được gọi là cạnh kiểm soát ngoài.
Một cấu trúc tuần hoàn trong đồ thị này biểu thị cho một Deadlock.
Định nghĩa chính xác của thuật ngữ cấu trúc tuần hoàn phụ thuộc vào loại
Deadlock chúng ta xét đến. Hình 1 cho ta một ví dụ:

Có 5 phiên giao dịch từ T1 → T5, được thực hiện bởi 8 tác nhân giao dịch.
Đỉnh nối trực tiếp từ nút t11 đến nút t21 cho thấy rằng tác nhân giao dịch t11 đã
bị khóa. Cạnh này là một cạnh kiểm soát trong, trái lại cạnh nối (t21 – t22) lại
là cạnh kiểm soát ngoài. Nút t22 kô có cạnh ra nào, chính vì vậy nó rất linh
hoạt (kô bị khóa). Nút t11 có 2 cạnh ra, nghĩa là nó có 2 tài nguyên yêu cầu
Nhóm thực hiện : Nhóm 1

- 11 -


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

còn tồn tại. Lưu ý, biểu diễn của chu kỳ là:t11 → t31 → t33 → t43 → t41 → t11
trong WFG. Chu kỳ này có thể hoặc không biểu hiện cho một Deadlock, phụ
thuộc vào loại Deadlock mà chúng ta chọn. Mối quan hệ giữa Deadlock và
những WFG sẽ được nhắc đến chính xác hơn trong Section 2, khi chúng ta
nói về những đặc điểm của các loại Deadlock.
Sự chính xác của thuật toán về Deadlock phụ thuộc vào 2 điều kiện.
Đầu tiên, mọi Deadlock phải được tìm ra cuối cùng. Điều này cấu thành
những thuộc tính tiến bộ cơ bản mà bất cứ phương án nào cũng phải có. Thứ
2, nếu một Deadlock được tìm ra thì nó phải thực sự tồn tại (thuộc tính chắc
chắn). Tìm nhầm Deadlock sẽ phải trả giá cho những message bị chậm trễ và
những WFG bị quá hạn, chúng được gọi là những Deadlock ma. Trong sự có

mặt của hệ thống tự động bỏ qua kô Deadlock có thể đảm bảo việc chọn
đúng một Deadlock có thật. Phục vụ việc chọn một Deadlock toàn cục,
những nghiên cứu của Bernstein công bố năm 1987 cho thấy chỉ những giao
dịch theo giao thức 2PL (Two Phase Lock), một Deadlock ma chỉ có thể xảy
ra nếu một vài giao dịch tự động bỏ qua. Cho phù hợp với hầu hết những bài
viết về chủ đề, cho mục đích của cuộc thảo luận của chúng ta, ta giả sử rằng
hệ thống cơ sở dữ liệu (DBS) là tự do của việc bỏ qua tự động.
1.6 Centralized versus Distributed Deadlock Detection (Tập trung chống
lại Phát hiện Deadlock phân tán)
Có một số lý do tại sao Phát hiện Deadlock phân tán có vẻ hấp dẫn
hơn là một hệ thống tập trung, đó là một trong những tác nhân chịu trách
nhiệm cho phát hiện Deadlock. Đầu tiên, một thuật toán phát hiện Deadlock
tập trung có thể bị tấn công làm cho trung tâm phát hiện thất bại. Từ đây sự
chuẩn bị đặc biệt cho loại lỗi này phải được tạo ra ngay. Kết quả trong một
sự chậm trễ dài cho đến khi một tác nhân trung tâm mới xác định và cung
cấp thông tin chờ đợi cập nhật. Thuật toán phân tán phân bố với những loại
vấn đề này nhiều hơn những cách thông thường. Hơn nữa, vì lưu lượng lớn
đến và đi từ tác nhân trung tâm, tác nhân này có thể tạo nên nút thắt cổ chai,
giới hạn toàn bộ quá trình thực hiện của cơ sở dữ liệu phân tán.
Rõ ràng hơn trong hệ thống phân tán được cung cấp bởi sự quan sát
cho những ứng dụng điển hình, hầu hết những chu trình WFG đều rất ngắn.
Năm 1987 Bernstein đã đưa ra những lý luận giải thích lý do cho những ưu
thế về đường đi ngắn cho những đồ thị WFG. Đặc biệt, hầu như 90% những
ứng dụng của chu trình WFG có thể được dự kiến là có độ dài 2. Con số
tương tự cũng xuất hiện trong nghiên cứu của Gray năm 1981.
Quan sát cho thấy chu trình Deadlock rất ngắn làm cho Phát hiện
Deadlock tập trung kém hấp dẫn hơn. Với một thuật toán toàn cục có thể có
Nhóm thực hiện : Nhóm 1

- 12 -



Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

một thời điểm quan trọng và thông điệp trên tất cả các WFG cục bộ trong bộ
dò tìm toàn cục. Như vật một Deadlock phân tán có thể kô bị phát hiện trong
một khoảng thời gian. Từ khi hầu hết những Deadlock chỉ còn bao gồm 2
site người ta có thể phát hiện ra Deadlock hiệu quả hơn bằng những phương
pháp trực tiếp.
Mitchell và Merritt [1984] đã giới thiệu một thuật toán về Phát hiện
Deadlock phân tán hoàn toàn đầy đủ rất đơn giản và các tác giả đã chứng
minh được tính đúng đắn của nó, thực thi nó trên DBS trong vòng chưa đầy
1 giờ. Nó ra đời từ quan điểm trái ngược nhau cho rằng thuật toán về phân
tán là phức tạp hơn và khó chứng minh hơn là hệ thống tập trung.

2. Models of Deadlock (Các kiểu Deadlock)
Phụ thuộc vào ứng dụng, hệ thống cơ sở dữ liệu cho phép một con số
những loại khác nhau tài nguyên yêu cầu. Ví dụ, một giao dịch có thể thể
cần để thu được sự kết hợp của tài nguyên yêu thích (tài nguyên a và tài
nguyên b) hoặc tài nguyên c. Phần này sẽ giới thiệu một hệ thống cấp bậc
của mô hình yêu cầu sử dụng trong văn học, bắt đầu từ những mẫu biểu
(form) rất hạn chế và đi tới những mô hình với kô hạn chế nào cả. Hệ thống
cấp bậc này có thể sử dụng trong thuật toán Phát hiện Deadlock cổ điển theo
độ phức tạp của tài nguyên yêu cầu mà chúng cho phép.
2.1 One-Resource Model (Mô hình một tài nguyên)
Mô hình có tính thực tế đơn giản nhất là một trong những giao dịch có
thể có tối đa những tài nguyên yêu cầu tốt nhất tại một thời điểm. Từ đó, độ
ngoài cực đại của WFG là 1. Tìm Deadlock trong mô hình này cũng giống

như tìm chu trình trong WFG. Một định dạng chứng minh cho sự tương
xứng này sẽ được giới thiệu trong phần tiếp theo. Những mô hình khác nhau
được sử dụng trong lý thuyết nghiên cứu của hệ thống cơ sở dữ liệu
(Bernstein năm 1987 và Papadimitriou năm 1987). Một thuật toán rất đơn
giản và hay cho Phát hiện Deadlock trong mô hình một tài nguyên là của
Mitchell và Merritt năm 1984 và sẽ được mô tả trong mục 4.2.
2.2 AND model (Mô hình AND)
Trong mô hình AND, các giao dịch được cho phép để yêu cầu một tập
những tài nguyên. Một giao dịch bị khóa cho đến khi (giả sử) mọi tài nguyên
đã được yêu cầu. Bởi vậy các yêu cầu của loại này được gọi là yêu cầu
AND. Mô hình AND đồng nhất với loại mô hình tài nguyên đã được đề cập
Nhóm thực hiện : Nhóm 1

- 13 -


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

đến trong phần 1.2. Chúng ta thích thuật ngữ mô hình AND hơn vì lý do là
nó hệ thống hơn. Mô hình AND nhìn theo lối tư duy cũ của tài nguyên yêu
cầu của hệ thống cơ sở dữ liệu phân tán. Nút của WFG được gọi là nút AND
và có thể có độ ngoài lớn hơn 1. Vấn đề của Phát hiện Deadlock một lần nữa
giảm bớt việc tìm chu trình trong WFG.
Ví dụ, xem lại một lần nữa hình 1. Nút t11 có 2 tài nguyên yêu cầu còn
tồn tại, và trong trường hợp của mô hình AND cũng phải được thỏa mãn
trước khi t11 hoạt động. Ví dụ chỉ ra vị trí của Deadlock, tương ứng với chu
trình: t11 → t31 → t33 → t43 → t41 → t11 .
Chính xác hơn, chúng ta định nghĩa Deadlock trong mô hình AND

theo cách mà Chandy và Misra đề ra năm 1982: một tác nhân giao dịch t i
được gọi là phụ thuộc vào tác nhân tj nếu có một chuỗi seq = ti, ti1, …, tim, tj
của tác nhân giao dịch tức là mỗi tác nhân trong seq đều rảnh rỗi và mỗi tác
nhân trừ cái đầu tiên đều giữ một tài nguyên cho tác nhân trước trong seq
đang đợi. Chúng ta định nghĩa ti xác định phụ thuộc trên tj nếu mọi tác nhân
trong seq phụ thuộc vào cùng một trình điều khiển. Quán sát thấy, nếu t i phụ
thuộc vào tj sau đó ti còn rảnh rỗi ít nhất cho tới khi tj làm việc. Hơn nữa ti đã
bị Deadlock (Deadlocked) nếu nó phụ thuộc vào chính nó hoặc một tác nhân
phụ thuộc vào nó. Trong các trường hợp khác, Deadlock chỉ tồn tại nếu có
một chu trình những tác nhân rảnh rỗi, mỗi cái lại phụ thuộc vào cái tiếp
theo trong chu trình.
Thuật toán phát hiện Deadlock cho mô hình AND chỉ khai báo có
Deadlock tồn tại khi và chỉ khi có một chu trình tồn tại. Chú ý rằng điều kiện
này kô đơn thuần nói như thế, nếu một tác nhân ti đã bị Deadlock, thuật toán
sẽ phát hiện ra nó bị Deadlock. Thực tế nếu ti bị Deadlock nhưng kô phải
một phần của chu trình của tác nhân gây Deadlock, ti có thể kô bao giờ được
khai báo là đã bị Deadlock. Ví dụ, xét tác nhân giao dịch t53 trong hình 1, nó
đã bị Deadlock mặc dù kô phải là một phần của chu trình gây Deadlock.
Tương tự, Deadlock trong mô hình một tài nguyên cũng được định
nghĩa như vậy, thêm vào hạn chế các tác nhân giao dịch có thể có 1 yêu cầu
còn tồn tại(ví dụ như: một cạnh ra) tại một thời điểm. Nó ngay lập tức chỉ ra
rằng mô hình AND hoàn toàn khái quát hơn mô hình một tài nguyên.
Trong một số lý thuyết thuật toán đã được đề ra cho mô hình AND
(như Chandy & Misra năm 1982, tuyển tập Chandy năm 1983, Gligor &
Shattuck năm 1980, Haas năm 1981, Haas & Mohan năm 1983, Menasce &
Muntz năm 1979, Obermarck năm 1980 và 1982). Chúng ta sẽ tìm hiểu kỹ
hơn về lý thuyết của Obermarck năm 1982 và của Chandy & Misra năm
1982 trong các phần 4.1 và 4.3 một cách hoàn toàn độc lập.

Nhóm thực hiện : Nhóm 1


- 14 -


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

2.3 OR model (Mô hình OR)
Một mô hình xen kẽ của những tài nguyên yêu cầu được gọi là mô
hình OR. Một yêu cầu cho số đông những tài nguyên được thỏa mãn bởi bất
cứ một tài nguyên yêu cầu nào, như việc thỏa mãn một yêu cầu đọc cho một
món dữ liệu tái tạo bởi việc đọc bất cứ bản copy nào của nó. Mô hình này đã
được đề cập đến như một mô hình liên lạc trong phần 1.2. Trong mô hình
OR, việc phát hiện ra một chu trình chưa đủ để phát hiện ra một Deadlock.
Để thấy được, giả sử mọi yêu cầu trong hình 1 là yêu cầu OR , các nút được
gọi là nút OR. Trong trường hợp này giao dịch T1 kô bị Deadlock vì t22 kô có
canh ra, và sau khi T2 giải phóng tài nguyên mà nó nắm giữ, T1 có thể tiếp
tục.
Trong thuật ngữ của WFG, một điểm nút (knot) sẽ chỉ ra một
Deadlock [Holt năm 1972]. Theo định nghĩa, một đỉnh v được gọi là điểm
nút nếu với mọi đỉnh w có khả năng với tới v thì v cũng có khả năng với tới
w. Như vậy kô có con đường nào hình thành từ một nút chết.
Chúng ta chính thức định nghĩa Deadlock trong mô hình OR theo
thuật ngữ của tiến trình như sau: (lý thuyết của Chandy năm 1983) : một tiến
trình bị khóa nếu nó có một yêu cầu còn tồn tại. Một liên kết với mỗi tiến
trình bị khóa là một tập tiến trình, được gọi là tập phụ thuộc của nó. Một tiến
trình bị khóa bắt đầu việc thực thi trên việc nhận mọi thông điệp cung cấp từ
một tiến trình trong tập phụ thuộc của nó. Nói cách khác nó kô thay đổi
trạng thái hoặc tập phụ thuộc của nó. Dễ thấy, một tập S của các tiến trình bị

Deadlock nếu mọi tiến trình trong S bị khóa vĩnh viễn. Một tiến trình bị
khóa vĩnh viễn nếu nó kô bao giờ nhận được một thông điệp cung cấp từ bất
cứ tiến trình nào trong tập phụ thuộc của nó. Chính xác hơn, một tập S của
các tiến trình được gọi là bị Deadlock nếu:
(1) mọi tiến trình trong S bị khóa
(2) mọi tập phụ thuộc cảu mọi tiến trình trong S là tập con của
S, và
(3) kô có thông điệp cung cấp nào đi qua các tiến trình trong S.
Một tiến trình bị Deadlock nếu nó thuộc về một tập hợp bị Deadlock
nào đó. Một tập S các tiến trình thỏa mãn cả 3 điều kiện trên vẫn bị khóa
vĩnh viễn vì: (1) một tiến trình bị khóa pi trong S chỉ có thể bắt đầu thực thi
được khi nó nhận được một thông điệp cung cấp từ bất kỳ tiến trình pj nào
đó trong tập phụ thuộc, (2) mọi tiến trình pj trong tập phụ thuộc của pi cũng
nằm trong S và kô thể gửi một thông điệp cung cấp trong khi vẫn đang bị

Nhóm thực hiện : Nhóm 1

- 15 -


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

khóa, và (3) kô có thông điệp cung cấp nào từ pj đến pi nghĩa là pi sẽ kô bao
giờ nhận được một thông điệp cung cấp nào từ tập phụ thuộc của nó.
Biểu hiện của một tập hợp bị Deadlock của các tiến trình là tương
đương với sự tồn tại của một knot (điểm nút) trong WFG. Từ đây phát hiện
Deadlock trong mô hình OR có thể được giảm bớt việc tìm các knot trong
WFG. Tuy nhiên, chú ý rằng một tiến trình có thể bị Deadlock mà kô phải là

một knot. Đúng hơn, một tiêu chuẩn cần và đủ để một tiến trình p nào đó bị
Deadlock là: một tiến trình bị khóa p bị Deadlock nếu p là một knot hoặc là
p chỉ có thể với tới các tiến trình bị Deadlock. Thuật toán cho mô hình OR
chúng ta thảo luận trong phần 5.4 phát hiện Deadlock cho mọi tiến trình
thuộc về một tập bị Deadlock nào đó.
Phát hiện Deadlock trong mô hình AND có thể được mô phỏng bằng
cách lặp lại các ứng dụng của kỹ thuật tính toán trong mô hình Deadlock
OR, nơi mỗi dẫn chứng thực thi trên một đồ thị con của WFG mô hình
AND. Tuy nhiên thì phương pháp này gần như là vô vọng, rất kém hiệu quả
nên nó chỉ được quan tâm trên lý thuyết. Theo đó, mô hình Deadlock OR là
khái quát hơn mô hình Deadlock AND.
Một thuật toán cho “Phát hiện knot phân tán” xuất hiện trong lý thuyết
a của Chandy & Misra năm 1982. Kết thúc quá trình phát hiện tính toán
khuếch tán trong mô hình OR, cũng là mô hình Deadlock của CSP được đề
cập trong lý thuyết b của 2 ông năm 1982. Thuật toán giới thiệu trong phần
5.4 được lấy từ lý thuyết của Chandy năm 1983. Những thuật toán khác cho
mô hình OR cũng xuất hiện trong lý thuyết của Haas năm 1981, Natarajan
năm 1986 và Rauchle & Toueg năm 1983.
2.4 AND – OR Model (Mô hình AND - OR)
Mô hình AND – OR là sự tổng quát hóa của 2 loại mô hình trên. Yêu
cầu AND – OR có thể chỉ rõ bất cứ sự phối hợp của and & or trong tài
nguyên yêu cầu. Ví dụ, một yêu cầu cho (a and (b or c)) or d là có thể, và a,
b, c và d có thể tồn tại ở những vị trí khác nhau. Chúng kô xuất hiện như
những cấu trúc giống nhau của lý thuyết đồ thị để mô tả một trạng thái
Deadlock trong mô hình AND – OR trong thuật ngữ của WFG. Theo nguyên
tắc, Deadlock trong mô hình AND – OR có thể bị phát hiện bởi ứng dụng
lặp của bài kiểm tra cho Deadlock mô hình OR, lợi dụng thực tế là Deadlock
có thuộc tính rất ổn định; đó là nó kô tự mất đi. Nhưng chiến lược này chỉ
mang tính chung chung, kô có nhiều hiệu quả. Một thuật toán hiệu quả hơn
đã được phát triển bởi Hemann và Chandy năm 1983, sẽ được nêu trong

mục 5.5. Phần này cũng bao gồm một hình thức của Deadlock trong mô hình

Nhóm thực hiện : Nhóm 1

- 16 -


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

AND – OR. Từ định nghĩa này kô nắm được đặc điểm của định nghĩa của
Deadlock, nó bị bỏ qua từ những cuộc thảo luận chung ở đây.
2.5 (kn) Model (Mô hình (kn))
Mô hình (kn) cho phép chỉ rõ những yêu cầu cho việc thu được bất cứ
tài nguyên sẵn dùng k nào ra khỏi vùng có kíck thước n. Mô hình ( kn) là
trường hợp chung của mô hình AND – OR. Mặc dù nó chỉ ra rằng cả 2 loại
mô hình này đều tương đương, độ dài của một công thức AND – OR tương
đương từ một yêu cầu (kn) là k(kn), cái có kíck thước mũ n ≈ 21, từ:

Vì vậy mọi yêu cầu trong mô hình (kn) có thể được biểu thị trong mô hình
AND – OR. Để thấy rằng quá trình đảo ngược là đúng, quan sát thấy mọi
yêu cầu AND hay OR cho n tài nguyên có thể được trình bày như một yêu
cầu (nn) hoặc (1n) một cách riêng biệt. Định nghĩa duy nhất của Deadlock
trong mô hình (kn) chúng ta biết được đề xuất bởi Bracha và Toueg năm
1983 và chịu ảnh hưởng từ những thiếu sót tương tự của mô hình AND –
OR. Bởi vậy nó kô được thảo luận ở đây. Một thuật toán phát hiện Deadlock
trong mô hình (kn) đã được Bracha và Toueg công bố năm 1983 và được giới
thiệu ở mục 5.6.
2.6 Unrestricted Model ( Mô hình kô hạn chế)

Trong mô hình chung nhất kô một cấu trúc cơ sở nào của tài nguyên
yêu cầu được thừa nhận. Thay vào đó, sự ổn định của Deadlock là giả thiết
duy nhất. Tiến bộ trong cái nhìn về Deadlock trong cách này là giúp cho
việc phân chia giữa các phần. Thuộc tính của việc tính toán cơ sở dữ liệu cơ
sở (mức độ của đồng bộ, quỹ tích đơn của điều khiển cho mỗi giao dịch
Nhóm thực hiện : Nhóm 1

- 17 -


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

chống lại tính song song của mỗi giao dịch đơn lẻ, và thông điệp gửi qua sự
giao tiếp đồng bộ) là rất trừu tượng và phân chia từ các phần của thuộc tính
của các vấn đề (sự ổn định của Deadlock). Ngoài ra mọi thuật toán quan hệ
với mô hình chung phải được dùng để phát hiện tốt những thuộc tính khác.
Tuy nhiên trong ngữ cảnh của Phát hiện Deadlock trong CSDL phân tán,
những thuật toán này có vẻ mang nhiều tính lý thuyết, từ thực tế rằng kô có
giả thiết nào được tạo nên từ cấu trúc cơ sở của tính toán CSDL chỉ tới một
quan hệ tốt nhất từ tổng chi phí có thể giảm được trong thuật toán về mô
hình đơn giản hơn. Trong phần 3.4 chúng tôi giới thiệu một lý thuyết chung
của Chandy và Lamport năm 1985, cái mà có thể áp dụng cho cả những mô
hình trước và mô hình kô hạn chế. Để biết thêm về nó, tài liệu tham khảo
cho người đọc có thể là: Awerbuch và Micali năm 1986, Chandy và Lamport
năm 1985, Chandy và Misra năm 1986, Chang năm 1982, tuyển tập Helary
năm 1987 và Misra năm 1983.
3. CLASSES OF DISTRIBUTED DEADLOCK DETECTION
ALGORITHMS (Các lớp của những thuật toán Phát hiện Deadlock

phân tán)
Thuật toán Phát hiện Deadlock phân tán được tìm thấy trong phát
triển lý thuyết cơ sở từ 4 gốc khác nhau: path-pushing (hoàn thành đường),
edge-chasing (theo dõi cạnh), diffusing computations (tính toán khuếch tán),
và globan state detection (phát hiện trạng thái toàn cục). Quan sát này sẽ đưa
đến sự tăng lên của các cách phân loại khác sẽ được nhắc đến trong phần 4
tiếp theo.
3.1 Path-pushing algorithms (Các thuật toán hoàn thành đường)
Thuật toán phân tán đầu tiên cho vấn đề Deadlock đã duy trì khái
niệm về một WFG toàn cục hoàn hảo, và đã hoạt động tốt cho những trường
hợp tổng quát. Một thuật toán cơ bản xuất hiện trong lý thuyết của Menasce
và Muntz năm 1979. Ý tưởng cơ bản của lớp thuật toán này là xây dựng
những mẫu đã rút gọn của WFG ở mỗi trạm. Phục vụ cho mục đích này, mỗi
trạm gửi cho WFG tại khu vực của nó số lượng trạm hàng xóm và mọi thời
điểm một tính toán Deadlock được trình bày. Sau khi cấu trúc DL cục bộ ở
mỗi trạm được update, WFG cũng được update theo và thủ tục này lặp lại
cho đến khi một số trạm đã có đủ số ảnh về vị trí toàn cục để thông báo rằng
có hoặc kô có Deadlock xuất hiện. Đặc điểm chính của hệ thống này là gửi
tới xung quanh những con đường của WFG, do đó nó có tên là Path-pushing
algorithms.

Nhóm thực hiện : Nhóm 1

- 18 -


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm


Một điểm đáng chú ý của Path-pushing algorithms là rất nhiều lần
chúng bị thấy là kô đúng, hoặc là phát hiện sai Deadlock bằng cách tìm ra
Deadlock chết hoặc cả hai. Ví dụ Gligor và Shattuck năm 1980 đã chỉ ra
rằng thuật toán của Menasce và Muntz năm 1979 là có thiếu sót; một ví dụ
khác của Ho và Ramamoorthy năm 1982 đã được giới thiệu bởi
Jagannathan và Vasudevan năm 1982; trong phần 4.2 chúng ta sẽ biết vì sao
thuật toán của Obermarck năm 1982 là không đúng. Đáng ngạc nhiên là tất
cả các thuật toán này đều đã được chứng minh là đúng.
Nhìn lại thì thấy thất bại của rất nhiều thuật toán kiểu này là kô gây
ngạc nhiên khi lần đầu xuất hiện, từ thời điểm mà định nghĩa của snapshot
và trạng thái toàn cục ổn định trong hệ thống đồng bộ đã kô được hiểu đúng.
Hậu quả khác của việc hiểu biết thiếu sót là thực tế hầu hết các thuật toán đã
phụ thuộc vào việc đóng băng tính toán CSDL cơ sở cho thời điểm Phát hiện
Deadlock tiếp tục. Điều đảm bảo là trong các trường hợp là bức tranh của
tập hợp WFG toàn cục là thích hợp.
Vì lý do lịch sử, một ví dụ cho thuật toán Path-pushing là Obermarck
năm 1982, được ứng dụng trong System R, được giới thiệu trong phần 4.1.
3.2 Edge-chasing Algorithms (Thuật toán theo dõi cạnh)
Biểu diễn của một vòng lặp trong cấu trúc đồ thị phân tán có thể được
thử lại bởi những thông điệp đặc biệt được gọi là thăm dò dọc theo các cạnh
của đồ thị. Thăm dò được giả định là riêng biệt từ tài nguyên yêu cầu và
thông điệp cung cấp. khi người khởi tạo của tính toán thăm dò nhận được
một kết quả thăm dò, nó biết nó đang trên vòng lặp của đồ thị.
Một điểm tốt của cách giải quyết này trong kết nối với Phát hiện
Deadlock là tiến trình xử lý có thể đơn giản loại bỏ mọi theo dõi chúng nhận
được. Tiến trình khóa lan truyền sự theo dõi dọc theo các cạnh ra của chúng.
Một phép biến đổi rất thú vị trong phương pháp này có thể được tìm thấy
trong lý thuyết của Mitchell và Merritt năm 1984, các theo dõi được gửi trên
các yêu cầu và trong các cạnh đối nghịch trực tiếp của cạnh. Chúng ta sẽ
xem xét kỹ hơn thuật toán này trong phần 4.2.

Một ví dụ khác cho cách giải quyết này là thuật toán của Chandy và
Misra năm 1982, sẽ được giới thiệu trong phần 4.3.
3.3 Diffusing Computations (Tính toán khuếch tán)
Loại thuật toán thứ 2 được xây dựng trong lý thuyết của Chang năm
1982 và Dijsktra & Scholten năm 1980. Đây là ý tưởng hoạt động cơ bản
của thuật toán Diffusing Computations, ví dụ một quản lý giao dịch bị nghi
Nhóm thực hiện : Nhóm 1

- 19 -


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

là Deadlock. Những tính toán này được đặt lên trên những tính toán CSDL
cơ bản. Nếu phép tính toán này hoàn thành, người tạo lập sẽ khai báo có
Deadlock. Đặc điểm của tính toán chồng trong trường hợp này của Phát hiện
Deadlock phân tán là WFG toàn cục là phản xạ hoàn toàn trong cấu trúc của
tính toán. Tuy nhiên trong thực tế, WFG kô bao giờ xây dựng dứt khoát.
Tính toán khuếch tán phát triển bằng cách gửi thông điệp truy vấn và co
ngắn lại bởi các trả lời nhận. Trong trường hợp của chúng ta truy vấn và
thông điệp trả lời bị liên quan trực tiếp tới Phát hiện Deadlock và là riêng
biệt từ tài nguyên yêu cầu và thông điệp cung cấp. khi một tính toán co ngắn
lại tới gốc của nó, công việc hoàn thành.
Chính xác hơn, nút khác từ gốc được gọi là nút trong. Mỗi nút trong
tính toán khuếch tán có một trạng thái khởi tạo được gọi là neutral state
(trạng thái trung lập). Gốc (còn gọi là người khởi tạo) gửi các truy vấn tới
các successor (kế thừa) của nó để bắt đầu một tính toán khuếch tán. Sau khi
nhận được truy vấn đầu tiên của nó, một nút rời khỏi trạng thái trung lập và

trở thành trạng thái hoạt động. Truy vấn đầu tiên nhận được bởi nút p i được
gọi là engage query (truy vấn cam kết) của pi. Tiến trình gửi truy vấn cam
kết được gọi là cam kết của pi. Cạnh dọc theo quá trình truy vấn cam kết bị
gửi được gọi là cạnh cam kết của pi.
Sau quá trình nhận của truy vấn cam kết, một nút trong tự do sẽ gửi
truy vấn tới kế thừa của nó. Bên cạnh đó nó có khả năng nhận được truy vấn
từ kế thừa trước đó của nó và gửi tới kế thừa của nó, một nút cũng có khả
năng nhận trả lời từ kế thừa của nó và gửi tới kế thừa trước của nó. Chú ý
rằng các truy vấn luôn đi theo các cạnh trực tiếp, trái lại các trả lời luôn đi
theo những con đường ngược lại.
Chúng ta đòi hỏi số truy vấn dọc một cạnh luôn ít nhất bằng số trả lời
gửi từ cạnh đối trực tiếp. Khác biệt giữa số truy vấn và số trả lời trên một
cạnh được gọi là deficit (chi phí) của cạnh đó. Từ đó ta thấy, chi phí nhỏ
nhất của một cạnh có thể = 0.
Trạng thái trung lập của một nút bây giờ có thể được định nghĩa là
trạng thái mà chi phí của mọi cạnh ra và vào đều = 0. Tính toán khuếch tán
hoàn thành nếu gốc trở lại trạng thái trung lập. Vậy khi nào thì một nút nên
trả lời một truy vấn. Chúng ta quy ước là một cạnh ở trạng thái hoạt động sẽ
trả lời mọi truy vấn nó nhận được ngay lập tức. Câu hỏi chính là : khi nào thì
một nút nên trả lời truy vấn cam kết của nó. Trả lời này được gọi là trả lời
cam kết. Chúng ta đòi hỏi rằng một nút chỉ gửi trả lời cam kết sau khi nó
nhận được trả lời từ truy vấn khác nó gửi đi.
Với quy ước này nó kô khó để chỉ ra rằng (1) mỗi một cạnh cam kết
kết nối tới 2 nút hoạt động, (2) các cạnh cam kết kô tạo thành một chu trình,
và (3) mỗi nút trong hoạt động có chính xác một cạnh cam kết vào. Chúng ta
Nhóm thực hiện : Nhóm 1

- 20 -



Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

nói rằng tính toán khuếch tán hoàn thành nếu và chỉ nếu mọi nút trong đang
ở trạng thái trung lập. Từ những gì nói ở trên, ta thấy: (Dijsktra và Scholten
năm 1980)
(1) Khi gốc trở lại trạng thái trung lập, tính toán khuếch tán sẽ hoàn
thành.
(2) Một số hữu hạn các bước sau khi tính toán khuếch tán hoàn thành,
gốc sẽ trở về trạng thái trung lập
Các thuật toán sử dụng hệ biến hóa của tính toán khuếch tán được giới
thiệu trong phần 4.4 [Chandy và Misra năm 1982] và 4.5 [Hermann
và Chandy năm 1983]. Nói chung, cách giải quyết này đưa đến kết
quả trong một thông điệp ngắn hơn Phát hiện Deadlock ít hơn so với
thuật toán Path-pushing. Bên cạnh những công việc nói đến ở trên, có
một số biến đổi trong phần này, [Chandy and Misra 1986; Chang
1982; Dijkstra et al.1983; Haas 1981; Haas and Mohan 1983; Misra
1983; Misra and Chandy 1982a; Misra and Chandy 1982b].
3.4 Global State Detections (Phát hiện trạng thái toàn cục)
Công việc phải hoàn thành trong khu vực của Phát hiện trạng thái toàn
cục là khá nhiều trên cơ sở lý thuyết của Chandy và Lamport năm 1985.
Khái niệm mang tính chìa khóa ở đây là consistent global state (trạng thái
toàn cục thích hợp) có thể được xác định mà kô cần bỏ tạm thời trạng thái
đóng băng tính toàn CSDL cơ sở. Bên dưới đây chúng ta sẽ cô đọng lại
những kết quả của Chandy và Lamport trong ngữ cảnh thích hợp. Cuộc thảo
luận theo Bracha và Toueg năm 1983.
Tính toán cơ bản, từ đó đề cập như một hệ thống là một tiến trình thu
thập, nó có thể là suy nghĩ của các quản lý giao dịch và các tác nhân giao
dịch. Quá trình giao tiếp bằng cách gửi thông điệp (tài nguyên yêu cầu hoặc

cung cấp) theo một vài giao thức cơ sở (2PL v..v..). Events (sự kiện) trong
hệ thống là gửi và nhận thông điệp. Chúng ta chứng minh tập hợp các sự
kiện trong hệ thống bằng E. Trạng thái cục bộ của một tiến trình p bao gồm
lịch sử của tất cả các sự kiện đã xảy ra trong p. Suốt theo con đường của
Lamport (1978) chúng ta định nghĩa một mệnh lệnh cục bộ
như
sau:

Nhóm thực hiện : Nhóm 1

- 21 -


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

Định nghĩa 3.1:

Phần (1) của định nghĩa nói rằng các sự kiện của tiến trình đơn là tổng
hợp của các lệnh. Phần (2) cho thấy thực tế rằng các thông điệp được nhận
sau khi chúng được gửi. Phần (3) là trạng thái cơ bản
Chúng ta có thể biểu diễn lịch sử của hệ thống và nó xảy ra quan hệ
trước bởi một đồ thị giống như trong hình 2. Những điểm biểu diễn sự kiện,
những đường ngang là trục thời gian của các tiến trình, và những mũi tên
liên kết trao đổi thông tin gửi và nhận.
Sau đây là hình thức thể hiện của Chandy và Lamport năm 1985. Một
cut c (lối tắt c) của E là một phân vùng của E trong 2 tập hợp P c và Fc, đứng
riêng biệt trong quá khứ và tương lai. Một lối tắt là thích hợp nếu Fc là cận
dưới . Một lối tắt phù hợp định nghĩa một lối tắt phù hợp. Từ đó, chúng ta

có thể sử dụng chúng thay phiên nhau. Theo đó ta thấy, những lối tắt thích
hợp kô chứa một sự kiện gửi trong F c với trao đổi thông tin sự kiện nhận
trong Pc.
Nhìn lại ví dụ trong hình 2, chúng ta thất rằng
và Fc =
. Hơn nữa từ khi Fc là cận dưới thì c là một lối tắt thích hợp.
Một dạng đặc biệt của trạng thái thích hợp là St, trạng thái toàn cục tại
thời điểm t là thu thập của mọi trạng thái cục bộ của các tiến trình tại thời
điểm t. Chú ý rằng S t được xây dựng hoàn toàn trên lý thuyết, nên kô thể là
đối tượng nghiên cứu, từ khi thế giới đòi hỏi một đối tượng ngoài để ghi
nhận các trạng thái cục bộ của các tiến trình ngay lập tức, một công việc kô
thể trong luyện tập. Ngược lại, các trạng thái thích hợp có thể được thu nhặt
từ bên trong hệ thống. Bây giờ chúng ta có thể đưa ra quan hệ
cho các
trạng thái thích hợp.

Nhóm thực hiện : Nhóm 1

- 22 -


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

Một chuỗi các sự kiện

là một thời gian biểu, nếu
. Chúng ta sau đó viết
cho ngắn. Một lý

thuyết có thể trình bày, đó là của Chandy và Lamport năm 1985.

Trong bối cảnh của Phát hiện Deadlock, trạng thái của hệ thống là một
WFG, và các thời gian biểu và các chuỗi của các phép biến đổi WFG. Chúng
ta nói rằng một giao dịch đã bị Deadlock nếu nó bị Deadlock trong WFG t, là
WFG tại thời điểm t. Cho một định nghĩa của Deadlock trong thuật ngữ của
một WFGt, theo bổ đề của Bracha và Toueg năm 1983 cho phép chúng ta
ứng dụng một thuật toán Phát hiện Deadlock phân tán cho một WFG s thích
hợp thay thế cho WFGtS.

Đây là những kết quả cở bản trên cơ sở của thuật toán Phát hiện
Deadlock phân tán. Chandy và Lamport (năm 1985) đã chỉ ra làm thế nào để
thu được trạng thái toàn cục thích hợp của một hệ thống phân tán bởi người
truyền bá người ghi điểm dọc theo các kênh của hệ thống. Một trạng thái
thích hợp đã thu được trong kiểu này cũng được gọi là snapshot của hệ
thống. Như một snapshot có thể sau đó được khảo sát cho Deadlock off-line.
Từ đó snapshot này được định nghĩa như một đối tượng tĩnh, kô có vấn đề gì
trong việc kết hợp với thông điệp chậm trễ và Phát hiện Deadlock trở thành
dễ nhất. Trong phần 4.6 chúng ta sẽ xem ví dụ về việc ứng dụng kết quả này.

Nhóm thực hiện : Nhóm 1

- 23 -


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

4. Tìm hiểu về thuật toán chọn.

4.1.Thuật toán Path-Pushing Obermarck
Trong phần này chúng ta sẽ bàn về thuật toán xuất hiện vào năm 1982
ở Obermarck. Nền tảng của kiều Deadlock là kiều và (AND);do đó thuật
toán tìm kiếm trên toàn bộ WFG.Đầu tiên, tác giả đưa ra vài giả thuyết đơn
giản:
(1) Việc giao dịch phải có tập hợp những điều khiển đơn; điều này có
nghĩa là phần lớn những tác nhân của việc giao dịch có thể được kích
hoạt bất cứ thời điểm nào.
(2) Giao tiếp giữa các tác nhân là giao tiếp vật lý đồng bộ.
(3) Việc giao dịch đã được vạch sẵn, điều này có ích trong việc làm giảm
thiểu Deadlock của lớp trên, và đảm bảo cho việc tách 1 giao dịch ra
khỏi vòng có hiện diện Deadlock.
(4) Sự phân chia cục bộ của WFG được gửi đi từ 1 site tới site khác
không thay đổi đến khi thông tin được nhận và xử lý bởi 1 site đầu
cuối nào đó. Site đầu cuối được định nghĩa:
(a) Site mà vòng Deadlock kết thúc hoặc
(b) Những site ở xa mà Deadlock toàn cục đã xác định là không tồn
tại.
Điểm (1) và (2) chỉ ra rằng mỗi một giao dịch chỉ 1 tác nhân có thể
kích hoạt hoặc trong 1 hàng đợi. Tác nhân này gửi một message tới tác nhân
khác cùng giao dịch mà đang chờ để nhận 1 message.
Obermarck [1982] thừa nhận rằng điểm (4) là không thực tế.Nó tạo ra
sự kiện với những tính chất này thuật toán vẫn làm tác động đến việc xác
định đúng Deadlock. Ông cho rằng sự cố Deadlock là rất hiếm khi xảy ra.
Việc vận chuyển có thể bị gián đoạn và những vòng được tìm thấy bởi thuật
toán sẽ được xác nhận tính hợp lệ.
Mỗi điều khiển cj tại site Sj chạy một thuật toán copy nhận diện
Deadlock. Cấu trúc đơn giản của thuật toán là vòng lặp qua từng bước:
(1) Nhận thông tin Deadlock từ một vài site được tạo ra bởi vòng lặp
nhận diện Deadlock trước đó.

(2) Tạo ra một phần của WFG sử dụng cục bộ chờ cho thông tin và việc
nhận thông tin từ những site khác trong bước 1.
(3) Tìm tất cả những vòng cơ bản trong WFG, hủy bỏ tất cả những vòng
không chứa EX bằng viêc bỏ qua những giao dịch thích hợp.
(4) Bên cạnh những vòng cơ bản có chứa EX, như một vòng chỉ định khả
năng của Deadlock toàn cục. Với mỗi vòng EX->T 1 -> ... -> Tn -> EX,
so sánh T1 với Tn. Nếu T1 > Tn, gửi vòng đó tới mỗi site mà một tác
nhân của Tn đang đợi để nhận thông tin từ tác nhân của Tn tại site này.
Nhóm thực hiện : Nhóm 1

- 24 -


Deadlock Detection in Distributed Databases

B/m Công Nghệ Phần Mềm

Tại Obermarck, một cố gắng được thực hiện để chứng minh tính đúng
đắn của thuật toán. Rằng thuật toán và bằng chứng của nó là không chính
xác (trong sự phán đoán sai Deadlock có thể được phát hiện) có thể dễ dàng
nhận thấy từ những quan sát [Elmagarmid 19861]: Các phần của WFG là
vận chuyển vòng quanh có thể không đại diện trong một lần quan sát của
WFG toàn cục, kể từ khi mỗi site tạo những bản sao đồng bộ của nó.
Càng xa thì khả năng thực hiện của thuật toán càng yếu, Obermarcks chỉ ra
rằng, nếu những site liên quan đến nhau thông qua Deadlock, phần lớn s(s –
1)/2 tin được gửi, và mỗi tin có độ dài O(s). Với một yếu tố nhỏ, giả thuyết
là đúng, trường hợp xử lý sẽ được hiển thị dưới dạng đồ thị đường s.
Để biết thêm chi tiết, bạn đọc có thể tham khảo Obermarck [1982]. Tuy
nhiên, theo quan điểm của chúng tôi, thuật toán này đã lỗi thời so với một
vài sự phát triển gần đây.

4.2. Thuật toán Mitchell và Merritt dành cho mẫu nguồn dữ liệu đơn.
Thuật toán của Mitchell và Merritt diễn tả trong phần này đơn giản
như kiểu Deadlock đã được định nghĩa. Đó là một thuật toán cắt cạnh mà sự
thăm dò được gủi trực tiếp tới các cạnh của WFG. Trong trường hợp đơn
giản nhất một hạt thăm dò chứa một số nguyên đơn là nút duy nhất trong
WFG. Khi hạt thăm dò quay trở lại bộ khởi tạo, bộ khởi tạo sẽ khai báo
Deadlock.
Thuật toán sẽ được bắt đầu trong phần này của tiến trình thực hiện.
Nó có một số đặc trưng riêng.
(1) Điều này là hết sức đơn giản, làm cho tài liệu chứng minh rõ ràng,
vui nhộn để đọc (viết) và vấn đề thời gian của việc thực thi (hàng
giờ).
(2) Nói một cách chính xác một tiến trình trong một chu trình sẽ nhận ra
Deadlock, việc làm giảm mật độ Deadlock từ tiến trình này có thể dễ
dàng bỏ qua. Bằng việc kết hợp quyền ưu tiên vào thuật toán, tiến
trình có độ ưu tiên thấp nhất trong chu trình sẽ bỏ qua Deadlock.
(3) Việc tự động bỏ qua được cho phép, thậm chí mặc dù theo giả thuyết
phantom Deadlock không thể bị loại trừ. Nó có thể được hiển thị, tuy
nhiên chỉ có Deadlock chính được phát hiện mà không có sự bỏ qua
tự động.
Trong lẩn thảo luận này, ta chỉ xem xét phiên bản đầu tiên của thuật
toán (không có quyền ưu tiên). Sự mở rộng xét đến mức ưu tiên được tìm
thấy bởi Mitchell và Merritt [1984].

Nhóm thực hiện : Nhóm 1

- 25 -



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×