P - ndtien-practice-c

Download Report

Transcript P - ndtien-practice-c

Chương 7: Deadlock
Nguyên lý hệ điều hành
Nguyễn Đức Thịnh - ĐHNNHN
Chương 7: Deadlock

Vấn đề deadlock

Mô hình hệ thống

Đặc trưng deadlock

Phương pháp xử lý deadlock
 Ngăn chặn deadlock

Tránh deadlock

Phát hiện deadlock

Phục hồi sau deadlock
Nguyên lý hệ điều hành
7.2
Nguyễn Đức Thịnh - ĐHNNHN
Mục tiêu
 Mô tả chi tiết về deadlock, nguyên nhân khiến cho các tiến trình chạy
đồng thời không thể hoàn thành
 Một số phương pháp ngăn chặn hoặc tránh deadlock trong một hệ
thống máy tính
Nguyên lý hệ điều hành
7.3
Nguyễn Đức Thịnh - ĐHNNHN
Vấn đề deadlock
 Một tập các process bị block, mỗi process giữ một tài nguyên và chờ
để nhận một tài nguyên được giữ bởi một process khác


Ví dụ

Hệ thống có 2 disk drive

P1 và P2, mỗi process đều giữ một disk drive và đều cần disk drive
còn lại
Ví dụ

semaphores A và B, khởi tạo bằng 1
 P0
wait (A);
Nguyên lý hệ điều hành
P1
wait(B) wait (B);
7.4
wait(A)
Nguyễn Đức Thịnh - ĐHNNHN
Ví dụ Bridge Crossing
 Lưu thông một chiều
 Mỗi section của một bridge có thể xem như một resource
 Nếu deadlock xuất hiện, có thể được giải quyết nếu một xe car
lùi lại (preempt resources và rollback)
 Vài xe car có thể bị lùi lại nếu một deadlock xuất hiện
 Starvation có thể xảy ra
 Chú ý – Nhiều OS không ngăn chặn hoặc xử lý deadlock
Nguyên lý hệ điều hành
7.5
Nguyễn Đức Thịnh - ĐHNNHN
Mô hình hệ thống
 Kiểu tài nguyên R1, R2, . . ., Rm
CPU cycle, không gian bộ nhớ, thiết bị I/O
 Mỗi loại tài nguyên Ri có Wi thực thể.
 Mỗi process sử dụng một tài nguyên như sau:

request

use

release
Nguyên lý hệ điều hành
7.6
Nguyễn Đức Thịnh - ĐHNNHN
Đặc trưng Deadlock
Deadlock có thể xuất hiện nếu bốn điều kiện sau xảy ra đồng thời:
 Mutual exclusion: chỉ một process có thể sử dụng một tài
nguyên tại một thời điểm
 Giữ và chờ: một process giữ ít nhất một tài nguyên đang chờ để
nhận các tài nguyên khác được giữ bởi các process khác
 Không preemption: một tài nguyên chỉ có thể được giả phóng
một cách tự nguyện bởi process giữ nó, after that process has
completed its task
 Đợi vòng tròn: tồn tại một tập {P0, P1, …, Pn} của các process
đang chờ đợi trong đó P0 đang đợi một tài nguyên được giữ bởi
P1, P1 đang đợi một tài nguyên được giữ bởi P2, …, Pn–1 đang đợi
một tài nguyên được giữ bởi Pn, và Pn đang đợi một tài nguyên
được giữ bởi P0.
Nguyên lý hệ điều hành
7.7
Nguyễn Đức Thịnh - ĐHNNHN
Đồ thị Phân bổ tài nguyên
Tập các đỉnh V và tập các cạnh E.
 V được chia thành hai tập:

P = {P1, P2, …, Pn}, bao gồm các process trong hệ thống

R = {R1, R2, …, Rm}, bao gồm tất cả các loại tài nguyên trong
hệ thống
 request edge – cạnh có hướng Pi  Rj
 assignment edge – cạnh có hướng Rj  Pi
