Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 12 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
12
Dung lượng
226,14 KB
Nội dung
1
Những vấnđềkhác trong
điềukiển đồng thời
Chương 2
Những vấnđềkháctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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áctrongđiều khiển đồngthờ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
[...]... cài đặt hơn wait-for graph Có thể rollback những giao tác không gây ra deadlock Wait-for graph Nếu đồ thị quá lớn sẽ tốn nhiều thời gian phân tích Rất phức tạp khi CSDL phân tán Giảm tối thiểu rollback các giao tác Chỉ rollback 1 trongnhững giao tác gây ra deadlock Những vấnđề khác trongđiều khiển đồngthời 33 11 Những vấnđề khác trongđiều khiển đồngthời 34 12 ... 13 L(B); R(B) 14 L(C); W(C) 15 U(B); U(C) Những vấnđề khác trongđiều khiển đồngthời 31 Nhận xét Timeout Đơn giản Khó chọn được khoảng thời gian timeout thích hợp Có hiện tượng starvation Giao tác lập đi lập lại quá trình: bắt đầu, deadlock, rollback Resource ordering Không thực tế Chờ đợi nhiều → tiềm ẩn của deadlock Những vấnđề khác trongđiều khiển đồngthời 32 Nhận xét (tt) Wait-die và Wound-wait . 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. 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. 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