1
Những vấn đề khác trong
điềukiển đồng thời
Chương 2
Những vấn đề khác trong điều khiển đồng thời 2
z Quay lui dây chuyền (cascading rollback)
z Lịch khả phụchồi (recoverable schedule)
z Deadlock
z Phát hiện(detection)
z Ngănngừa (prevention)
Nội dung chi tiết
Những vấn đề khác trong điều khiển đồng thời 3
Ví dụ
T
2
T
1
S
Write(B,t); Unlock(B)
Read(B,t); t:=t+100
t:=t+100; Write(A,t)
Lock(A); Read(A,t)
Lock(B); Unlock(A)
Lock(B); Ulock(A)
Read(B,t); t:=t*2
Write(B,t); Unlock(B)
s:=s*2; Write(A,s)
Lock(A); Read(A,s)
Lock(B)
Chờ
AB
25 25
125
250
125
250
2
Những vấn đề khác trong điều khiển đồng thời 4
Ví dụ (tt)
T
2
T
1
S
Abort; Unlock(B);
Read(B,t);
t:=t+100; Write(A,t)
Lock(A); Read(A,t)
Lock(B); Unlock(A)
Lock(B); Ulock(A)
Read(B,t); t:=t*2
Write(B,t); Unlock(B)
s:=s*2; Write(A,s)
Lock(A); Read(A,s)
Lock(B)
Chờ
AB
25 25
125
250
50
Tính nhất quán bị vi phạm
→ T
2
cũng phải rollback
Những vấn đề khác trong điều khiển đồng thời 5
Ví dụ (tt)
T
2
T
1
AB
T
3
C
200 150 175
RT=0
WT=0
RT=0
WT=0
RT=0
WT=0
S
Write(B)
Read(B)
Read(A)
Read(C)
Write(C)
WT=150
RT=150
RT=0
WT=150
RT=200
WT=0
RT=175
WT=0
Abort
Write(A)
RT=150
WT=175
WT=0
RT=0
→ Phụchồi
giá trị củaB
Những vấn đề khác trong điều khiển đồng thời 6
Quay lui dây chuyền
T
3
T
4
.
.
.
r(A)
.
.
.
.
.
.
.
.
.
abort
.
.
.
abort
T
1
T
2
.
.
.
.
.
.
w(A)
.
.
.
r(A)
.
.
.
.
.
.
.
.
.
abort
.
3
Những vấn đề khác trong điều khiển đồng thời 7
Lịch khả phụchồi
T
i
T
j
.
.
.
.
.
.
w(A)
.
.
.
r(A)
.
.
.
commit.
.
.
abort
z
Xét mỗicặpT
i
và T
j
sao cho
z T
j
đọcdữ liệusaukhiT
i
ghi
z T
i
phải đượchoàntất (commit) trướckhiT
j
hoàn tất
z Ký hiệuc
i
: giao tác thứ i hoàn tất
Những vấn đề khác trong điều khiển đồng thời 8
Lịch khả phụchồi (tt)
S
1
:w
1
(A); w
1
(B); w
2
(A); r
2
(B); c
1
; c
2
;
S
1
tuầntự và khả phụchồi
T
2
đọc B sau
T
1
ghi B
T
1
hoàn tất
trướcT
2
Những vấn đề khác trong điều khiển đồng thời 9
Lịch khả phụchồi (tt)
S
2
:w
2
(A); w
1
(B); w
1
(A); r
2
(B); c
1
; c
2
;
S
2
không khả tuầntự nhưng khả phụchồi
T
1
ghi B trước
T
2
đọc B sau
T
1
hoàntất
trướcT
2
4
Những vấn đề khác trong điều khiển đồng thời 10
Lịch khả phụchồi (tt)
S
3
khả tuầntự nhưng không khả phụchồi
T
1
ghi B trước
T
2
đọc B sau
T
2
hoàntất
trướcT
1
S
3
:w
1
(A); w
1
(B); w
2
(A); r
2
(B); c
2
; c
1
;
Những vấn đề khác trong điều khiển đồng thời 11
Lịch khả phụchồi (tt)
z Nhậnxét
z Muốn khôi phục đôi khi cần quay lui dây chuyền
z Nhưng quay lui dây chuyền không thể xãy ra
z Tốn nhiều chi phí
→ Lịch không quay lui dây chuyền (cascadeless schedule)
Những vấn đề khác trong điều khiển đồng thời 12
Lịch không quay lui dây chuyền
T
i
T
j
.
.
.
.
.
.
w(A)
.
r(A)
.
.
.
.
commit
Các giao tác chỉđọcnhững giá trịđã được hoàn tất
5
Những vấn đề khác trong điều khiển đồng thời 13
Lịch không quay lui dây chuyền (tt)
S
1
:w
1
(A); w
1
(B); w
2
(A); r
2
(B); c
1
; c
2
;
S
1
:w
1
(A); w
1
(B); w
2
(A); c
1
;r
2
(B); c
2
;
z Khả phụchồi
z Ngănngừa quay lui dây chuyền
z → Các lịch ngănngừa quay lui dây chuyền đềukhả
phụchồi
Những vấn đề khác trong điều khiển đồng thời 14
z Quay lui dây chuyền (cascading rollback)
z Lịch khả phụchồi (recoverable schedule)
z Deadlock
z Phát hiện(detection)
z Ngănngừa (prevention)
Nội dung chi tiết
Những vấn đề khác trong điều khiển đồng thời 15
z Nhắclại 2 tình huống
Deadlock
T
2
T
1
S
Lock(B)
Lock(A)
Read(A)
Lock(B)
Write(A)
Write(B)
↓
Chờ
Lock(A)
Read(B)
↓
Chờ
Qui tắckhóa2PL
T
2
T
1
S
RLock(A)
WLock(A)
Read(A)
WLock(A)
↓
Chờ
RLock(A)
Read(A)
↓
Chờ
Nâng cấpkhóa
6
Những vấn đề khác trong điều khiển đồng thời 16
z Hệ thống rơivàotrạng thái deadlock khi
z Các giao tác phảichờđợilẫn nhau để đượcthaotáclên
các đơnvị dữ liệubị khóa bởi chúng
z Và không mộtgiaotácnàocóthể thựchiệntiếpcôngviệc
củamình
Deadlock (tt)
Những vấn đề khác trong điều khiển đồng thời 17
z Phát hiện
z Chophéptrạng thái deadlock xãy ra và sau đócố gắng
khôi phụclạihệ thống
z Chọn 1 giao tác để rollback
z Phương pháp
z Đồ thị chờ (wait-for graph)
z Ngănngừa
z Quản lý các giao tác sao cho không bao giờ có deadlock
z Phương pháp
z Sắpthứ tự tài nguyên (resource ordering)
z Timeout
z Wait-die
z Wound-wait
Giảiquyết Deadlock
Những vấn đề khác trong điều khiển đồng thời 18
z Đồ thị gồm
z Đỉnh là các giao tác đang giữ khóa hoặc đang chờ khóa
z Cung đitừđỉnh T sang U khi
z U đang giữ khóa trên đơnvị dữ liệuA
z T đang chờ khóa trên A
z T không thể khóa đơnvị dữ liệuA nếu U không giải phóng khóa
z Nếu đồ thị chờ không có chu trình
z Các giao tác có thể hoàn tất
z Ngượclại
z Không một giao tác nào trong chu trình có thể tiếptụcthực
hiện → deadlock
Đồ thị chờ
7
Những vấn đề khác trong điều khiển đồng thời 19
Ví dụ
T
1
T
2
L(A); R(A)
L(C); R(C)
1
T
3
T
4
L(B); R(B)
L(D); R(D)
2
3
4
5
6
7
8
L(A)
L(C)
L(A)
L(B)
↓
Chờ
↓
Chờ
↓
Chờ
↓
Chờ
T
2
T
1
T
3
T
4
Những vấn đề khác trong điều khiển đồng thời 20
Ví dụ (tt)
T
2
T
1
T
3
T
4
T
1
T
2
L(A); R(A)
L(C); R(C)
1
T
3
T
4
L(B); R(B)
L(D); R(D)
2
3
4
5
6
7
8
L(A)
L(C)
L(A)
L(B)
Những vấn đề khác trong điều khiển đồng thời 21
z Áp đặtmộtthứ tự nào đó lên các đơnvị dữ liệu
z Nếu các giao tác thựchiệnkhóanhững đơnvị dữ liệu
theo thứ tự này
z Thì không có deadlock xãy ra trong khi chờđợi
z Chứng minh
z Bài tậpvề nhà
Sắpthứ tự tài nguyên
8
Những vấn đề khác trong điều khiển đồng thời 22
z Giả sử các đơnvị dữ liệu đượcsắpthứ tự theo
alphabet
Ví dụ
T
1
: l(A); r(A); l(B); w(B); u(A); u(B);
T
2
: l(C); r(C); l(A); w(A); u(C); u(A);
T
3
: l(B); r(B); l(C); w(C); u(B); u(C);
T
4
: l(D); r(D); l(A); w(A); u(D); u(A);
Những vấn đề khác trong điều khiển đồng thời 23
Ví dụ (tt)
T
1
: l(A); r(A); l(B); w(B); u(A); u(B);
T
2
: l(A); l(C); r(C); w(A); u(C); u(A);
T
3
: l(B); r(B); l(C); w(C); u(B); u(C);
T
4
: l(A); l(D); r(D); w(A); u(D); u(A);
Những vấn đề khác trong điều khiển đồng thời 24
Ví dụ (tt)
T
1
T
2
L(A); R(A)
L(A)
1
T
3
T
4
L(B); R(B)
L(A)
2
3
4
5
6
7
8
↓
Chờ
↓
Chờ
L(C); W(C)
U(B); U(C)
9
10
11
12
13
14
L(B); R(B)
U(A); U(B)
L(A); L(C)
R(A); W(C)
U(C); U(A)
L(A); L(D)
R(D); W(A)
U(D); U(A)
9
Những vấn đề khác trong điều khiển đồng thời 25
z Giớihạn các giao tác chỉđượcthựchiệntrong1
khoảng thời gian nào đó
z Nếugiaotácvượtquáthời gian này
z Thì giao tác phảibị rollback
Timeout
Những vấn đề khác trong điều khiển đồng thời 26
z Mỗigiaotácsẽđượcgánmột nhãn ghi nhậnthứ tự
xuấthiện, kí hiệu: ts(T)
z Xét 2 giao tác T và U
z U đang giữ khóa trên đơnvị dữ liệuA
z T muốnkhóađơnvị dữ liệuA
z T sẽ chờ-wait U khi ts(T) < ts(U)
z NgượclạiT sẽ bị hủy-die
và bắt đầulàmlại ở 1 thời
điểm khác
Wait-die
UT
UT
Những vấn đề khác trong điều khiển đồng thời 27
Ví dụ
T
1
T
2
L(A); R(A)
L(A)
1
T
3
T
4
L(B); R(B)
L(A)
2
3
4
5
6
7
8
↓
Dies
↓
Dies
L(C); W(C)
U(B); U(C)
L(B); R(B)
U(A); U(B)
10
Những vấn đề khác trong điều khiển đồng thời 28
Ví dụ (tt)
z T
2
bắt đầutrướcT
4
T
1
T
2
L(A); R(A)
L(A)
1
T
3
T
4
L(B); R(B)
L(A)
2
3
4
5
6
7
8
↓
Dies
↓
Dies
L(C); W(C)
U(B); U(C)
L(B); R(B)
U(A); U(B)
9
10
11
12
13
14
L(A); L(C)
R(A); W(C)
U(C); U(A)
L(A)
R(D); W(A)
U(D); U(A)
L(A); L(D)
↓
Dies
15
Những vấn đề khác trong điều khiển đồng thời 29
Ví dụ (tt)
z T
4
bắt đầutrướcT
2
T
1
T
2
L(A); R(A)
L(A)
1
T
3
T
4
L(B); R(B)
L(A)
2
3
4
5
6
7
8
↓
Dies
↓
Dies
L(C); W(C)
U(B); U(C)
L(B); R(B)
U(A); U(B)
9
10
11
12
13
14
L(A); L(C)
R(A); W(C)
U(C); U(A)
L(A); L(D)
R(D); W(A)
U(D); U(A)
↓
Waits
15
L(A)
Những vấn đề khác trong điều khiển đồng thời 30
z Mỗigiaotácsẽđượcgánmột nhãn ghi nhậnthứ tự
xuấthiện, kí hiệu: ts(T)
z Xét 2 giao tác T và U
z U đang giữ khóa trên đơnvị dữ liệuA
z T muốnkhóađơnvị dữ liệuA
z T buộc U rollback và trao khóa
lại cho T-wound khi ts(T) < ts(U)
z Ngoạilệ: nếuU đãkếtthúcvàgiải
phóng khóa, U sẽ không rollback
z NgượclạiT sẽ chờ-wait U
Wound-wait
UT
UT
11
Những vấn đề khác trong điều khiển đồng thời 31
Ví dụ
T
1
T
2
L(A); R(A)
L(A)
1
T
3
T
4
L(B); R(B)
L(A)
2
3
4
5
6
7
8
↓
Waits
↓
Waits
9
10
11
12
13
14
15
L(B); R(B)
U(A); U(B)
↓
Wound
L(A); L(C)
R(A); W(C)
U(C); U(A)
L(A); L(D)
R(D); W(A)
U(D); U(A)
L(B); R(B)
L(C); W(C)
U(B); U(C)
Những vấn đề khác trong điều khiển đồng thời 32
z Timeout
z Đơngiản
z Khó chọn đượckhoảng thời gian timeout thích hợp
z Có hiệntượng starvation
z Giao tác lập đilậplại quá trình: bắt đầu, deadlock, rollback
z Resource ordering
z Không thựctế
z Chờđợi nhiều → tiềm ẩncủa deadlock
Nhậnxét
Những vấn đề khác trong điều khiển đồng thời 33
z Wait-die và Wound-wait
z Không có starvation
z Wound-wait ít rollback các giao tác hơn wait-die
z Dễ cài đặthơn wait-for graph
z Có thể rollback những giao tác không gây ra deadlock
z Wait-for graph
z Nếu đồ thị quá lớnsẽ tốn nhiềuthờigianphântích
z Rấtphứctạp khi CSDL phân tán
z Giảmtốithiểu rollback các giao tác
z Chỉ rollback 1 trong những giao tác gây ra deadlock
Nhận xét (tt)
12
Những vấn đề khác trong điều khiển đồng thời 34