Nguyên lý hệ điều hành
7.8
Nguyễn Đức Thịnh - ĐHNNHN
Resource-Allocation Graph (Cont.)
 Process
 Kiểu tài nguyên với 4 thực thể
 Pi yêu cầu thực thể của Rj
Pi
Rj
 Pi đang giữ một thực thể của Rj
Pi
Rj
Nguyên lý hệ điều hành
7.9
Nguyễn Đức Thịnh - ĐHNNHN
Ví dụ về một đồ thị phân bổ tài nguyên
Nguyên lý hệ điều hành
7.10
Nguyễn Đức Thịnh - ĐHNNHN
Đồ thị phân bổ tài nguyên với một deadlock
Nguyên lý hệ điều hành
7.11
Nguyễn Đức Thịnh - ĐHNNHN
Đồ thị với một Cycle nhưng không có Deadlock
Nguyên lý hệ điều hành
7.12
Nguyễn Đức Thịnh - ĐHNNHN
Các tính chất cơ bản
 Nếu đồ thị không có cycle  không có deadlock
 Nếu đồ thị có một cycle 

nếu chỉ một instance của mỗi loại tài nguyên, thì deadlock

nếu có vài instance của mỗi loại tài nguyên, có thể có deadlock
Nguyên lý hệ điều hành
7.13
Nguyễn Đức Thịnh - ĐHNNHN
Phương thức để quản lý deadlock
 Đảm bảo rằng hệ thống sẽ không bao giờ rơi vào trạng thái deadlock
 Cho phép hệ thống rơi vào trạng thái deadlock và phục hồi
 Bỏ qua vấn đề và cho rằng deadlock không bao giờ xuất hiện trong hệ
thống; được sử dụng bởi hầu hết các OS, kể cả UNIX
Nguyên lý hệ điều hành
7.14
Nguyễn Đức Thịnh - ĐHNNHN
Ngăn chặn Deadlock
Hạn chế các request
 Mutual Exclusion – không cần đối với resource chia sẻ được;
bắt buộc đối với resource không chia sẻ được
 Giữ và Chờ – phải đảm bảo rằng khi một process request một
resource, nó không giữ các resource khác

Đảm bảo process chỉ đưa ra request và được cấp phát các
resource của nó trước khi nó bắt đầu thực thi, hoặc cho phép
process đưa ra request chỉ khi nó không giữ resource nào cả

Sử dụng ít tài nguyên; có thể có starvation
Nguyên lý hệ điều hành
7.15
Nguyễn Đức Thịnh - ĐHNNHN
Ngăn chặn Deadlock
 No Preemption –

Nếu một process đang giữ một số resource đưa ra request về
resource khác và không thể được cấp phát ngay thì tất cả
resource đang được giữ phải được giải phóng

Preempted resource được thêm vào danh sách các resource mà
process đang chờ

Process sẽ được restart chỉ khi nó có thể lấy lại các resource cũ
của nó, cũng như các resource mới mà nó đang request
 Circular Wait – áp đặt một thứ tự lên tất cả các resource type, và yêu
cầu process đưa ra request theo thứ tự tăng dần
Nguyên lý hệ điều hành
7.16
Nguyễn Đức Thịnh - ĐHNNHN
Tránh Deadlock
Hệ thống phải có thêm một số thông tin ban đầu
 Mô hình đơn giản và hiệu quả nhất yêu cầu mỗi process thông báo
số lượng nhiều nhất các resource của mỗi type mà nó có thể cần
 Deadlock-avoidance algorithm sẽ chủ động xem xét trạng thái cấp
phát resource để đảm bảo không bao giờ có circular-wait
 Trạng thái cấp phát resource được định nghĩa bởi số lượng
resource có trong hệ thống và số lượng đã được cấp phát, và số
lượng lớn nhất mà mỗi process có thể request.
Nguyên lý hệ điều hành
7.17
Nguyễn Đức Thịnh - ĐHNNHN
Safe State
 Khi một process đưa ra requests tới một resource hiện có, hệ thống
phải quyết định xem việc cấp phát ngay có giữ cho hệ thống ở trong
safe state hay không
 Hệ thống ở trong safe state nếu tồn tại một dãy <P1, P2, …, Pn> của
