Giới thiệu DeadlockĐồ thị cấp phát tài nguyên Resourece Allocation Graph – RAG Đồ Thị Cấp Phát Tài Nguyên & Deadlock I Nếu đồ thị không có chu trình: chắc chắn không có deadlock I Nếu đồ
Trang 1CT107 Hệ Điều Hành
Chương 6 Deadlock (Khóa Chết)
Giảng viên: Trần Công Án (tcan@cit.ctu.edu.vn)
Bộ môn Mạng máy tính & Truyền thông
Khoa Công Nghệ Thông Tin & Truyền Thông
Đại học Cần Thơ
2014
Trang 3Nội Dung
Trang 4Giới thiệu Deadlock
I Ví dụ 1:
I Giả sử 1 hệ thống có 2 tiến trình P và Q và F1, F2 là 2 tập tin
I Tiến trình P đang giữ F1 và cần truy xuất thêm F2
I Tiến trình Q đang giữ F2 và cần truy xuất thêm F1
Trang 5Giới thiệu Deadlock
Figure 7.10 Traffic deadlock for Exercise 7.11.
7.14 In Section 7.4.4, we describe a situation in which we prevent deadlock
by ensuring that all locks are acquired in a certain order However,
we also point out that deadlock is possible in this situation if two threads simultaneously invoke the transaction() function Fix thetransaction()function to prevent deadlocks.
7.15 Compare the circular-wait scheme with the various deadlock-avoidance schemes (like the banker’s algorithm) with respect to the following issues:
a Runtime overheads
b System throughput
7.16 In a real computer system, neither the resources available nor the demands of processes for resources are consistent over long periods (months) Resources break or are replaced, new processes come and go, and new resources are bought and added to the system If deadlock is controlled by the banker’s algorithm, which of the following changes can be made safely (without introducing the possibility of deadlock), and under what circumstances?
a Increase Available (new resources added).
b Decrease Available (resource permanently removed from system).
c Increase Max for one process (the process needs or wants more
resources than allowed).
d Decrease Max for one process (the process decides it does not need
Trang 6Giới thiệu Deadlock
Điều kiện phát sinh deadlock
Điều Kiện Phát Sinh Deadlock
1 Loại trừ hỗ tương: ít nhất một tài nguyên được giữ ở chế độ không chia sẻ (nonsharable mode).
2 Giữ và chờ: một tiến trình đang giữ ít nhất một tài nguyên và đợi thêm tài nguyên đang bị giữ bởi tiến trình khác.
3 Không trưng dụng tài nguyên: không trưng dụng tài nguyên cấp phát tiến trình, trừ khi tiến trình tự hoàn trả.
4 Chờ đợi vòng tròn: tồn tại một tập các tiến trình {P0, P1, , Pn} đang chờ đợi như sau: P0 đợi một tài nguyên P1 đang giữ, P1 đợi một tài nguyên P2 đang giữ, , Pn đang đợi một tài nguyên P0 đang giữ.
Trang 7Giới thiệu Deadlock
Mô hình hóa hệ thống
Mô Hình Hóa Hệ Thống
I Hệ thống gồm một tập các loại tài nguyên , kí hiệu R1, R2, , Rm
I Ví dụ: CPU cycles, memory space, I/O devices,
I Mỗi loại tài nguyên Ri có một tập các thể hiện (instances) Wi
I Tiến trình sử dụng tài nguyên theo các bước:
1 Yêu cầu (request) – phải chờ nếu không được đáp ứng ngay
2 Sử dụng (use)
3 Giải phóng (release)
I Các tác vụ yêu cầu và hoàn trả được thực hiện bằng các lời gọi hệ thống.
Trang 8Giới thiệu Deadlock
Đồ thị cấp phát tài nguyên (Resourece Allocation Graph – RAG)
Đồ Thị Cấp Phát Tài Nguyên – RAG
I Cạnh yêu cầu (request edge): có hướng từ Pi đến Rj
I Cạnh cấp phát(assignment edge): có hướng từ RJ đến Pi
Trang 9Giới thiệu Deadlock
Đồ thị cấp phát tài nguyên (Resourece Allocation Graph – RAG)
Trang 10Giới thiệu Deadlock
Đồ thị cấp phát tài nguyên (Resourece Allocation Graph – RAG)
◦ One instance of resource type R1
◦ Two instances of resource type R2
◦ One instance of resource type R3
◦ Three instances of resource type R4
• Process states:
◦ Process P1is holding an instance of resource type R2and is waiting for
an instance of resource type R1
◦ Process P2 is holding an instance of R1 and an instance of R2 and is
waiting for an instance of R3
◦ Process P3is holding an instance of R3
Given the definition of a resource-allocation graph, it can be shown that, if
the graph contains no cycles, then no process in the system is deadlocked If
the graph does contain a cycle, then a deadlock may exist
If each resource type has exactly one instance, then a cycle implies that a
deadlock has occurred If the cycle involves only a set of resource types, each
of which has only a single instance, then a deadlock has occurred Each process
involved in the cycle is deadlocked In this case, a cycle in the graph is both a
necessary and a sufficient condition for the existence of deadlock
If each resource type has several instances, then a cycle does not necessarily
imply that a deadlock has occurred In this case, a cycle in the graph is a
necessary but not a sufficient condition for the existence of deadlock
To illustrate this concept, we return to the resource-allocation graph
depicted in Figure 7.1 Suppose that process P3requests an instance of resource
Trang 11Giới thiệu Deadlock
Đồ thị cấp phát tài nguyên (Resourece Allocation Graph – RAG)
Figure 7.2 Resource-allocation graph with a deadlock.
type R2 Since no resource instance is currently available, we add a request edge
P3→ R2to the graph (Figure 7.2) At this point, two minimal cycles exist in the
system:
P1→ R1→ P2→ R3→ P3→ R2→ P1
P2→ R3→ P3→ R2→ P2
Processes P1, P2, and P3are deadlocked Process P2is waiting for the resource
R3, which is held by process P3 Process P3is waiting for either process P1or
process P2to release resource R2 In addition, process P1is waiting for process
P2to release resource R1
Now consider the resource-allocation graph in Figure 7.3 In this example,
we also have a cycle:
Trang 12[CT107] Ch6 Deadlock
Giới thiệu Deadlock
Đồ thị cấp phát tài nguyên (Resourece Allocation Graph – RAG)
Figure 7.2 Resource-allocation graph with a deadlock.
type R2 Since no resource instance is currently available, we add a request edge
P3→ R2to the graph (Figure 7.2) At this point, two minimal cycles exist in the
system:
P1→ R1→ P2→ R3→ P3→ R2→ P1
P2→ R3→ P3→ R2→ P2
Processes P1, P2, and P3are deadlocked Process P2is waiting for the resource
R3, which is held by process P3 Process P3 is waiting for either process P1 or
process P2to release resource R2 In addition, process P1is waiting for process
P2to release resource R1
Now consider the resource-allocation graph in Figure 7.3 In this example,
we also have a cycle:
Trang 13Giới thiệu Deadlock
Đồ thị cấp phát tài nguyên (Resourece Allocation Graph – RAG)
Đồ Thị Cấp Phát Tài Nguyên & Deadlock
I Nếu đồ thị không có chu trình: chắc chắn không có deadlock
I Nếu đồ thị có chu trình:
I Nếu mỗi loại tài nguyên chỉ có một thể hiện:chắc chắn códeadlock
I Nếu mỗi loại tài nguyên có nhiều thể hiện:có thể códeadlock
Trang 14Các cách tiếp cận với vấn đề deadlock
Các Cách Tiếp Cận Đối Với Vấn Đề Deadlock
1 Đề ra các giao thức để đảm bảo cho hệ thống không bao giờ rơi vào trạng thái deadlock.
2 Cho phép hệ thống rơi vào trạng thái deadlock, sau đó sử dụng các giải thuật để phát hiện deadlock và phục hồi.
3 Không quan tâm và không xử lý vấn đề deadlock trong hệ thống
I Khá nhiều hệ điều hành sử dụng phương pháp này
I Tuy nhiên, nếu deadlock không được phát hiện và xử lý sẽ dẫn đến việcgiảm hiệu suất của hệ thống Cuối cùng, hệ thống có thể ngưng hoạtđộng và phải khởi động lại
Trang 152 Tránh deadlock (deadlock avoidance): các tiến trình cần cung cấp
thông tin về tài nguyênnó cần để hệ thống cấp phát tài nguyên mộtcách thích hợp
Trang 16Ngăn chặn và tránh deadlock
Ngăn chặn deadlock
Ngăn Chặn Deadlock – Điều kiện 1
Ngăn một trong bốn điều kiện cần của deadlock – thắt chặt cách thức yêu cầu tài nguyên của tiến trình.
1 Ngăn Loại trừ hỗ tương (mutual exclusion):
I Tài nguyên có thể chia sẻ: không cần thiết
I Tài nguyên không thể chia sẻ:không thể thực hiệnđược do một số tàinguyên không thể được chia sẻ đồng thời cho nhiều tiến trình
Trang 17Ngăn chặn và tránh deadlock
Ngăn chặn deadlock
Ngăn Chặn Deadlock – Điều Kiện 2
2 Ngăn Chờ và giữ (wait & hold): phải đảm bảo khi một tiến trình yêu cầu một tài nguyên, nó không đang giữ một tài nguyên nào khác.
I Cách 1: mỗi t/trìnhyêu cầu toàn bộ tài nguyêncần thiết một lần
I Cách 2: khi yêu cầu tài nguyên, tiến trìnhkhông đang giữ bất kỳ tàinguyên nào Nếu đang giữ thì phải trả lại trước khi yêu cầu
I Ví dụ: xét một tiến trình P copy dữ liệu từ băng từ sang đĩa từ, sau đósắp xếp dữ liệu trên đĩa từ rồi in kết quả ra máy in
I Khuyết điểm: hiệu suất sử dụng t/nguyên thấp + có thể bị đói
t/nguyên
Trang 18Ngăn chặn và tránh deadlock
Ngăn chặn deadlock
Ngăn Chặn Deadlock – Điều Kiện 3
3 Ngăn Không trưng dụng (no prermption): nếu một tiến trình A có đang giữ tài nguyên và yêu cầu thêm tài nguyên đang giữ bởi tiến trình khác thì:
I Cách 1: hệ thống lấy lại mọi tài nguyên A đang giữ và A sẽ khởi độnglại khi cả tài nguyên cũ và mới sẵn sàng cho nó
I Cách 2: hệ thống xem tài nguyên mà A yêu cầu:
thêm tài nguyên, hệ thống sẽ lấy lại tài nguyên của B và cấp phát cho A
thêm tài nguyên thì A phải đợi (⇒ tài nguyên của A đang giữ sẽ bị thuhồi nếu có tiến trình khác cần – trường hợp 1)
Trang 19Ngăn chặn và tránh deadlock
Ngăn chặn deadlock
Ngăn Chặn Deadlock – Điều Kiện 4
4 Ngăn Chờ đợi vòng tròn (circular wait):
I Mỗi tài nguyên sẽ được gán mộtthứ tự toàn cục
I Các tiến trình khiyêu cầu tài nguyên phải theo đúng thứ tự
I Thông thường, một hàm one-to-one được định nghĩa để thực hiện gánthứ tự toàn cục: F : R → N; với R là tập các tài nguyên
Trang 20I Các giải thuật: giải thuật Đồ thị cấp phát tài nguyên và giải thuật Banker.
Trang 21Ngăn chặn và tránh deadlock
Tránh deadlock
Trạng Thái An Toàn (Safe State)
I Một hệ thống ở trạng thái an toàn nếu tồn tại một chuỗi an toàn
I Một chuỗi tiến trình hP1, P2, , Pni là một chuỗi an toàn nếu:
I Với mọi Pi, i = 1 n, mọi yêu cầu về tài nguyên của Pi có thể được thỏamãn bởi các tài nguyên đang sẵn sàng hoặc các tài nguyên đang bị giữbởi Pj, với j < i (! ngăn chờ đợi vòng tròn)
I Một hệ thống ở trạng thái không an toàn nếu không tồn tại chuỗi an toàn.
Trang 22Ngăn chặn và tránh deadlock
Tránh deadlock
Ví Dụ Về Chuỗi An Toàn
I Cho một hệ thống có 12 băng từ và 3 tiến trình P0, P1, P2.
I Trạng thái và nhu cầu sử dụng tài nguyên của 3 tiến trình tại thời điểm t0 được cho trong bảng sau: 7.5 Deadlock Avoidance 329
Maximum Needs Current Needs
At time t0, the system is in a safe state The sequence <P1, P0, P2>satisfies
the safety condition Process P1can immediately be allocated all its tape drivesand then return them (the system will then have five available tape drives);
then process P0can get all its tape drives and return them (the system will then
have ten available tape drives); and finally process P2can get all its tape drivesand return them (the system will then have all twelve tape drives available)
A system can go from a safe state to an unsafe state Suppose that, at time
t1, process P2 requests and is allocated one more tape drive The system is no
longer in a safe state At this point, only process P1can be allocated all its tapedrives When it returns them, the system will have only four available tape
drives Since process P0is allocated five tape drives but has a maximum of ten,
it may request five more tape drives If it does so, it will have to wait, because
they are unavailable Similarly, process P2 may request six additional tapedrives and have to wait, resulting in a deadlock Our mistake was in granting
the request from process P2for one more tape drive If we had made P2 waituntil either of the other processes had finished and released its resources, then
we could have avoided the deadlock
Given the concept of a safe state, we can define avoidance algorithms thatensure that the system will never deadlock The idea is simply to ensure that thesystem will always remain in a safe state Initially, the system is in a safe state.Whenever a process requests a resource that is currently available, the systemmust decide whether the resource can be allocated immediately or whetherthe process must wait The request is granted only if the allocation leaves thesystem in a safe state
In this scheme, if a process requests a resource that is currently available,
it may still have to wait Thus, resource utilization may be lower than it wouldotherwise be
7.5.2 Resource-Allocation-Graph Algorithm
If we have a resource-allocation system with only one instance of each resourcetype, we can use a variant of the resource-allocation graph defined in Section7.2.2 for deadlock avoidance In addition to the request and assignment edgesalready described, we introduce a new type of edge, called a claim edge
A claim edge P i → R j indicates that process P i may request resource R j atsome time in the future This edge resembles a request edge in direction but is
represented in the graph by a dashed line When process P i requests resource
R j , the claim edge P i → R j is converted to a request edge Similarly, when a
resource R j is released by P i , the assignment edge R j → P iis reconverted to a
claim edge P i → R j
Note that the resources must be claimed a priori in the system That is,
before process P i starts executing, all its claim edges must already appear inthe resource-allocation graph We can relax this condition by allowing a claim
edge P i → R j to be added to the graph only if all the edges associated with
process P iare claim edges
I Chuỗi hP1, P0, P2i là chuỗi an toàn ⇒ hệ thống an toàn
I Giả sử tại thời điểm t1, P2 yêu cầu và được cấp phát 1 băng từ ⇒ hệ thống còn 2 băng từ sẵn sàng và hệ thống trở nên không an toàn (?)
TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch6 Deadlock 22
Trang 23[CT107] Ch6 Deadlock
Ngăn chặn và tránh deadlock
Tránh deadlock
Trạng Thái An Toàn Và Deadlock
I Nếu hệ thống đang trong trạng thái an toàn ⇒ không deadlock
I Nếu hệ thống đang ở trạng thái không an toàn ⇒ có thể có deadlock
I Ý tưởng cho giải pháp tránh deadlock:
đảm bảo hệ thống không rơi vào trạng thái
không an toàn bằng cách:
I Khi một tiến trình yêu cầu một tài nguyên
đang sẵn sàng, hệ thống sẽ kiểm tra nếu
việc cấp phátkhông dẫn đến trạng thái
không an toàn thì sẽ cấp phátngay
328 Chapter 7 Deadlocks
algorithm that ensures that the system will never enter a deadlocked state A deadlock-avoidance algorithm dynamically examines the resource-allocation state to ensure that a circular-wait condition can never exist The resource-
allocation state is defined by the number of available and allocated resources
and the maximum demands of the processes In the following sections, we explore two deadlock-avoidance algorithms.
7.5.1 Safe State
A state is safe if the system can allocate resources to each process (up to its
maximum) in some order and still avoid a deadlock More formally, a system
is in a safe state only if there exists asafe sequence A sequence of processes
<P1 , P2, , P n> is a safe sequence for the current allocation state if, for each
P i , the resource requests that P ican still make can be satisfied by the currently
available resources plus the resources held by all P j , with j < i In this situation,
if the resources that P i needs are not immediately available, then P ican wait
until all P j have finished When they have finished, P i can obtain all of its needed resources, complete its designated task, return its allocated resources,
and terminate When P i terminates, P i+1can obtain its needed resources, and
so on If no such sequence exists, then the system state is said to be unsafe.
A safe state is not a deadlocked state Conversely, a deadlocked state is
an unsafe state Not all unsafe states are deadlocks, however (Figure 7.6).
An unsafe state may lead to a deadlock As long as the state is safe, the
operating system can avoid unsafe (and deadlocked) states In an unsafe state, the operating system cannot prevent processes from requesting resources in such a way that a deadlock occurs The behavior of the processes controls unsafe states.
To illustrate, we consider a system with twelve magnetic tape drives and
three processes: P0, P1, and P2 Process P0requires ten tape drives, process P1
may need as many as four tape drives, and process P2 may need up to nine tape
drives Suppose that, at time t0, process P0 is holding five tape drives, process
P1 is holding two tape drives, and process P2 is holding two tape drives (Thus, there are three free tape drives.)
Trang 24Ngăn chặn và tránh deadlock
Tránh deadlock
Giải Thuật Đồ Thị Cấp Phát Tài Nguyên
I Được áp dụng cho hệ thống chỉ có 1 thể hiện cho mỗi loại tài nguyên.
I Bổ sung thêm 1 loại cạnh, “cạnh dự định” yêu cầu, Pi → Rj: Pi có thể
yêu cầu Rj, được biểu diễn bằng đường ngắt khúc trên đồ thị.
I Việc yêu cầu tài nguyên phải được dự tính
Figure 7.7 Resource-allocation graph for deadlock avoidance.
graph We check for safety by using a cycle-detection algorithm An algorithm
is the number of processes in the system
If no cycle exists, then the allocation of the resource will leave the system
in a safe state If a cycle is found, then the allocation will put the system in
satisfied
To illustrate this algorithm, we consider the resource-allocation graph of
7.5.3 Banker’s Algorithm
The allocation-graph algorithm is not applicable to a allocation system with multiple instances of each resource type The deadlock-avoidance algorithm that we describe next is applicable to such a system but
resource-is less efficient than the resource-allocation graph scheme Thresource-is algorithm resource-is
the algorithm could be used in a banking system to ensure that the bank never
R1
R2
P2
P1
Figure 7.8 An unsafe state in a resource-allocation graph.
TS Trần Công Án (Khoa CNTT&TT) [CT107] Ch6 Deadlock 24