Professional Documents
Culture Documents
1 2
1
3/1/2015
7 8
9 10
11 12
2
3/1/2015
Đồ thị cấp phát tài nguyên Đồ thị cấp phát tài nguyên
z Thuật ngữ: Resource allocation graph z Cung có hướng từ tiến trình Pi đến tài
z Để mô tả một cách chính xác bế tắc, chúng nguyên Rj, ký hiệu là Pi→Rj có ý nghĩa: Tiến
ta sử dụng đồ thị có hướng gọi là “đồ thị cấp trình Pi yêu cầu một thể hiện của Ri. Ta gọi
phát tài nguyên” G=(V, E) với V là tập đỉnh, E Pi→Rj là cung yêu cầu (request edge)
là tập cung z Cung có hướng từ tài nguyên Rj đến tiến
z V được chia thành hai tập con P={P0, P1, ..., trình Pi ký hiệu là Rj→Pi có ý nghĩa: Một thể
Pn} là tập các tiến trình trong hệ thống và R= hiện của tài nguyên Rj đã được cấp phát cho
{R0, R1, ..., Rm} là tập các loại tài nguyên tiến trình Pi. Ta gọi Rj→Pi là cung cấp phát
trong hệ thống thỏa mãn P∪R=V và P∩R= ∅ (asignment edge)
13 14
Đồ thị cấp phát tài nguyên Đồ thị cấp phát tài nguyên
z Ký hiệu hình vẽ: z Nếu không có chu trình trong đồ thị cấp phát
z Pi là hình tròn tài nguyên: Không có bế tắc. Nếu có chu
z Rj là các hình chữ nhật với mỗi chấm bên trong là
trình: Có thể xảy ra bế tắc.
số lượng các thể hiện của tài nguyên z Nếu trong một chu trình trong đồ thị cấp phát
tài nguyên, mỗi loại tài nguyên chỉ có đúng
z Minh họa đồ thị cấp phát tài nguyên:
một thể hiện: Bế tắc đã xảy ra (Điều kiện cần
R1 R2
và đủ)
z Nếu trong một chu trình trong đồ thị cấp phát
P2 P3
P1
tài nguyên một số tài nguyên có nhiều hơn
một thể hiện: Có thể xảy ra bế tắc (Điều kiện
R3 R4
15 cần nhưng không đủ) 16
P1 P2 P3 R2
17
P4 18
R3 R4
3
3/1/2015
Giới thiệu
Ngăn chặn bế tắc
Ngăn chặn bế tắc (deadlock prevention) là
(Deadlock prevention) z
phương pháp xử lý bế tắc, không cho nó xảy
ra bằng cách làm cho ít nhất một điều kiện
cần của bế tắc là C1, C2, C3 hoặc C4 không
được thỏa mãn (không xảy ra)
z Ngăn chặn bế tắc theo phương pháp này có
tính chất tĩnh (statically)
21 22
Ngăn chặn “loại trừ lẫn nhau” Ngăn chặn “giữ và chờ”
z C1 (Loại trừ lẫn nhau): là điều kiện bắt buộc z C2 (Giữ và chờ): Có thể làm cho C2 không
cho các tài nguyên không sử dụng chung xảy ra bằng cách đảm bảo:
được → Khó làm cho C1 không xảy ra vì các z Một tiến trình luôn yêu cầu cấ phát tài nguyên chỉ
hệ thống luôn có các tài nguyên không thể sử khi nó không chiếm giữ bất kỳ một tài nguyên
dụng chung được nào, hoặc
z Một tiến trình chỉ thực hiện khi nó được cấp phát
toàn bộ các tài nguyên cần thiết
23 24
4
3/1/2015
Chứng minh giải pháp ngăn Ưu nhược điểm của ngăn chặn
chặn chờ vòng giải pháp bế tắc
z Sử dụng chứng minh phản chứng z Ưu điểm: ngăn chặn bế tắc (deadlock
z Giả sử giải pháp ngăn chặn gây ra chờ vòng prevention) là phương pháp tránh được bế
{P0, P1, ..., Pn} trong đó Pi chờ tài nguyên Ri tắc bằng cách làm cho điều kiện cần không
bị chiếm giữ bởi P(i+1) mod n được thỏa mãn
z Vì Pi+1 đang chiếm giữ Ri và yêu cầu Ri+1, do z Nhược điểm:
đó f(Ri)<f(R(i+1) mod n) ∀i, có nghĩa là ta có: z Giảm khả năng tận dụng tài nguyên và giảm
z f(R0)<f(R1)<f(R2)<..<f(Rn)<f(R0) thông lượng của hệ thống
z Mâu thuẫn! → Giải pháp được chứng minh z Không mềm dẻo
29 30
5
3/1/2015
Giới thiệu
Tránh bế tắc
Tránh bế tắc là phương pháp sử dụng thêm
(Deadlock avoidance) z
các thông tin về phương thức yêu cầu cấp
phát tài nguyên để ra quyết định cấp phát tài
nguyên sao cho bế tắc không xảy ra.
z Có nhiều thuật toán theo hướng này
z Thuật toán đơn giản nhất và hiệu quả nhất là:
Mỗi tiến trình P đăng ký số thể hiện của mỗi
loại tài nguyên mà P sẽ sử dụng. Khi đó hệ
thống sẽ có đủ thông tin để xây dựng thuật
31 toán cấp phát không gây ra bế tắc 32
35 36
6
3/1/2015
Thuật toán đồ thị cấp phát tài Thuật toán đồ thị cấp phát tài
nguyên nguyên
z Giả sử các tài nguyên chỉ có 1 thể hiện z Chú ý rằng các tài nguyên phải được thông
z Sử dụng đồ thị cấp phát tài nguyên như ở báo trước khi tiến trình thực hiện
slide 16 và thêm một loại cung nữa là cung z Các cung báo trước sẽ phải có trên đồ thị
báo trước (claim) cấp phát tài nguyên
z Cung báo trước Pi→Rj chỉ ra rằng Pi có thể z Tuy nhiên có thể giảm nhẹ điều kiện: cung
yêu cầu cấp phát tài nguyên Rj, được biểu thông báo Pi→Rj được thêm vào đồ thị nếu
diễn trên đồ thị bằng các đường nét đứt tất cả các cung gắn với Pi đều là cung thông
z Khi tiến trình Pi yêu cầu cấp phát tài nguyên báo
Rj, đường nét đứt trở thành đường nét liền
39 40
z Chúng ta kiểm tra bằng cách sử dụng thuật phát R2, vì nếu cấp phát R1
toán phát hiện chu trình trong đồ thị: Nếu có ta sẽ có chu trình trong
n tiến trình trong hệ thống, thuật toán phát đồ thị và gây ra chờ vòng R2
hiện chu trình có độ phức tạp tính toán O(n2) → Hệ thống ở trạng thái
không an toàn P1 P2
z Nếu không có chu trình: Cấp phát->trạng thái
an toàn, ngược lại: Trạng thái không an toàn
41 42
R2
7
3/1/2015
Banker cấp phát tài nguyên khi Ký hiệu dùng trong banker
z Request≤ Max z Tài nguyên rỗi: Vector m thành phần
z Request≤ Available Available, Available[j]=k nghĩa là có k thể
hiện của Rj rỗi
z Max: Ma trận nxm xác định yêu cầu tài
nguyên max của mỗi tiến trình. Max[i][j]=k có
nghĩa là tiến trình Pi yêu cầu nhiều nhất k thể
hiện của tài nguyên Rj.
45 46
8
3/1/2015
Thuật toán trạng thái an toàn Thuật toán yêu cầu tài nguyên
1. Khởi tạo Work=Available và Finish[i]=false 1. Nếu Request[i]≤Need[i], chuyển đến bước 2
∀i=1..n Ngược lại thông báo lỗi (không có tài nguyên rỗi)
2. Tìm i sao cho Finish[i]==false và Need[i]≤Work 2. Nếu Request[i]≤Available, chuyển đến bước 3.
Nếu không tìm được i, chuyển đến bước 4 Ngược lại Pi phải chờ vì không có tài nguyên
3. Work=Work+Allocation[i], Finish[i]=true 3. Nếu việc thay đổi trạng thái giả định sau đây:
Available=Availalble-Request[i]
Chuyển đến bước 2 Allocation=Allocation+Request[i]
4. Nếu Finish[i]==true ∀i thì hệ thống ở trạng thái Need[i]=Need[i]-Request[i]
an toàn đưa hệ thống vào trạng thái an toàn thì cấp phát tài
z Độ phức tạp tính toán của thuật toán trạng thái nguyên cho Pi, ngược lại Pi phải chờ Request[i] và
an toàn: O(m.n2) 49
trạng thái của hệ thống được khôi phục như cũ 50
Ví dụ banker Ví dụ banker
zXét một hệ thống các tiến trình và tài nguyên z Hệ thống hiện đang ở trạng thái an toàn
như sau: z Thứ tự <P1,P3,P4,P2,P0> thỏa mãn tiêu chuẩn
Allocation Max Available Need an toàn
A B C A B C A B C A B C z Giả sử P1 có yêu cầu: Request[1]=(1,0,2)
P0 0 1 0 7 5 3 3 3 2 7 4 3
z Để quyết định xem có cấp phát tài nguyên
P1 2 0 0 3 2 2 1 2 2 theo yêu cầu này không, trước hết ta kiểm tra
P2 3 0 2 9 0 2 6 0 0 Request[1]≤Available: (1,0,2)<(3,3,2): Đúng
P3 2 1 1 2 2 2 0 1 1 z Giả sử yêu cầu này được cấp phát, khi đó
P4 0 0 2 4 3 3 4 3 1 trạng thái giả định của hệ thống là:
51 52
Ví dụ banker Ví dụ banker
Allocation Need Available z Tuy nhiên, nếu hệ thống ở trạng thái sau thì
A B C A B C A B C z Yêu cầu (3,3,0) của P4 không thể cấp phát ngay
P0 0 1 0 7 4 3 3 3 2 vì các tài nguyên không rỗi
P1 3 0 2 0 2 0 z Yêu cầu (0,2,0) của P0 cũng không thể cấp phát
P2 3 0 2 6 0 0 ngay vì mặc dù các tài nguyên rỗi nhưng việc
cấp phát sẽ làm cho hệ thống rơi vào trạng thái
P3 2 1 1 0 1 1
không an toàn
P4 0 0 2 4 3 1
z Bài tập: Thực hiện kiểm tra và quyết định
z Thực hiện thuật toán trạng thái an toàn và thấy rằng
thứ tự <P1,P3,P4,P0,P2>. Do đó có thể cấp phát tài cấp phát hai yêu cầu trên
nguyên cho P1 ngay.
53 54
9
3/1/2015
Tài nguyên có nhiều thể hiện Sử dụng thuật toán phát hiện
1. Giả sử Work và Finish là các vector m và n thành z Tần suất sử dụng phụ thuộc:
phần. Khởi tạo Work=Available. Với mỗi i=0..n-1 gán
Finish[i]=false nếu Allocation[i]≠0, ngược lại gán z Tần suất xảy ra bế tắc
Finish[i]=true z Bao nhiêu tiến trình bị ảnh hưởng bởi bế tắc?
2. Tìm i sao cho Finish[i]==false và Request[i]≤Work. Nếu z Sử dụng thuật toán phát hiện:
không tìm thấy i, chuyển đến bước 4
z Định kỳ: Có thể có nhiều chu trình trong đồ thị,
3. Work=Work+Allocation, Finish[i]=true; chuyển đến
không biết được tiến trình/request nào gây ra bế
bước 2
tắc
4. Nếu Finish[i]==false với 0≤i≤n-1 thì hệ thống đang bị
bế tắc (và tiến trình Pi đang bế tắc). z Khi có yêu cầu cấp phát tài nguyên: Tốn tài
z Độ phức tạp tính toán của thuật toán: O(m.n2) nguyên CPU
59 60
10
3/1/2015
11