tất cả các process trong hệ thống sao cho mỗi đối với mỗi Pi thì các
resource mà Pi có thể đưa ra request có thể được đáp ứng bởi các
resource hiện đang sẵn sàng và resource giữ bởi các Pj, với j < i
 Nói cách khác:

Nếu không đáp ứng ngay được request của Pi thì Pi có thể chờ
đến khi tất cả Pj kết thúc
Khi các Pj kết thúc, Pi nhận được resource cần thiết, thực thi và
giải phóng các resource đã được cấp, rồi kết thúc
 Khi Pi kết thúc, Pi +1 nhận được các resource cần thiết, và cứ như
vậy.

Nguyên lý hệ điều hành
7.18
Nguyễn Đức Thịnh - ĐHNNHN
Các tính chất cơ bản
 Nếu hệ thống ở trong safe state  không có deadlock
 Nếu hệ thống ở trong unsafe state  có thể xuất hiện deadlock
 Tránh  đảm bảo hệ thống không bao giờ ở trong unsafe state.
Nguyên lý hệ điều hành
7.19
Nguyễn Đức Thịnh - ĐHNNHN
Safe, Unsafe, Deadlock State
Nguyên lý hệ điều hành
7.20
Nguyễn Đức Thịnh - ĐHNNHN
Các thuật toán tránh
 Chỉ có một instance thuộc mỗi resource type

Dùng resource-allocation graph
 Có nhiều instances thuộc mỗi resource type

Dùng thuật toán banker
Nguyên lý hệ điều hành
7.21
Nguyễn Đức Thịnh - ĐHNNHN
Resource-Allocation Graph
 Claim edge Pi  Rj tương ứng với việc process Pj có thể request
resource Rj; thể hiện bởi nét đứt
 Claim edge chuyển thành request edge khi process đưa ra request
tới resource
 Request edge chuyển thành assignment edge khi resource được
cấp phát cho process
 Khi một resource được giải phóng bởi process, assignment edge lại
chuyển thành claim edge
 Resource phải được thông báo trước cho hệ thống
Nguyên lý hệ điều hành
7.22
Nguyễn Đức Thịnh - ĐHNNHN
Resource-Allocation Graph
Nguyên lý hệ điều hành
7.23
Nguyễn Đức Thịnh - ĐHNNHN
Unsafe State trong Resource-Allocation Graph
Nguyên lý hệ điều hành
7.24
Nguyễn Đức Thịnh - ĐHNNHN
Thuật toán Resource-Allocation Graph
 Giả sử rằng process Pi đưa ra request tới resource Rj
 Request chỉ được chấp thuận nếu việc chuyển request edge thành
assignment edge không tạo thành cycle trong resource allocation
graph
Nguyên lý hệ điều hành
7.25
Nguyễn Đức Thịnh - ĐHNNHN
Thuật toán Banker
 Nhiều instance
 Mỗi process phải đưa ra thông báo trước về số lượng nhiều nhất nó
có thể dùng
 Khi một process đưa ra request tới một resource nó có thể phải chờ
 Khi một process nhận được tất cả các resource cần thiết thì nó phải
trả lại sau một khoảng thời gian hữu hạn
Nguyên lý hệ điều hành
7.26
Nguyễn Đức Thịnh - ĐHNNHN
Cấu trúc dữ liệu cho thuật toán Banker
Đặt n = số lượng process và m = số lượng resource type.
 Available: Vector có chiều dài m. Nếu available [j] = k thì có k
instance thuộc resource type Rj sẵn sàng
 Max: ma trận n x m. Nếu Max [i,j] = k thì process Pi có thể đưa ra
request nhiều nhất là k instance thuộc resource type Rj
 Allocation: ma trận n x m. Nếu Allocation[i,j] = k thì Pi đang được
phân bổ k instance thuộc Rj
 Need: ma trận n x m. Nếu Need[i,j] = k thì Pi có thể cần thêm k
instance thuộc Rj để hoàn thành
Need [i,j] = Max[i,j] – Allocation [i,j]
Nguyên lý hệ điều hành
7.27
Nguyễn Đức Thịnh - ĐHNNHN
Safety Algorithm
1. Gọi Work và Finish là các vector có chiều dài m và n, tương ứng.
Khởi tạo:
Work = Available
Finish [i] = false với i = 0, 1, …, n- 1
2. Tìm i sao cho:
(a) Finish [i] = false và
(b) Needi  Work
Nếu không có i như vậy, chuyển sang bước 4
3. Work = Work + Allocationi
Finish[i] = true
Chuyển tới bước 2
4. Nếu Finish [i] == true với mọi i thì hệ thống ở trong safe state
Nguyên lý hệ điều hành
7.28
Nguyễn Đức Thịnh - ĐHNNHN
Thuật toán Resource-Request cho Process Pi
Requesti = request vector của process Pi. Nếu Requesti [j] = k thì
process Pi cần k instance thuộc resource type Rj
1. If Requesti  Needi chuyển sang bước 2. Nếu không thì raise
error condition, vì process vượt quá maximum claim của nó
2. If Requesti  Available, chuyến sang step 3. Nếu không Pi phải
chờ, vì resource chưa sẵn sàng
3. Giả sử phân bổ resource cho Pi bằng cách thay đổi state như sau:
Available = Available – Request;
Allocationi = Allocationi + Requesti;
Needi = Needi – Requesti;

Nếu safe  resource được phân bổ cho Pi

Nếu unsafe  Pi phải chờ, và state phân bổ cũ được lưu lại
Nguyên lý hệ điều hành
7.29
Nguyễn Đức Thịnh - ĐHNNHN
Ví dụ thuật toán Banker
 5 process P0 tới P4;
3 resource type:
A (10 instance), B (5 instance) và C (7 instance)
Trạng thái tại thời điểm T0:
Allocation
Nguyên lý hệ điều hành
Max
Available
ABC
ABC
ABC
P0
010
753
332
P1
200
322
P2
302
902
P3
211
222
P4
002
433
7.30
Nguyễn Đức Thịnh - ĐHNNHN
Ví dụ
 Ma trận Need được định nghĩa bằng Max – Allocation
Need
ABC
P0
743
P1
122
P2
600
P3
011
P4
431
 Hệ thống ở trong safe state vì dãy < P1, P3, P4, P2, P0> thỏa mãn điều
kiện safety
Nguyên lý hệ điều hành
7.31
Nguyễn Đức Thịnh - ĐHNNHN
Ví dụ: P1 Request (1,0,2)
 Kiểm tra Request  Available (nghĩa là (1,0,2)  (3,3,2)  true)
Allocation
Need
Available
ABC
ABC
ABC
P0
010
743
230
P1
302
020
P2
301
600
P3
211
011
P4
002
431
 Gọi safety algorithm chỉ ra dãy < P1, P3, P4, P0, P2> thỏa mãn yêu cầu
safety
 Request (3,3,0) của P4 có được chấp thuận?
 Request (0,2,0) của P0 có được chấp thuận?
Nguyên lý hệ điều hành
7.32
Nguyễn Đức Thịnh - ĐHNNHN
Phát hiện Deadlock
 Cho phép hệ thống rơi vào deadlock state
 Detection algorithm
 Recovery scheme
Nguyên lý hệ điều hành
7.33
Nguyễn Đức Thịnh - ĐHNNHN
Một Instance thuộc mỗi Resource Type
 Duy trì wait-for graph

Node là các process

Pi  Pj nếu Pi đang đợi Pj
 Định kì gọi thuật toán tìm kiếm cycle trong graph. Nếu có cycle, tồn
tại deadlock
Nguyên lý hệ điều hành
7.34
Nguyễn Đức Thịnh - ĐHNNHN
Resource-Allocation Graph và
Wait-for Graph
Resource-Allocation Graph
Nguyên lý hệ điều hành
7.35
Wait-for graph tương ứng
Nguyễn Đức Thịnh - ĐHNNHN
Vài Instance thuộc mỗi Resource Type
 Available: vector chiều dài m cho biết số lượng resource đang sẵn
sàng của mỗi type.
 Allocation: ma trận n x m cho biết số lượng resource của mỗi type
đang được phân bổ cho mỗi process.
 Request: ma trận n x m cho biết request hiên tại của mỗi process.
Nếu Request [i,j] = k thì process Pi đang request k instance của
resource type Rj.
Nguyên lý hệ điều hành
7.36
Nguyễn Đức Thịnh - ĐHNNHN
Detection Algorithm
1. Gọi Work vaf Finish là các vector chiều dài m và n, tương ứng. Khởi
tạo:
(a) Work = Available
(b) Với i = 1,2, …, n, nếu Allocationi  0 thì
Finish[i] = false; ngược lại, Finish[i] = true
2. Tìm i sao cho:
(a) Finish[i] == false
(b) Requesti  Work
Nếu không có i như vậy, chuyển tới bước 4
Nguyên lý hệ điều hành
7.37
Nguyễn Đức Thịnh - ĐHNNHN
Detection Algorithm
3. Work = Work + Allocationi
Finish[i] = true
Chuyển tới bước 2
4. Nếu tồn tại i, Finish[i] == false, 1  i  n, thì hệ thống ở trong deadlock
state. Hơn nữa, nếu Finish[i] == false, thì Pi bị deadlock
Nguyên lý hệ điều hành
7.38
Nguyễn Đức Thịnh - ĐHNNHN
Ví dụ Detection Algorithm
 Năm process P0 tới P4; ba resource type
A (7 instance), B (2 instance), và C (6 instance)
 Snapshot tại thời điểm T0:
Allocation
ABC
P00 1 0
P1
P2
P3
P4
Request
ABC
000
200
Available
ABC
000
202
303
211
002
000
100
002
 Dãy <P0, P2, P3, P1, P4> sẽ cho Finish[i] = với mọi i
Nguyên lý hệ điều hành
7.39
Nguyễn Đức Thịnh - ĐHNNHN
Ví dụ
 P2 request thêm một instance của type C
Request
ABC
P0
000
P1
201
P2
001
P3
100
P4
002
 Trạng thái của hệ thống?

Có thể lấy lại resource đang giữ bởi process P0, nhưng không đủ
resource cho các process khác

Tồn tại deadlock, bao gồm các process P1, P2, P3, và P4
Nguyên lý hệ điều hành
7.40
Nguyễn Đức Thịnh - ĐHNNHN
Sử dụng Detection-Algorithm
 Khi nào gọi phụ thuộc vào:

Deadlock có thường xuyên xuất hiện?

Bao nhiêu process cần phải roll back?

Một cho mỗi cycle
 Nếu detection algorithm được gọi tùy ý, có thể có nhiều cycle trong
resource graph và ta không thể chỉ ra process nào trong số các
process bị deadlock gây ra deadlock.
Nguyên lý hệ điều hành
7.41
Nguyễn Đức Thịnh - ĐHNNHN
Phục hồi từ Deadlock:
Kết thúc Process
 Abort tất cả các process bị deadlock
 Abort một process mỗi lần cho đến khi không còn deadlock cycle
 Abort theo thứ tự nào?

Độ ưu tiên của process

Process đã thực thi được bao lâu và cần bao lâu để hoàn tất

Resource mà process đã sử dụng

Resource mà process cần để hoàn tất

Bao nhiêu process cần phải kết thúc

Process là interactive hay batch?
Nguyên lý hệ điều hành
7.42
Nguyễn Đức Thịnh - ĐHNNHN
Phục hồi từ Deadlock:
Resource Preemption
 Chọn một victim –cost tối thiểu
 Rollback – quay trở lại một safe state, khởi động lại process cho
state đó
 Starvation – một process có thể luôn bị chọn làm victim, phải tính
cả số lượng rollback trong cost factor
Nguyên lý hệ điều hành
7.43
Nguyễn Đức Thịnh - ĐHNNHN
Hết chương 7
Nguyên lý hệ điều hành
Nguyễn Đức Thịnh - ĐHNNHN