Professional Documents
Culture Documents
2 / 201
Chương 2: Quản lý tiến trình
Giới thi»u
4 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
Nội dung
chính
1 Tiến
trình
2 Luồng
(Thread)
3 Diều phối CPU
5 Bế tắc và xť lý bế tắc
5 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1. Khái niệm tiến trình
1 Tiến trình
Khái niệm tiến trình
Điều phối tiến trình (Process
Scheduling) Thao tác trên tiến trình
Hσp tác tiến trình
Truyền thông liên tiến trình
6 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1. Khái niệm tiến trình
Chuyển tø trạng thái này sang trạng thái khác đưσc thực
hiện theo yêu cầu nằm trong chương trình của ngưσi sû
dựng
Xuất phát tø m®t trạng thái ban đầu
7 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1. Khái niệm tiến trình
Chuyển tø trạng thái này sang trạng thái khác đưσc thực
hiện theo yêu cầu nằm trong chương trình của ngưσi sû
dựng
2 Xuất phát tø m®t trạng thái ban đầu
Là chương trình đang thực hiện
Tài nguyên tối thiểu cần có
B® nhσ cho mã chương trình và dú liệu
Các thanh ghi của processor phực vự cho quá trình thực
hiện chương trình
Tiến trình >< chương trình
Chương trình: thực thể thự đ®ng (nëi dung file trên đĩa)
Tiến trình: thực thể chủ đ®ng (bë đếm l»nh, t¼p tài
nguyên) M®t chương trình có thể
⇒Đưσc thực hiện bσi các tiến trình khác nhau,vσi các b®
dú liệu khác nhau (mët chương trình, nhiều tiến trình)
⇒Gọi tσi nhiều tiến trình
7 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1. Khái niệm tiến trình
8 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1. Khái niệm tiến trình
9 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1. Khái niệm tiến trình
10 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1. Khái niệm tiến trình
12 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1. Khái niệm tiến trình
Mỗi tiến trình đưσc thể hiện trong hệ thống bσi m®t khối
điều khiển tiến trình
PCB: cấu trúc thông tin cho phép xác đành duy nhất m®t tt
Trạng thái tiến trình
B® đếm lệnh
Các thanh ghi của
CPU
Thông tin dùng để điều phối tiến
trình Thông tin quản lý b® nhσ
Thông tin tài nguyên có thể sû
dựng Thông tin thống kê
...
13 / 201Con trỏ tσi m®t PCB khác
Chương 2: Quản lý tiến trình
1. Tiến trình
1. Khái niệm tiến trình
14 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.2 Điều phối tiến trình
1 Tiến trình
Khái niệm tiến trình
Điều phối tiến trình (Process
Scheduling) Thao tác trên tiến trình
Hσp tác tiến trình
Truyền thông liên tiến trình
15 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.2 Điều phối tiến trình
Giới thi»u
16 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.2 Điều phối tiến trình
17 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.2 Điều phối tiến trình
Tiến trình mσi tạo, đưσc đ°t trong hàng đσi sắn sàng, và
đσi cho tσi khi đưσc lựa chQn để thực hiện
18 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.2 Điều phối tiến trình
19 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.2 Điều phối tiến trình
Nhiệm vự
Đưa t/trình ra khỏi b® nhσ (làm giảm múc dë da chương
trình) Sau đó đưa tiến trình quay trσ lại (có thể σ và trí
khác) và tiếp tực thực hiện
Mực đích: Giải phóng vùng nhσ, tạo vùng nhσ tự do r®ng
hơn
22 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.2 Điều phối tiến trình
Chuyển CPU tø tiến trình này sang tiến trình khác (hoán
dổi tiến trình thực hi»n)
Thực hiện khi xuất hiện tín hiệu ngắt (ngắt thσi gian) ho°c
tiến trình đưa ra lσi gQi hệ thống (thực hi»n và ra)
Lưu đồ của chuyển CPU giúa các t/trình(Silberschatz
2002)
23 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.3 Thao tác trên tiến trình
1 Tiến trình
Khái niệm tiến trình
Điều phối tiến trình (Process
Scheduling) Thao tác trên tiến trình
Hσp tác tiến trình
Truyền thông liên tiến trình
24 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.3 Thao tác trên tiến trình
25 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.3 Thao tác trên tiến trình
Tiến trình có thể tạo nhiều tiến trình mσi cùng hoạt
đ®ng (CreateProcess(), fork())
Tiến trình tạo: tiến trình cha
Tiến trình đưσc tạo: tiến trình con
Tiến trình con có thể tạo tiến trình con khác ⇒Cây tiến
trình Vấn đề phân phối tài nguyên
Tiến trình con lấy tài nguyên tù h» diều hành
Tiến trình con lấy tài nguyên tù tiến trình cha
Tất cả các tài nguyên
M®t phần tài nguyên của tiến trình cha (ngăn ngùa vi»c tạo
quá nhiều tiến trình con)
Vấn đề thực hiện
Tiến trình cha tiếp tực thực hiện đồng thσi vσi tiến trình
con Tiến trình cha đσi tiến trình con kết thúc
26 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.3 Thao tác trên tiến trình
Hoàn thành câu lệnh cuối và yêu cầu HĐH xóa nó (exit)
Gûi trả dú liệu tσi tiến trình cha
Các tài nguyên đã cung cấp đưσc trả lại hệ thống
Tiến trình cha có thể kết thúc sự thực hiện của tiến trình
con Tiến trình cha phải biết đành danh tiến trình con ⇒ tiến
trình con phải gûi đành danh cho tiến trình cha khi đưσc khσi
tạo Sû dựng lσi gQi hệ thống (abort)
Tiến trình cha kết thúc tiến trình con khi
Tiến trình con sû dựng vưσt quá mùc tài nguyên đưσc cấp Nhiệm
vự cung cấp cho tiến trình con không còn cần thiết núa Tiến
trình cha kết thúc và hệ điều hành không cho phép tiến trình
con tồn tại khi tiến trình cha kết thúc
⇒Cascading termination. VD, kết thúc h» thống
27 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.3 Thao tác trên tiến trình
CreateProcess(. . .)
LPCTSTR Tên của chương trình đưσc thực hiện
LPTSTR Tham số dòng lệnh
LPSECURITY_ATTRIBUTES Thu®c tính an ninh t/trình
LPSECURITY_ATTRIBUTES Thu®c tính an ninh luồng
BOOL Cho phép kế thøa các thẻ thiết bà (TRUE/FALSE )
DWORD Cσ tạo tiến trình (VD CREATE_NEW_CONSOLE )
LPVOID Trỏ tσi khối môi trưσng
LPCTSTR Đưσng dẫn đầy đủ đến chương trình
LPSTARTUPINFO Cấu trúc thông tin cho tiến trình mσi
LPPROCESS_INFORMATION Thông tin về tiến trình mσi
TerminateProcess(HANDLE hProcess, UINT uExitCode)
hProcess Thẻ tiến trình bà kết thúc đóng
uExitCode Mã kết thúc tiến trình
WaitForSingleObject(HANDLE hHandle, DWORD dwMs)
hHandle Thẻ đối tưσng
28 / 201
dwMs Thσi gian chσ đσi
Chương 2: Quản lý tiến trình
1. Tiến trình
1.3 Thao tác trên tiến trình
Ví dụ
#include <windows.h>
#include <stdio.h>
i n t main(){
STARTUPINFO s i ;
PROCESS_INFORMATION
pi;
ZeroMemory(&si,
sizeof(si));
si.cb = sizeof(si);
CreateProcess("Child.exe",NULL,NULL,NULL,FALSE,
CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi);
WaitForSingleObject(pi.hProcess,10000);//INFINITE
TerminateProcess(pi.hProcess, 0 ) ;
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
29 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.4 Hσp tác tiến trình
1 Tiến trình
Khái niệm tiến trình
Điều phối tiến trình (Process
Scheduling) Thao tác trên tiến trình
Hσp tác tiến trình
Truyền thông liên tiến trình
30 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.4 Hσp tác tiến trình
Consumer
while(1){
while(Counter == 0 ) ; /*do nothing*/
nextConsumed = Buffer[OUT];
OUT =(OUT + 1 ) % BUFFER_SIZE;
Co u n t e r- -;
/*consume t h e item i n nextConsumed*/
}
34 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.5 Truyền thông liên tiến trình
1 Tiến trình
Khái niệm tiến trình
Điều phối tiến trình (Process
Scheduling) Thao tác trên tiến trình
Hσp tác tiến trình
Truyền thông liên tiến trình
35 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.5 Truyền thông liên tiến trình
Cho phép các tiến trình trao đổi vσi nhau không qua sû
dựng các biến phân chia
Yêu cầu 2 thao tác cơ bản
Send (msg) Các msg có kích thưσc cố đành ho°c thay đổi
Cố đành : dễ cài đ°t mùc hệ thống, nhiệm vự lªp trình khó Thay
đổi: cài đ°t mùc hệ thống phùc tạp, lªp trình đơn giản
Receive (msg)
Nếu 2 tiến trình P và Q muốn trao đổi, chúng cần
Thiết lªp m®t liên kết truyền thông (v¼t lý/logic) giúa chúng
Trao đổi các messages nhσ các thao tác send/receive
Các vấn đề cài đ°t
Các liên kết đưσc thiết lªp như thế nào?
M®t liên kết có thể dùng cho nhiều hơn 2 tiến trình? Bao
nhiêu liên kết có thể tồn tại giúa mQi c°p tiến trình?
Kích thưσc thông báo mà liên kết chấp nhªn cố đành/thay
đổi?
37 /
Liên
201
kết m®t hay hai chiều?
Chương 2: Quản lý tiến trình
1. Tiến trình
1.5 Truyền thông liên tiến trình
Các tiến trình phải gQi tên tiến trình nhªn/gûi m®t
cách tưσng minh
send (P, message) - gûi m®t thống báo tσi tiến trình P
receive(Q, message) - Nhªn m®t thông báo tø tiến trình
Q
Tính chất của liên kết truyền thông
Các liên kết đưσc thiết lªp tự đ®ng
M®t liên kết gắn ch¿ vσi c°p tiến trình truyền
thông Ch¿ tồn tại m®t liên kết giúa c°p tiến trình
Liên kết có thể là m®t chiều, nhưng thưσng hai
chiều
38 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.5 Truyền thông liên tiến trình
40 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.5 Truyền thông liên tiến trình
Vùng đ»m
Các thông báo trao đổi giúa các tiến trình đưσc lưu
trong hàng đσi tạm thσi
Hàng đσi có thể đưσc cài đ°t theo
Khả năng chùa 0 (Zero capacity ): Đ® dài hàng đσi là 0
Không tồn tại thông báo trong đưσng liên kết
⇒ Sender phải đσi cho tσi khi thông báo đưσc nhªn
Khả năng chùa có giσi hạn(Bound capacity )
Hàng đσi có đọ dài n ⇒ chùa nhiều nhất n thông báo
Nếu hàng đσi không đầy, thông báo sẽ đưσc lưu vào
trong vùng đệm và Sender tiếp tực bình thưσng
Nếu hàng đσi đầy, sender phải đσi cho tσi khi có chỗ
trống
Khả năng chùa không giσi hạn (Unbound capacity )
Sender không bao giσ phải đσi
41 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.5 Truyền thông liên tiến trình
42 / 201
Chương 2: Quản lý tiến trình
1. Tiến trình
1.5 Truyền thông liên tiến trình
Bài tªp
43 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
Nội dung
chính
1 Tiến
trình
2 Luồng
(Thread)
3 Diều phối CPU
5 Bế tắc và xť lý bế tắc
44 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
2 Luồng (Thread)
Giσi thiệu
Mô hình đa luồng
Cài đ°t luồng
45 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
Ví dụ: Vector
46 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
Ví dụ: Vector
46 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
Ví dụ:
Chat
47 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
Ví dụ:
Chat
Process Q
while(1){
Receive(P,Msg);
PrintLine(Msg);
ReadLine(Msg);
Send(P,Msg);
}
47 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
Ví dụ:
Chat
Process Q Process P
while(1) while(1)
{ Receive(P,Msg { ReadLine(Msg
); );
PrintLine(Msg);
ReadLine(Msg); Send(Q,Msg);
Receive(Q,Msg);
Send(P,Msg); PrintLine(Msg);
} }
47 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
Ví dụ:
Chat
Ví dụ:
Chat
48 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
49 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
51 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
51 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
52 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
52 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
52 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
52 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
52 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu
2 Luồng (Thread)
Giσi thiệu
Mô hình đa luồng
Cài đ°t luồng
53 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
2.2 Mô hình đa luồng
Mȏ hình nhiều-một
Mȏ hình một-một
Mȏ hình nhiều-nhiều
2 Luồng (Thread)
Giσi thiệu
Mô hình đa luồng
Cài đ°t luồng
58 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
2.3 Cài đ°t luồng
Ví dụ
#include <windows.h>
#include <stdio.h>
void Ro u tin e ( in t n){
printf("My
argument i s %d\
n", n ) ;
}
i n t main(){
i n t i , P[5];
HANDLE hHandles[5];
DWORD I d ;
f o r ( i = 0 ; i < 5 ;i++)
{
P[i] = i ;
hHandles[i] = CreateThread(NULL,0,Routine,P[i],0,&Id);
p r in tf ( "T h r e ad %d was c r e a t e d \ n " , I d ) ;
}
f o r ( i = 0 ; i < 5;i++)
60 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
2.3 Cài đ°t luồng
Java Threads
Tồn tại m®t phương thùc run(), sẽ đưσc thực hiện trên
JVM Luồng đưσc thực hiện bσi gQi phương thùc start()
Cung cấp vùng nhσ và khσi tạo luồng mσi trong máy ảo Java
GQi tσi phương thùc run()
61 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
2.3 Cài đ°t luồng
Ví dụ
c l a s s Sum extends
Thread{ i n t low, u p , S;
p u b lic Sum(int a , i n t b)
{ low = a ; up = b ; S=
0;
Sy ste m . o u t. p r intln ( "Th is
i s Thread
"+this.getId());
}
p u blic void run(){
f o r ( i n t i= low; i < up; i ++) S+= i ;
S y s t e m . o u t . p r i n t l n ( t h i s . g e t I d ( ) + " : " + S) ;
}
}
p u blic c l a s s Tester {
p u b lic s t a t i c void main(String[] a rg s )
{ Sum T1 = new Sum(1,100); T 1 . s t a r t ( ) ;
Sum T2 = new Sum(10,200); T 2 . s t a r t ( ) ;
62 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
2.3 Cài đ°t luồng
Vấn đề đa luồng
#include <windows.h>
#include <stdio.h>
i n t x = 0 , y = 1;
void T1(){
while(1){ x = y
+ 1;
prin tf( "%4 d ",
x); }
}
ivoid T2(){
n t main()
{ HANDLE h 1 , y = 2 D
while(1){ ; WORD ThreadId;
h1
h2; = CreateThread(NULL,0,T1, NULL,0,&ThreadId);
h2 y == yCreateThread(NULL,0,T2,
* 2; } NULL,0,&ThreadId);
WaitForSingleObject(h1,INFINITE);
WaitForSingleObject(h2,INFINITE);
return 0;
}
63 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
2.3 Cài đ°t luồng
Vấn đề đa luồng
Shared int y = 1
Thread T1 Thread T2 Thread A Thread B
y ←2
x ←y+ 1
y←y*2
x=?
64 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
2.3 Cài đ°t luồng
Vấn đề đa luồng
Shared int y = 1
Thread T1 Thread T2 Thread A Thread B
y ←2
x ←y+ 1
y←y*2 ta
x ←y+ 1
x=? t1 y ←2
t2 x ←y*2
x=2
t
64 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
2.3 Cài đ°t luồng
Vấn đề đa luồng
Shared int y = 1
Thread T1 Thread T2 Thread A Thread B
y ←2
x ←y+ 1
y←y*2
x=? t1 y ←2
x ←y+ 1 ta
t2 x ←y*2
x=3
t
64 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
2.3 Cài đ°t luồng
Vấn đề đa luồng
Shared int y = 1
Thread T1 Thread T2 Thread A Thread B
y ←2
x ←y+ 1
y←y*2
x=? t1 y ←2
t2 x ←y*2
x ←y+ 1 ta
x=5
t
64 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
2.3 Cài đ°t luồng
Vấn đề đa luồng
Shared int y = 1
Thread T1 Thread T2 Thread A Thread B
y ←2
x ←y+ 1
y←y*2
x=? t1 y ←2
t2 x ←y*2
Kết quả thực hiện các x ←y+ 1 ta
luồng song song phự
thu®c trªt tự truy nhªp
biến dùng chung giúa x=5
t
chúng
64 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
2.3 Cài đ°t luồng
Bài tªp
65 / 201
Chương 2: Quản lý tiến trình
3. Điều phối CPU
Nội dung
chính
1 Tiến
trình
2 Luồng
(Thread)
3 Diều phối CPU
5 Bế tắc và xť lý bế tắc
66 / 201
Chương 2: Quản lý tiến trình
3. Điều phối CPU
1. Các khái niệm cơ bản
67 / 201
Chương 2: Quản lý tiến trình
3. Điều phối CPU
1. Các khái niệm cơ bản
Giới thi»u
Tiến trình đưσc thực hiện cho tσi khi phải chσ đσi m®t
thao tác vào ra
Hệ đơn chương trình: CPU không đưσc sû dựng ⇒Lãng phí
Hệ đa chương trình: cố gắng sû dựng CPU (dang rảnh rői )
cho các tiến trình khác (dang chσ dσi )
Cần nhiều tiến trình sắn sàng trong b® nhσ tại m®t thσi
điểm Khi m®t tiến trình phải chσ, hệ điều hành lấy CPU cho
tiến trình khác
Điều phối CPU quan trong vσi hệ điều hành đa nhiệm
Luân chuyển CPU giúa các tiến trình làm cho máy tính
đưσc khai thác hiệu quả hơn
68 / 201
Chương 2: Quản lý tiến trình
3. Điều phối CPU
1. Các khái niệm cơ bản
Lựa chQn m®t trong số các tiến trình đang sắn sàng trong
b® nhσ và cung cấp CPU cho nó
Các tiến trình phải sắp hàng trong hàng đσi
Hàng đσi FIFO, Hàng đσi ưu tiên, DSLK đσn giản . . .
Quyết đành điều phối CPU xảy ra khi tiến trình
Chuyển tø trạng thái thực hiện sang trạng thái chσ đσi
1
(y/c vào/ra)
2 Chuyển tø trạng thái thực hiện sang trạng thái sắn sàng (,
thành vào/ra)
4 Tiến trình kết
thúchσp 1&4
Trưσng
⇒Điều phối không trưng dựng (non-
preemptive)
Trưσng hσp khác
70 / 201 ⇒Điều phối trưng dựng (preemptive)
Chương 2: Quản lý tiến trình
3. Điều phối CPU
1. Các khái niệm cơ bản
72 / 201
Chương 2: Quản lý tiến trình
3. Điều phối CPU
3.2 Tiêu chuẩn điều phối
Giả thiết: Các tiến trình ch¿ có m®t chu kỳ tính toán
(ms) Đo đạc: Thσi gian chσ đσi trung bình
74 / 201
Chương 2: Quản lý tiến trình
3. Điều phối CPU
3.3 Các thuªt toán điều phối CPU
75 / 201
Chương 2: Quản lý tiến trình
3. Điều phối CPU
3.3 Các thuªt toán điều phối CPU
Nguyên tắc:
Tiến trình đưσc quyền sû dựng CPU theo trình tự xuất
hiện Tiến trình sσ húu CPU tσi khi kết thúc ho°c chσ đσi
vào ra
Ví dự Tiến trình Thσi gian
P1 24
P2 3
P3 3
Đ°c điểm
Đơn giản, dễ thực hiện
Tiến trình ngắn phải chσ đσi như tiến trình dài (Nếu P1
thực hiện sau cùng ?)
76 / 201
Chương 2: Quản lý tiến trình
3. Điều phối CPU
3.3 Các thuªt toán điều phối CPU
Nguyên tắc
Mỗi tiến trình lưu trú thσi gian của chu kỳ sû dựng CPU
tiếp theo
Tiến trình có thσi gian sû dựng CPU ngắn nhất sẽ sσ húu CPU
Hai phương pháp
Không trưng dựng CPU
Có trưng dựng CPU (SRTF: Shortest Remaining Time First)
Ví dự
Tiến trình Thσi gian Thσi điểm đến
P1 8 0
P2 4 1
P3 9 2
P3 5 3
Đ°c điểm
SJF tối ưu: Đưa ra thσi gian chσ đσi trung bình nhỏ nhất
Không thể biết chính xác thσi gian của chu kỳ sû dựng
CPU
77 / 201 Dự báo dựa trên nhúng giá trà trưσc đó
Chương 2: Quản lý tiến trình
3. Điều phối CPU
3.3 Các thuªt toán điều phối CPU
Nguyên tắc
Mỗi tiến trình gắn vσi m®t sô hiệu ưu tiên (số nguyên)
CPU sẽ đưσc phân phối cho tiến trình có đ® ưu tiên cao nhất
SJF: đ® ưu tiên gắn liền vσi thσi gian thực
hiện Hai phương pháp
Không trưng dựng CPU
Có trưng dựng CPU
Ví dự
Tiến trình Thσi gian Đ® ưu tiên
P1 10 3
P2 1 1
P3 2 4
P3 1 5
P3 5 2
Vấn đề "Nạn đói": Tiến trình có đ® ưu tiên thấp phải chσ
đσi lâu (th¼m chí không dưσc thực hi»n)
Giải pháp tăng dần đ® ưu tiên tt theo t/gian trong hệ
78 / 201
Chương 2: Quản lý tiến trình
3. Điều phối CPU
3.3 Các thuªt toán điều phối CPU
Nguyên tắc
Mỗi tiến trình đưσc cấp m®t lưσng tû thσi gian τ để thực
hiện Khi hết thσi gian, tiến trình bà trưng dựng processor và
đưσc đưa vào cuối hàng đσi sắn sàng
Nếu có n tiến trình, thσi gian chσ đσi nhiều nhất (n − 1)τ
Ví dự
Tiến trình Thσi gian
P1 24
P2 3
P3 3
80 / 201
Chương 2: Quản lý tiến trình
3. Điều phối CPU
3.3 Các thuªt toán điều phối CPU
81 / 201
Chương 2: Quản lý tiến trình
3. Điều phối CPU
3.4 Điều phối đa xủ lý
82 / 201
Chương 2: Quản lý tiến trình
3. Điều phối CPU
3.4 Điều phối đa xủ lý
Vấn đề
83 / 201
Chương 2: Quản lý tiến trình
3. Điều phối CPU
Bài tªp
84 / 201
Chương 2: Quản lý tiến trình
3. Điều phối CPU
Kết luªn
85 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1 Tiến trình
2 Luồng
(Thread)
86 / 201
(Nguồn: http://sedition.com/a/393 )
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
88 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Shared int y = 1
Thread T1 Thread T2 Thread A Thread B
y ←2
x ←y+ 1
y←y*2
x=?
90 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Shared int y = 1
Thread T1 Thread T2 Thread A Thread B
y ←2
x ←y+ 1
y←y*2 ta
x ←y+ 1
x=? t1 y ←2
t2 x ←y*2
x=2
t
90 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Shared int y = 1
Thread T1 Thread T2 Thread A Thread B
y ←2
x ←y+ 1
y←y*2
x=? t1 y ←2
x ←y+ 1 ta
t2 x ←y*2
x=3
t
90 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Shared int y = 1
Thread T1 Thread T2 Thread A Thread B
y ←2
x ←y+ 1
y←y*2
x=? t1 y ←2
t2 x ←y*2
x ←y+ 1 ta
x=5
t
90 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Shared int y = 1
Thread T1 Thread T2 Thread A Thread B
y ←2
x ←y+ 1
y←y*2
x=? t1 y ←2
t2 x ←y*2
Kết quả thực hiện các x ←y+ 1 ta
luồng song song phự
thu®c trªt tự truy nhªp
biến dùng chung giúa x=5
t
chúng
90 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Producer-
Consumer
Producer Consumer
while(1){ while(1)
/*produce an item * / { while(Counter ==
while(Counter==BUFFER_SIZE); 0);
Buffer[IN] = nextProduced; nextConsumed = Buffer[OUT];
IN = (IN+1)%BUFFER_SIZE; OUT=(OUT+1)%BUFFER_SIZE;
Counter++; Co u n t e r- -;
} /*consume t h e item*/
}
Nhªn xét
Producer sản xuất m®t sản phẩm
Consumer tiêu thự m®t sản phẩm
⇒Số sản phẩm còn trong Buffer không thay đổi
91 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Producer-
Consumer
Counter++
Load R1,
Counter Inc R1
Store Counter,
R1
Counter−−
Load R2,
Counter Dec R2
Store Counter,
R2
92 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Producer-
Consumer
Counter−−
Load R2,
Counter Dec R2 R1 =? t R2 =?
Store Counter, Counter
R2 =5
92 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Producer-
Consumer
Counter−−
Load R2,
Counter Dec R2 R1 = 5 t R2 =?
Store Counter, Counter
R2 =5
92 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Producer-
Consumer
Counter−−
Load R2,
Counter Dec R2 R1 = 5 t R2 = 5
Store Counter, Counter
R2 =5
92 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Producer-
Consumer
Counter−−
Load R2,
Counter Dec R2 R1 = 6 t R2 = 5
Store Counter, Counter
R2 =5
92 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Producer-
Consumer
Counter−−
Load R2,
Counter Dec R2 R1 = 6 t R2 = 4
Store Counter, Counter
R2 =5
92 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Producer-
Consumer
92 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Producer-
Consumer
92 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Dành nghĩa
Tài nguyȇn
Tất cả nhúng gì cần thiết cho thực hiện tiến
trình
93 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Dành nghĩa
Tài nguyȇn
Tất cả nhúng gì cần thiết cho thực hiện tiến
trình
Tài nguyȇn găng
Tài nguyên hạn chế về khả năng sû dựng
chung Cần đồng thσi cho nhiều tiến trình
Tài nguyên găng có thể là thiết bà vªt lý hay dú
liệu dùng chung
93 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Dành nghĩa
Tài nguyȇn
Tất cả nhúng gì cần thiết cho thực hiện tiến
trình
Tài nguyȇn găng
Tài nguyên hạn chế về khả năng sû dựng
chung Cần đồng thσi cho nhiều tiến trình
Tài nguyên găng có thể là thiết bà vªt lý hay dú
liệu dùng chung
Vấn đề
Dùng chung tài nguyên găng có thể dẫn đến không đảm bảo
tính toàn vẹn dú liệu
⇒ Đòi hỏi cơ chế đồng b® hóa các tiến trình
93 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Tình trạng trong đó kết quả của việc nhiều tiến trình
cùng truy nhªp tσi dũ liệu phân chia phự thu®c vào trªt
tự của các truy nhªp
Làm cho chương trình không xác đành
Ngăn ngùa điều kiện cạnh tranh đưσc thực hiện bσi đồng
b® hóa (synchronize) các tiến trình thực hiện đồng thσi
Ch¿ m®t tiến trình truy nhªp tσi dũ liệu phân chia tại
m®t thσi điểm
Biến counter trong v/đề Producer-Consumer
Đoạn lệnh truy nhªp tσi dũ liệu phân chia trong các
tiến trình phải thực hiện theo thú tự xác đành
VD Lệnh x←y+1 trong Thread T1 ch¿ thực
hiện khi cả 2 lệnh của Thread T2 đã thực hiện
94 / 201 xong
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
95 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Loại trť lẫn nhau (Mutual Exclusion) Khi m®t tiến trình
đang thực hiện trong đoạn găng thì không m®t
tiến trình nào khác đưσc quyền vào đoạn găng
của nó
Tiến triển (Progress) Tài nguyên găng còn khả năng phực
vự và tồn tại tiến trình muốn vào đoạn găng, thì
tiến trình đó phải đưσc sủ dựng tài nguyên găng
Chờ đợi hťu hạn (Bounded Waiting) Nếu tài nguyên
găng hết khả năng phực vự và vẫn tồn tại tiến
trình muốn vào đoạn găng, thì tiến trình đó phải
đưσc xếp hàng chσ đσi và sự chà dại là hũu hạn
96 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
Quy fớc
97 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
1. Khái niệm tài nguyên găng
98 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.2 Phương pháp khóa trong
99 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.2 Phương pháp khóa trong
Nguyȇn tắc
Mỗi t/trình dùng m®t byte trong vùng nhσ chung làm khóa
Tiến trình vào đoạn găng, bªt khoá (byte khóa: true)
Tiến trình thoát khỏi đoạn găng, mσ khóa (byte khóa: false)
Tiến trình muốn vào đoạn găng: kiểm tra khóa của tiến
trình còn lại
Đang khóa ⇒ Đσi
Đang mσ ⇒ Đưσc quyền vào đoạn găng
100 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.2 Phương pháp khóa trong
101 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.2 Phương pháp khóa trong
Process P1 Process P2
do( do(
while(C2 == while(C1 ==
true); C1 == true; true); C2 == true;
(Ooạn găng của tiến trìnhP1} (Ooạn găng của tiến trìnhP2}
C1 == false; C2 == false;
(Phần còn lại của tiến trìnhP1} (Phần còn lại của tiến trìnhP2}
}while(1); }while(1);
101 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.2 Phương pháp khóa trong
Process P1 Process P2
do( do(
while(C2 == while(C1 ==
true); C1 == true; true); C2 == true;
(Ooạn găng của tiến trìnhP1} (Ooạn găng của tiến trìnhP2}
C1 == false; C2 == false;
(Phần còn lại của tiến trìnhP1} (Phần còn lại của tiến trìnhP2}
}while(1); }while(1);
C1 == true; C2 == true;
while(C2 == while(C1 ==
true);
101 / 201
true);
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.2 Phương pháp khóa trong
Nhªn xét
102 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.2 Phương pháp khóa trong
(Phần còn lại của tiến trình P1} (Phần còn lại của tiến trình P2}
}while(1); }while(1);
103 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.2 Phương pháp khóa trong
Nhªn xét
Không đòi hỏi sự hỗ trσ đ°c biệt của phần cùng nên có
thể thực hiện bằng ngôn ngú bất kỳ
Quá phùc tạp khi số tiến trình và số tài nguyên tăng lên
Phải chσ đσi tích cực (busy waiting ) trưσc khi vào đoạn
găng
Trong khi chσ đσi vẫn phải thực hiện kiểm tra quyền vào
đoạn găng
104 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.3 Phương pháp kiểm tra và xác lªp (Test anh Set)
105 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.3 Phương pháp kiểm tra và xác lªp (Test anh Set)
Nguyȇn tắc
trình}
107 / 201
}while(1);
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.3 Phương pháp kiểm tra và xác lªp (Test anh Set)
trình}
108 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.3 Phương pháp kiểm tra và xác lªp (Test anh Set)
Nhªn xét
109 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.3 Phương pháp kiểm tra và xác lªp (Test anh Set)
111 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.4 Kỹ thuªt đèn báo
do(
wait(mutex);
(Ooạn găng của tiến trình}
signal(mutex)
(Phần còn lại của tiến trình}
}while(1);
113 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.4 Kỹ thuªt đèn báo
Yêu cầu S2 đưσc thực hiện ch¿ khi S1 thực hiện xong
Sû dựng đèn báo synch đưσc khσi tạo giá trà
0 Ooạn mã cho P1 và P2
P1 P2
Phần đầu Phần
S1 đầu
Signal(synch) wait(synch)
Phần cuối S2
Phần cuối
114 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.4 Kỹ thuªt đèn báo
Semaphore S
typedef struct(
int value;
struct process
* Ptr;
}Semaphore;
wait(S)/P(S) signal(S)/V(S)
void wait(Semaphore S) ( void signal(Semaphore S) (
S.value−−; S.value++;
if(S.value < 0) ( if(S.value ≤ 0) (
Thêm tiên trình vào S.Ptr Lấy ra tiến trình P tø S.Ptr
block(); wakeup(P);
} }
} }
116 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.4 Kỹ thuªt đèn báo
Ví dụ điều độ
running
P1
running
P2
running
P3
t
Semaphore S
S.value = 1
S.Ptr NULL
117 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.4 Kỹ thuªt đèn báo
Ví dụ điều độ
running
P1 P1 →P(S)
running
P2
running
P3
t
Semaphore S
S.value = 0
S.Ptr NULL
117 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.4 Kỹ thuªt đèn báo
Ví dụ điều độ
running
P1 P1 →P(S)
block
P2 P2 →P(S)
running
P3
t
Semaphore S
S.value = -1
S.Ptr PCB2
117 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.4 Kỹ thuªt đèn báo
Ví dụ điều độ
running
P1 P1 →P(S)
block
P2 P2 →P(S)
block
P3 P3 →P(S)
t
Semaphore S
S.value = -2
Ví dụ điều độ
running
P1 P1 →P(S) P1 →V(S)
running
P2 P2 →P(S)
block
P3 P3 →P(S)
t
Semaphore S
S.value = -1
S.Ptr PCB3
117 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.4 Kỹ thuªt đèn báo
Ví dụ điều độ
running
P1 P1 →P(S) P1 →V(S)
running
P2 P2 →P(S) P2 →V(S)
running
P3 P3 →P(S)
t
Semaphore S
S.value = 0
S.Ptr NULL
117 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.4 Kỹ thuªt đèn báo
Ví dụ điều độ
running
P1 P1 →P(S) P1 →V(S)
running
P2 P2 →P(S) P2 →V(S)
running
P3 P3 →P(S) P3 →V(S)
t
Semaphore S
S.value = 1
S.Ptr NULL
117 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.4 Kỹ thuªt đèn báo
Nhªn xét
Ví dụ 1
#include <windows.h>
#include <stdio.h>
i n t x = 0 , y = 1;
HANDLE S1, S2;
void T1();
void T2();
i n t main(){
HANDLE
h1, h2;
DWORD
ThreadId
;
S1 = CreateSemaphore( NULL,0, 1,NULL);
S2 = CreateSemaphore( NULL,0, 1,NULL);
h1 = CreateThread(NULL,0,T1, NULL,0,&ThreadId);
} h2 = CreateThread(NULL,0,T2, NULL,0,&ThreadId);
120 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.4 Kỹ thuªt đèn báo
Ví dụ 1 (tiếp tục)
void T1(){
while(1){
WaitForSingleObject(S1,INFINITE);
x = y + 1;
ReleaseSemaphore(S2,1,NULL);
printf("%4d",x);
}
}
void T2(){
while(1){
y = 2;
ReleaseSemaphore(S1,1,NULL);
WaitForSingleObject(S2,INFINITE);
y = 2 * y;
}
}
121
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.4 Kỹ thuªt đèn báo
Ví dụ 2
#include <windows.h>
#include <stdio.h>
void counterThread()
{ i n t i , temp;
f o r ( i = 0 ; i < Max; i++)
{ WaitForSingleObject(S,INFINITE);
/ / P ( S ) temp = Counter;
temp = temp + 1 ;
Counter = temp;
ReleaseSemaphore(S,1,NULL); //V(S)
}
}
122 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.4 Kỹ thuªt đèn báo
Ví dụ 2 (tiếp tục)
i n t main(){
HANDLE hThreads[numThreads];
DWORD I d ;
int i ;
S = CreateSemaphore(NULL,1,1,NULL);
f o r ( i = 0 ; i < numThreads;i++)
hThreads[i] = CreateThread(NULL,0,
(LPTHREAD_START_ROUTINE)counterThread,NULL,0,&Id);
WaitForMultipleObjects(numThreads, hThreads,
TRUE, INFINITE);
124 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Bathroom Problem
...
125 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
do( do(
(Tạo phần tû mσi} while(Counter == 0);
while(Counter==SIZE); (Lấy 1 phần tû trong Buffer
(O°t phần tû mσi vào Buffer OUT=(OUT+1)%SIZE;}
IN = (IN+1)%SIZE;} Counter−−;
Counter++; (Xû lý phần tû vøa lấy ra}
} while (1); } while (1);
Producer Consumer
126 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
do( do(
(Tạo phần tû mσi} if(Counter == 0); block()
if(Counter==SIZE) block(); (Lấy 1 phần tû trong Buffer
(O°t phần tû mσi vào Buffer OUT=(OUT+1)%SIZE;}
IN = (IN+1)%SIZE;} Counter−−;
Counter++; if(Counter==SIZE-1)
if(Counter==1) wakeup(Producer
wakeup(Con );
sumer); (Xû lý phần tû vøa
} while (1); lấy ra}
Producer } while (1);Consumer
126 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Giải pháp: Dùng m®t đèn báo Mutex để điều đ® biến Counter
Khởi tạo: Mutex←1
do( do(
(Tạo phần tû mσi} if(Counter == 0); block()
if(Counter==SIZE) block(); (Lấy 1 phần tû trong Buffer}
(O°t phần tû mσi vào Buffer} wait(Mutex);
wait(Mutex); Counter−−;
Counter++; signal(Mutex);
signal(Mutex); if(Counter==SIZE - 1)
if(Counter==1) wakeup(Producer);
wakeup(Consumer); (Xû lý phần tû vøa lấy
} while (1); ra}
} while (1);
Producer Consumer
127 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Giải pháp: Dùng m®t đèn báo Mutex để điều đ® biến Counter
Khởi tạo: Mutex←1
do( do(
(Tạo phần tû mσi} if(Counter == 0); block()
if(Counter==SIZE) block(); (Lấy 1 phần tû trong Buffer}
(O°t phần tû mσi vào Buffer} wait(Mutex);
wait(Mutex); Counter−−;
Counter++; signal(Mutex);
signal(Mutex); if(Counter==SIZE - 1)
if(Counter==1) wakeup(Producer);
wakeup(Consumer); (Xû lý phần tû vøa lấy
} while (1); ra}
} while (1);
Producer
Consumer
Vấn Consumer
đề: Giả thiết tra counter ⇒ gQi thực hiện lệnh block()
kiểmCounter=0
Producer Tăng counter lên 1 và gQi wakeup(Consumer )
127 / 201
Consumer chưa bà block ⇒Câu lệnh wakeup() bà bỏ qua
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Giải pháp: Sû dựng 2 đèn báo full, empty đưσc khσi tạo
full ← 0 : Số phần tû trong hòm thư
empty ← BUFFER_SIZE: Số chỗ trống trong hòm thư
128 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Giải pháp: Sû dựng 2 đèn báo full, empty đưσc khσi tạo
full ← 0 : Số phần tû trong hòm thư
empty ← BUFFER_SIZE: Số chỗ trống trong hòm thư
do( do(
(Tạo phần tû mσi} wait(full);
wait(empty); (Lấy 1 phần tû trong Buffer}
(O°t phần tû mσi vào Buffer} signal(empty);
signal(full); (Xû lý phần tû vøa lấy ra}
} while (1); } while (1);
Producer Consumer
128 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Giải pháp: Sû dựng 2 đèn báo full, empty đưσc khσi tạo
full ← 0 : Số phần tû trong hòm thư
empty ← BUFFER_SIZE: Số chỗ trống trong hòm thư
do( do(
(Tạo phần tû mσi} wait(full);
wait(empty); (Lấy 1 phần tû trong Buffer}
(O°t phần tû mσi vào Buffer} signal(empty);
signal(full); (Xû lý phần tû vøa lấy ra}
} while (1); } while (1);
Producer Consumer
Consumer empty = 5
Running
Producer
full = 0
OUT
Running
IN
128 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Giải pháp: Sû dựng 2 đèn báo full, empty đưσc khσi tạo
full ← 0 : Số phần tû trong hòm thư
empty ← BUFFER_SIZE: Số chỗ trống trong hòm thư
do( do(
(Tạo phần tû mσi} wait(full);
wait(empty); (Lấy 1 phần tû trong Buffer}
(O°t phần tû mσi vào Buffer} signal(empty);
signal(full); (Xû lý phần tû vøa lấy ra}
} while (1); } while (1);
Producer Consumer
Consumer empty = 5
Blocked
Producer
full = -1
OUT
Running
IN
128 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Giải pháp: Sû dựng 2 đèn báo full, empty đưσc khσi tạo
full ← 0 : Số phần tû trong hòm thư
empty ← BUFFER_SIZE: Số chỗ trống trong hòm thư
do( do(
(Tạo phần tû mσi} wait(full);
wait(empty); (Lấy 1 phần tû trong Buffer}
(O°t phần tû mσi vào Buffer} signal(empty);
signal(full); (Xû lý phần tû vøa lấy ra}
} while (1); } while (1);
Producer Consumer
Consumer empty = 4
Blocked
Producer
full = -1
Running
OUT
IN
128 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Giải pháp: Sû dựng 2 đèn báo full, empty đưσc khσi tạo
full ← 0 : Số phần tû trong hòm thư
empty ← BUFFER_SIZE: Số chỗ trống trong hòm thư
do( do(
(Tạo phần tû mσi} wait(full);
wait(empty); (Lấy 1 phần tû trong Buffer}
(O°t phần tû mσi vào Buffer} signal(empty);
signal(full); (Xû lý phần tû vøa lấy ra}
} while (1); } while (1);
Producer Consumer
Consumer empty = 4
Running
Producer
full = 0
OUT
Running
IN
128 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Giải pháp: Sû dựng 2 đèn báo full, empty đưσc khσi tạo
full ← 0 : Số phần tû trong hòm thư
empty ← BUFFER_SIZE: Số chỗ trống trong hòm thư
do( do(
(Tạo phần tû mσi} wait(full);
wait(empty); (Lấy 1 phần tû trong Buffer}
(O°t phần tû mσi vào Buffer} signal(empty);
signal(full); (Xû lý phần tû vøa lấy ra}
} while (1); } while (1);
Producer Consumer
Consumer empty = 5
Running
Producer
full = 0
OUT
Running
IN
128 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Giải pháp: Sû dựng 2 đèn báo full, empty đưσc khσi tạo
full ← 0 : Số phần tû trong hòm thư
empty ← BUFFER_SIZE: Số chỗ trống trong hòm thư
do( do(
(Tạo phần tû mσi} wait(full);
wait(empty); (Lấy 1 phần tû trong Buffer}
(O°t phần tû mσi vào Buffer} signal(empty);
signal(full); (Xû lý phần tû vøa lấy ra}
} while (1); } while (1);
Producer Consumer
Consumer empty = 4
Running
Producer
full = 1
Running
OUT
IN
128 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Consumer empty = 3
Running
Producer
full = 2
Running
OUT
IN
128 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Consumer empty = 2
Running
Producer
full = 3
Running
OUT
IN
128 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Consumer empty = 1
Running
Producer
full = 4
Running
OUT
IN
128 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Consumer empty = 0
Running
Producer
full = 5
OUT
Running
IN
128 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Consumer empty = -1
Running
Producer full = 5
OUT
IN
Blocked
128 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Consumer empty = 0
Running
Producer
full = 4
OUT
Running
IN
128 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Consumer empty = 0
Running
Producer
full = 5
OUT
Running
IN
128 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
129 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
do( do(
(Tạo phần tû mσi} wait(full);
wait(empty); wait(mutex);
wait(mutex); (Lấy 1 phần tû trong
(O°t phần tû mσi vào Buffer} signal(mutex);
signal(mutex); signal(empty);
signal(full); Buffer} (Xû lý phần tû vøa
} while (1);
Producer Consumer
129 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
do( do(
(Tạo phần tû mσi} wait(mutex);
wait(empty); wait(full);
wait(mutex); (Lấy 1 phần tû trong
(O°t phần tû mσi vào Buffer} signal(mutex);
signal(mutex); signal(empty);
signal(full); Buffer} (Xû lý phần tû vøa
} while (1);
Producer Consumer
129 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
130 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
131 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Bathroom Problem
Thưσng dùng cho mực đích minh hQa vấn đề phân phối tài
nguyên trong nghiên cùu hệ điều hành và tính toán song
song Bài toán
A bathroom is to be used by both men and women,
but not at the same time
If the bathroom is empty, then anyone can enter
If the bathroom is occupied, then only a person of
the same sex as the occupant(s) may enter
The number of people that may be in the bathroom
at the same time is limited
Yêu cầu cài đ°t bài toán thỏa mãn các ràng bu®c
Có 2 kiểu tiến trình male() và female()
Mỗi t/trình σ trong Bathroom m®t khoảng t/gian ngẫu
nhiên
132 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Bathroom Problem
Thưσng dùng cho mực đích minh hQa vấn đề phân phối tài
nguyên trong nghiên cùu hệ điều hành và tính toán song
song Bài toán
A bathroom is to be used by both men and women,
but not at the same time
If the bathroom is empty, then anyone can enter
If the bathroom is occupied, then only a person of
the same sex as the occupant(s) may enter
The number of people that may be in the bathroom
at the same time is limited
Yêu cầu cài đ°t bài toán thỏa mãn các ràng bu®c
Có 2 kiểu tiến trình male() và female()
Mỗi t/trình σ trong Bathroom m®t khoảng t/gian ngẫu
nhiên
CÀI DT BÀI TOÁN !!
132 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Dồng bộ barriers
P1
P2
Barrier
P3
P4
133 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Dồng bộ barriers
P1
P2
Barrier
P3
P4
133 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Dồng bộ barriers
P1
P2
Barrier
P3
P4
134 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
H1
Barrier
134 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
H1
Barrier
134 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
H4 H3 H2 H1
Barrier
134 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
H4 H3 H2 H1
Barrier
O1
134 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
H4 H3 H2 H1
Barrier
O1
134 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
H4 H3 H2 H1
Barrier
O2 O1
134 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
H4 H3 H2 H1
Barrier
O2 O1
134 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Bài toán đồng b® hóa tiến trình nổi tiếng, thể hiện tình
trạng nhiều tiến trình phân chia nhiều tài nguyên
135 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Bài toán đồng b® hóa tiến trình nổi tiếng, thể hiện tình
trạng nhiều tiến trình phân chia nhiều tài nguyên
135 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Bài toán đồng b® hóa tiến trình nổi tiếng, thể hiện tình
trạng nhiều tiến trình phân chia nhiều tài nguyên
Yêu cầu: viết chương trình đồng b® búa tối của 5 triết
135 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Mỗi chiếc dĩa là m®t tài nguyên găng, đưσc điều đ® bσi
m®t đèn báo fork[i]
Semaphore fork[5] = (1, 1, 1, 1, 1};
136 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Mỗi chiếc dĩa là m®t tài nguyên găng, đưσc điều đ® bσi
m®t đèn báo fork[i]
Semaphore fork[5] = (1, 1, 1, 1,
1}; Thuªt toán cho Triết gia Pi
do( wait(for
k[i])
wait(fork[
(i+1)%
5]);
( Ăn
}
signal(for
k[(i+1)
% 5]);
signal(fork
136 / 201 [i]);
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Mỗi chiếc dĩa là m®t tài nguyên găng, đưσc điều đ® bσi
m®t đèn báo fork[i]
Semaphore fork[5] = (1, 1, 1, 1,
1}; Thuªt toán cho Triết gia Pi
do( wait(for
k[i])
wait(fork[
(i+1)%
5]);
( Ăn
}
signal(for
k[(i+1)
Nếu tất cả các triết gia cùng muốn ăn
Cùng lấy% 5]);dĩa bên trái (gQi tσi: wait(fork[i]))
chiếc
signal(fork
Cùng đσi lấy chiếc dĩa bên phải (gQi tσi:
136 / 201 [i]);
wait(fork[(i+1)%5]))
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Mỗi chiếc dĩa là m®t tài nguyên găng, đưσc điều đ® bσi
m®t đèn báo fork[i]
Semaphore fork[5] = (1, 1, 1, 1,
1}; Thuªt toán cho Triết gia Pi
do( wait(for
k[i])
wait(fork[
(i+1)%
5]);
( Ăn
}
signal(for
k[(i+1)
Nếu tất cả các triết gia cùng muốn ăn
Cùng lấy% 5]);dĩa bên trái (gQi tσi: wait(fork[i]))
chiếc
signal(fork
Cùng đσi lấy chiếc dĩa bên phải (gQi tσi: wait(fork[(i+1)%5]))
136 / [i]);
2⇒01 Bế tắc (deadlock)
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Ch¿ cho phép m®t nhà triết hQC lấy dĩa tại m®t thσi điểm
Semaphore mutex ← 1;
137 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Ch¿ cho phép m®t nhà triết hQC lấy dĩa tại m®t thσi điểm
Semaphore mutex ← 1;
Thuªt toán cho Triết gia
Pi do(
wait(mutex)
wait(fork[i])
wait(fork[(i+1)% 5]);
signal(mutex)
( Ăn}
signal(fork[(i+1)% 5]);
signal(i);
(Nghĩ}
} while (1);
137 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Ch¿ cho phép m®t nhà triết hQC lấy dĩa tại m®t thσi điểm
Semaphore mutex ← 1;
Thuªt toán cho Triết gia
Pi do(
wait(mutex)
wait(fork[i])
wait(fork[(i+1)% 5]);
signal(mutex)
( Ăn}
signal(fork[(i+1)% 5]);
signal(i);
(Nghĩ}
} while (1);
Có thể làm cho 2 triết gia khȏng kề nhau cùng đfợc
ăn tại một thời điểm (P1: ăn, P2: chiếm mutex⇒ P3
137 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
138 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
138 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Trả lại dîa bên trái nếu không lấy đưσc cái bên phải
Kiểm tra dîa phải sắn sàng trưσc khi gQi wait(fork[(i+1)%5])
Nếu không sắn có: trả lại dîa trái, đσi m®t thσi gian rồi thû
lại Không bà bế tắc, nhưng không tiến triển:nạn đói
(starvation) Thực hiện trong thực tế, nhưng không đảm bảo
về lý thuyết
139 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.5. Ví dự về đồng b® tiến trình
Trả lại dîa bên trái nếu không lấy đưσc cái bên phải
Kiểm tra dîa phải sắn sàng trưσc khi gQi wait(fork[(i+1)%5])
Nếu không sắn có: trả lại dîa trái, đσi m®t thσi gian rồi thû
lại Không bà bế tắc, nhưng không tiến triển:nạn đói
(starvation) Thực hiện trong thực tế, nhưng không đảm bảo
về lý thuyết
Sû dựng đèn báo đồng thσi PSim(S1, S2, . . . , Sn)
Thu đưσc tất cả đèn báo cùng m®t thσi điểm ho°c không
có bất kỳ đèn báo nào
Thao tác PSim (S1, S2, . . . , Sn ) sẽ block() tiến
trình/luồng gQi khi
PSim có bấtfork[(i+1)%
(fork[i], kỳ m®t đèn5]);
báo nào không thể
thu đưσc
Thuªt toán ( Ăn}
VSim (fork[i], fork[(i+1)% 5]);
Trả lại dîa bên trái nếu không lấy đưσc cái bên phải
Kiểm tra dîa phải sắn sàng trưσc khi gQi wait(fork[(i+1)%5])
Nếu không sắn có: trả lại dîa trái, đσi m®t thσi gian rồi thû
lại Không bà bế tắc, nhưng không tiến triển:nạn đói
(starvation) Thực hiện trong thực tế, nhưng không đảm bảo
về lý thuyết
Sû dựng đèn báo đồng thσi PSim(S1, S2, . . . , Sn)
Thu đưσc tất cả đèn báo cùng m®t thσi điểm ho°c không
có bất kỳ đèn báo nào
Thao tác PSim (S1, S2, . . . , Sn ) sẽ block() tiến
trình/luồng gQi khi
PSim có bấtfork[(i+1)%
(fork[i], kỳ m®t đèn5]);
báo nào không thể
thu đưσc
Thuªt toán ( Ăn}
VSim (fork[i], fork[(i+1)% 5]);
Trả lại dîa bên trái nếu không lấy đưσc cái bên phải
Kiểm tra dîa phải sắn sàng trưσc khi gQi wait(fork[(i+1)%5])
Nếu không sắn có: trả lại dîa trái, đσi m®t thσi gian rồi thû
lại Không bà bế tắc, nhưng không tiến triển:nạn đói
(starvation) Thực hiện trong thực tế, nhưng không đảm bảo
về lý thuyết
Sû dựng đèn báo đồng thσi PSim(S1, S2, . . . , Sn)
Thu đưσc tất cả đèn báo cùng m®t thσi điểm ho°c không
có bất kỳ đèn báo nào
Thao tác PSim (S1, S2, . . . , Sn ) sẽ block() tiến
trình/luồng gQi khi
PSim có bấtfork[(i+1)%
(fork[i], kỳ m®t đèn5]);
báo nào không thể
thu đưσc
Thuªt toán ( Ăn}
VSim (fork[i], fork[(i+1)% 5]);
141 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.6 Công cự điều đ® cấp cao
Giới thi»u
142 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.6 Công cự điều đ® cấp cao
Giới thi»u
142 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.6 Công cự điều đ® cấp cao
Monitor
Mȏ
hình
144 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.6 Công cự điều đ® cấp cao
Mȏ
hình
146 / 201
Chương 2: Quản lý tiến trình
4. Tài nguyên găng và điều đ® tiến trình
4.6 Công cự điều đ® cấp cao
Kết luªn
149 / 201
Chương 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
1 Tiến trình
2 Luồng
(Thread)
150 / 201
(Nguồn: internet)
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
1. Khái niệm bế tắc
5 Bế tắc và xť lý bế tắc
Khái niệm bế tắc
Oiều kiện xảy ra bế tắc
Các phưσng pháp xû lý bế
tắc Phòng ngøa bế tắc
Phòng tránh bế tắc
Nhªn biết và khắc
phực
152 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
1. Khái niệm bế tắc
Giới thi»u
Hệ thống gồm nhiều tiến trình hoạt đ®ng đồng thσi cùng
sû dựng tài nguyên
Tài nguyên có nhiều loại (VD: CPU, bë nhσ,..).
Mỗi loại tài nguyên có nhiều đσn và (VD: 2 CPU, 5 máy
in..)
153 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
1. Khái niệm bế tắc
Giới thi»u
Hệ thống gồm nhiều tiến trình hoạt đ®ng đồng thσi cùng
sû dựng tài nguyên
Tài nguyên có nhiều loại (VD: CPU, bë nhσ,..).
Mỗi loại tài nguyên có nhiều đσn và (VD: 2 CPU, 5 máy
in..)
Mỗi tiến trình thưσng gồm dãy liên tực các thao tác
Oòi hỏi tài nguyên: Nếu tài nguyên không có sắn (dang dưσc
s/dựng bσi tiến trình khác) ⇒ tiến trình yêu cầu phải đσi
Sû dựng tài nguyên theo yêu cầu (in ấn, dQC dũ li»u...)
Giải phóng tài nguyên đưσc cấp
153 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
1. Khái niệm bế tắc
Giới thi»u
Hệ thống gồm nhiều tiến trình hoạt đ®ng đồng thσi cùng
sû dựng tài nguyên
Tài nguyên có nhiều loại (VD: CPU, bë nhσ,..).
Mỗi loại tài nguyên có nhiều đσn và (VD: 2 CPU, 5 máy
in..)
Mỗi tiến trình thưσng gồm dãy liên tực các thao tác
Oòi hỏi tài nguyên: Nếu tài nguyên không có sắn (dang dưσc
s/dựng bσi tiến trình khác) ⇒ tiến trình yêu cầu phải đσi
Sû dựng tài nguyên theo yêu cầu (in ấn, dQC dũ li»u...)
Giải phóng tài nguyên đưσc cấp
Khi các tiến trình dùng chung ít nhất 2 tài nguyên, hệ
thống có thể g°p "nguy hiểm"
153 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
1. Khái niệm bế tắc
Giới thi»u
Hệ thống gồm nhiều tiến trình hoạt đ®ng đồng thσi cùng
sû dựng tài nguyên
Tài nguyên có nhiều loại (VD: CPU, bë nhσ,..).
Mỗi loại tài nguyên có nhiều đσn và (VD: 2 CPU, 5 máy
in..)
Mỗi tiến trình thưσng gồm dãy liên tực các thao tác
Oòi hỏi tài nguyên: Nếu tài nguyên không có sắn (dang dưσc
s/dựng bσi tiến trình khác) ⇒ tiến trình yêu cầu phải đσi
Sû dựng tài nguyên theo yêu cầu (in ấn, dQC dũ li»u...)
Giải phóng tài nguyên đưσc cấp
Khi các tiến trình dùng chung ít nhất 2 tài nguyên, hệ
thống có thể g°p "nguy hiểm"
Xét ví dự:
Hệ thống có hai tiến trình P1 & P2
Hai tiến trình P1 & P2 dùng chung hai tài nguyên R1 & R2
R1 đưσc điều đ® bσi đèn báo S1 (S1 ← 1)
153 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
1. Khái niệm bế tắc
Ví dụ
Ví dụ
Ví dụ
Ví dụ
Ví dụ
P(S1)
P(S2)
(Sû dựng R1&R2}
V (S1) t
V (S2)
Tiến trình P2
S1 = −1 S2 = 0
154 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
1. Khái niệm bế tắc
Ví dụ
Ví dụ
Ví dụ
Ví dụ
Ví dụ
Ví dụ
Ví dụ
Ví dụ
Ví dụ
Ví dụ
Tiến trình P2
S1 = S2 =
154 / 201 −1 −1
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
1. Khái niệm bế tắc
Dành nghĩa
155 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
5 Bế tắc và xť lý bế tắc
Khái niệm bế tắc
Oiều kiện xảy ra bế tắc
Các phưσng pháp xû lý bế
tắc Phòng ngøa bế tắc
Phòng tránh bế tắc
Nhªn biết và khắc
phực
156 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Diều ki»n cần
Cần có 4 điều kiện sau, không đưσc thiếu điều kiện nào
Có tài nguyȇn găng
Tài nguyên đưσc sû dựng theo mô hình không phân chia đưσc
Ch¿ có m®t tiến trình dung tài nguyên tại m®t thσi điểm
Tiến trình khác cũng yêu cầu tài nguyên ⇒ yêu cầu phải
đưσc hoãn lại tσi khi tài nguyên đưσc giải phóng
157 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Diều ki»n cần
Cần có 4 điều kiện sau, không đưσc thiếu điều kiện nào
Có tài nguyȇn găng
Tài nguyên đưσc sû dựng theo mô hình không phân chia đưσc
Ch¿ có m®t tiến trình dung tài nguyên tại m®t thσi điểm
Tiến trình khác cũng yêu cầu tài nguyên ⇒ yêu cầu phải
đưσc hoãn lại tσi khi tài nguyên đưσc giải phóng
Chờ đợi trfớc khi vào đoạn găng
Tiến trình không đưσc vào đoạn găng phải xếp hàng chσ đσi.
Trong khi chσ đσi vẫn chiếm giú các tài nguyên đưσc cung
cấp
157 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Diều ki»n cần
Cần có 4 điều kiện sau, không đưσc thiếu điều kiện nào
Có tài nguyȇn găng
Tài nguyên đưσc sû dựng theo mô hình không phân chia đưσc
Ch¿ có m®t tiến trình dung tài nguyên tại m®t thσi điểm
Tiến trình khác cũng yêu cầu tài nguyên ⇒ yêu cầu phải
đưσc hoãn lại tσi khi tài nguyên đưσc giải phóng
Chờ đợi trfớc khi vào đoạn găng
Tiến trình không đưσc vào đoạn găng phải xếp hàng chσ đσi.
Trong khi chσ đσi vẫn chiếm giú các tài nguyên đưσc cung
cấp
Khȏng có h» thống phȃn phối lại tài nguyȇn găng
Tài nguyên không thể đưσc trưng dựng
Tài nguyên đưσc giải phỏng ch¿ bσi tiến trình đang chiếm
giú khi đã hoàn thành nhiệm vự
157 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Diều ki»n cần
Cần có 4 điều kiện sau, không đưσc thiếu điều kiện nào
Có tài nguyȇn găng
Tài nguyên đưσc sû dựng theo mô hình không phân chia đưσc
Ch¿ có m®t tiến trình dung tài nguyên tại m®t thσi điểm
Tiến trình khác cũng yêu cầu tài nguyên ⇒ yêu cầu phải
đưσc hoãn lại tσi khi tài nguyên đưσc giải phóng
Chờ đợi trfớc khi vào đoạn găng
Tiến trình không đưσc vào đoạn găng phải xếp hàng chσ đσi.
Trong khi chσ đσi vẫn chiếm giú các tài nguyên đưσc cung
cấp
Khȏng có h» thống phȃn phối lại tài nguyȇn găng
Tài nguyên không thể đưσc trưng dựng
Tài nguyên đưσc giải phỏng ch¿ bσi tiến trình đang chiếm
giú khi đã hoàn thành nhiệm vự
Chờ đợi vòng tròn
Tồn tại tªp các tiến trình (P0, P2, . . . , Pn } đang đσi nhau
theo kiểu: P0 → R1 → P1; P1 → R2 → P2; . . . Pn−1 → Rn →
Pn ; Pn → R0 → P0
157 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Ví dụ: Bài toán triết gia ăn tối
158 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Dồ thà cung cấp tài nguyȇn (Resource Allocation Graph)
Khi m®t
cungtiến trìnhRP
sû dung i yêu
j → Pi cầu tài nguyên Rj
3
Khi tiến trình Pi giải phóng tài nguyên Rj , cung sû dựng
Rj → Pi bà xóa khỏi đồ thà
159 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Dồ thà cung cấp tài nguyȇn : Biểu diễn đồ trong đồ
thà
160 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Dồ thà cung cấp tài nguyȇn : Ví
dụ
Trạng thái hệ thống
R2 R3 3 tiến trình P1, P2, P3
4 tài nguyên R1, R2, R3,
R4
P1 P2 P3
R1
R4
161 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Dồ thà cung cấp tài nguyȇn : Ví
dụ
Trạng thái hệ thống
R2 R3 3 tiến trình P1, P2, P3
4 tài nguyên R1, R2, R3,
R4
P3 yêu cầu tài nguyên R4
P1 P2 P3
R1
R4
161 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Dồ thà cung cấp tài nguyȇn : Ví
dụ
Trạng thái hệ thống
R2 R3 3 tiến trình P1, P2, P3
4 tài nguyên R1, R2, R3, R4
P3 yêu cầu tài nguyên R4
Xuất hiện cung yêu cầu P3 → R4
P1 P2 P3
R1
R4
161 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Dồ thà cung cấp tài nguyȇn : Ví
dụ
Trạng thái hệ thống
R2 R3 3 tiến trình P1, P2, P3
4 tài nguyên R1, R2, R3, R4
P3 yêu cầu tài nguyên R4
Xuất hiện cung yêu cầu P3 →
R4 Cung yêu cầu P3 → R4
P1 P2 P3 chuyển thành cung sû dựng R4
→ P3
R1
R4
161 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Dồ thà cung cấp tài nguyȇn : Ví
dụ
Trạng thái hệ thống
R2 R3 3 tiến trình P1, P2, P3
4 tài nguyên R1, R2, R3, R4
P3 yêu cầu tài nguyên R4
Xuất hiện cung yêu cầu P3 →
R4 Cung yêu cầu P3 → R4
P1 P2 P3 chuyển thành cung sû dựng R4
→ P3
P3 Giải phóng tài nguyên R4
R1
R4
161 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Dồ thà cung cấp tài nguyȇn : Ví
dụ
Trạng thái hệ thống
R2 R3 3 tiến trình P1, P2, P3
4 tài nguyên R1, R2, R3, R4
P3 yêu cầu tài nguyên R4
Xuất hiện cung yêu cầu P3 →
R4 Cung yêu cầu P3 → R4
P1 P2 P3 chuyển thành cung sû dựng R4
→ P3
P3 Giải phóng tài nguyên R4
Cung sû dựng R4 → P3 bà
xóa khỏi đồ thà
R1
R4
161 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Dồ thà cung cấp tài nguyȇn : Ví
dụ
Trạng thái hệ thống
R2 R3 3 tiến trình P1, P2, P3
4 tài nguyên R1, R2, R3, R4
P3 yêu cầu tài nguyên R4
Xuất hiện cung yêu cầu P3 →
R4 Cung yêu cầu P3 → R4
P1 P2 P3 chuyển thành cung sû dựng R4
→ P3
P3 Giải phóng tài nguyên R4
Cung sû dựng R4 → P3 bà
xóa khỏi đồ thà
R1
P3 yêu cầu tài nguyên R1
R4
Xuất hiện cung yêu cầu P3 → R1
Trên đồ thà xuất hiện chu trình
Hệ thống bế tắc
161 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Dồ thà cung cấp tài nguyȇn : Ví
dụ
Trạng thái hệ thống
R2 R3 3 tiến trình P1, P2, P3
4 tài nguyên R1, R2, R3, R4
P3 yêu cầu tài nguyên R4
Xuất hiện cung yêu cầu P3 →
R4 Cung yêu cầu P3 → R4
P1 P2 P3 chuyển thành cung sû dựng R4
→ P3
P3 Giải phóng tài nguyên R4
Cung sû dựng R4 → P3 bà
xóa khỏi đồ thà
R1
P3 yêu cầu tài nguyên R1
R4
Xuất hiện cung yêu cầu P3 → R1
Trên đồ thà xuất hiện chu trình
Chu trình trȇn đồ thà và tình trạngHệbế tắcbế
thống cótắc
liȇn
quan?
161 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.2 Oiều kiện xảy ra
bế tắc
Dồ thà cung cấp tài nguyȇn : Lªp luªn cơ bản
R1
P1 P2
R2
5 Bế tắc và xť lý bế tắc
Khái niệm bế tắc
Oiều kiện xảy ra bế tắc
Các phưσng pháp xû lý bế
tắc Phòng ngøa bế tắc
Phòng tránh bế tắc
Nhªn biết và khắc
phực
163 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.3 Các phưσng pháp
xủ lý bế tắc
Phfơng
pháp
1 Phòng ngťa
5 Bế tắc và xť lý bế tắc
Khái niệm bế tắc
Oiều kiện xảy ra bế tắc
Các phưσng pháp xû lý bế
tắc Phòng ngøa bế tắc
Phòng tránh bế tắc
Nhªn biết và khắc
phực
165 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.4 Phòng ngùa bế tắc
Nguyȇn tắc
166 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.4 Phòng ngùa bế tắc
167 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.4 Phòng ngùa bế tắc
167 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.4 Phòng ngùa bế tắc
P1 P2
167 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.4 Phòng ngùa bế tắc
P1 P2
Virtual printer
167 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.4 Phòng ngùa bế tắc
P1 P2
Printer daemon
Virtual printer
167 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.4 Phòng ngùa bế tắc
P1 P2
Virtual printer
167 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.4 Phòng ngùa bế tắc
P1 P2
Nguyȇn tắc: Oảm bảo môt tiến trình xin tài nguyên ch¿ khi
không sσ húu bất kỳ tài nguyên nào khác
Cung cấp trưσc
Tiến trình xin toàn b® tài nguyên ngay tø đầu và ch¿ thực
hiện khi đã có đầy đủ tài nguyên
Hiệu quả sû dựng tài nguyên thấp
Tiến trình ch¿ sû dựng tài nguyên σ giai đoạn cuối?
Tổng số tài nguyên đòi hỏi vưσt quá khả năng của hệ thống?
Giải phóng tài nguyên
Tiến trình giải phóng tất cả tài nguyên trưσc khi xin (xin
lại ) tài nguyên mσi
Nhªn xét
Tốc đ® thực hiện tiến trình chªm
Phải đảm bảo dú liệu đưσc giú trong tài nguyên tạm
giải phóng không bà mất
168 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.4 Phòng ngùa bế tắc
Diều ki»n chờ đợi trfớc khi vào đoạn găng: minh họa
169 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.4 Phòng ngùa bế tắc
Diều ki»n chờ đợi trfớc khi vào đoạn găng: minh họa
169 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.4 Phòng ngùa bế tắc
Diều ki»n chờ đợi trfớc khi vào đoạn găng: minh họa
169 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.4 Phòng ngùa bế tắc
Diều ki»n chờ đợi trfớc khi vào đoạn găng: minh họa
Diều ki»n chờ đợi trfớc khi vào đoạn găng: minh họa
Diều ki»n chờ đợi trfớc khi vào đoạn găng: minh họa
Nguyȇn tắc: cho phép trưng dựng tài nguyên khi cần
thiết Tiến trình Pi xin tài nguyên Rj
F Rj sắn có: Cung cấp Rj cho Pi
F Rj khȏng sắn: (Rj bà chiếm bσi tiến trình Pk )
Pk đang đσi tài nguyên
Trưng dựng Rj tø Pk và cung cấp cho Pi theo yêu cầu
Thêm Rj vào danh sách các tài nguyên đang thiếu của
Pk Pk đưσc thực hiện trσ lại khi
★ Có đưσc tài nguyên đang thiếu
★ Đòi lại đưσc Rj
Pk đang thực hiện
Pi phải đσi (không giải phóng tài nguyên)
Cho phép trưng dựng tài nguyên nhưng ch¿ khi cần
thiết
Ch¿ áp dựng cho các tài nguyên có thể lưu trú và khôi
phực trạng thái dễ dàng (CPU, không gian nhσ ). Khó có
thể áp dựng cho các tài nguyên như máy in
170 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.4 Phòng ngùa bế tắc
O°t ra m®t thù tự toàn cực của tất cả các kiểu tài nguyên
R = (R1, R2, . . . Rn } Tªp tất cả các kiểu tài
nguyên Xây dựng hàm tr¼t tự f : R → N
Hàm f đưσc xây dựng dựa trên trªt tự sû dựng
các tài nguyên
? f(Băng tø) = 1
? f( Đĩa tø) = 5
? f(Máy in) = 12
171 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.4 Phòng ngùa bế tắc
O°t ra m®t thù tự toàn cực của tất cả các kiểu tài nguyên
R = (R1, R2, . . . Rn } Tªp tất cả các kiểu tài
nguyên Xây dựng hàm tr¼t tự f : R → N
Hàm f đưσc xây dựng dựa trên trªt tự sû dựng
các tài nguyên
? f(Băng tø) = 1
? f( Đĩa tø) = 5
? f(Máy in) = 12
Tiến trình ch¿ đưσc yêu cầu tài nguyên theo trªt tự
tăng Tiến trình chiếm giú tài nguyên kiểu Rk ch¿ đưσc
xin tài nguyên kiểu Rj thỏa mãn f (Rj ) > f (Rk )
Tiến trình yêu cầu tσi tài nguyên Rk sẽ phải giải phóng tất cả tài
nguyên Ri thỏa mãn điều kiện f (Ri ) ≥ f (Rk )
171 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.4 Phòng ngùa bế tắc
O°t ra m®t thù tự toàn cực của tất cả các kiểu tài nguyên
R = (R1, R2, . . . Rn } Tªp tất cả các kiểu tài
nguyên Xây dựng hàm tr¼t tự f : R → N
Hàm f đưσc xây dựng dựa trên trªt tự sû dựng
các tài nguyên
? f(Băng tø) = 1
? f( Đĩa tø) = 5
? f(Máy in) = 12
Tiến trình ch¿ đưσc yêu cầu tài nguyên theo trªt tự
tăng Tiến trình chiếm giú tài nguyên kiểu Rk ch¿ đưσc
xin tài nguyên kiểu Rj thỏa mãn f (Rj ) > f (Rk )
Tiến trình yêu cầu tσi tài nguyên Rk sẽ phải giải phóng tất cả tài
nguyên Ri thỏa mãn điều kiện f (Ri ) ≥ f (Rk )
Chùng minh
Giả thiết bế tắc xảy ra giúa các tiến trình (P1, P2, . . . Pm }
R1 → P1 → R2 → P2 ⇒ f (R1) < f (R2)
5 Bế tắc và xť lý bế tắc
Khái niệm bế tắc
Oiều kiện xảy ra bế tắc
Các phưσng pháp xû lý bế
tắc Phòng ngøa bế tắc
Phòng tránh bế tắc
Nhªn biết và khắc
phực
172 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví dụ
P1 P(S1) P(S2) S1 = 1
t
P2 P(S2) P(S1) S2 = 1
173 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví dụ
P1 P(S1) P(S2) S1 = 0
sû dựng R1 t
P2 P(S2) P(S1) S2 = 1
173 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví dụ
P1 P(S1) P(S2) S1 = 0
sû dựng R1 t
yêu cầuR2
P2 P(S2) P(S1) S2 = 1
173 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví dụ
P1 P(S1) P(S2) S1 = 0
sû dựng R1 t
sû dựngR2
P2 P(S2) P(S1) S2 = 0
173 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví dụ
P1 P(S1) P(S2) S1 = −1
sû dựng R1 yêu cầuR2 t
sû yêu cầuR1
P2 dựngR
P(S2) 2
P(S1) S2 = −1
173 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví dụ
P1 P(S1) P(S2) S1 = 0
sû dựng R1 t
yêu cầuR2
P2 P(S2) P(S1) S2 = 1
173 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví dụ
P1 P(S1) P(S2) S1 = 0
sû dựng R1 t
yêu cầuR2
P2 P(S2) P(S1) S2 = 1
Nhªn
xét:
Biết đưσc chuỗi yêu cầu/giải phóng tài nguyên của các tiến
trình, hệ thống có thể đưa ra đưσc chiến lưσc phân phối
tài nguyên (chấp thu¼n hay phải dσi ) cho mQi yêu cầu để
bế tắc không xảy ra.
173 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Nguyȇn tắc
Phải biết trưσc các thông tin về tiến trình và tài nguyên
Tiến trình phải khai báo lưσng tài nguyên lσn nhất mỗi loại
sẽ yêu cầu khi thực hiện
174 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Nguyȇn tắc
Phải biết trưσc các thông tin về tiến trình và tài nguyên
Tiến trình phải khai báo lưσng tài nguyên lσn nhất mỗi loại
sẽ yêu cầu khi thực hiện
Quyết đành dựa trên kết quả kiểm tra trạng thái cung cấp
tài nguyên (Resource-Allocation State) -Trạng thái hệ thống
Trạng thái cung cấp tài nguyên xác đành bσi các thông số
Số đσn và tài nguyên có sắn trong hệ thống
Số đσn và tài nguyên đã đưσc cấp cho mỗi tiến trình
Số đσn và tài nguyên lσn nhất mỗi tiến trình có thể yêu cầu
Nếu h» thống an toàn, sẽ đáp ùng cho yêu cầu
174 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Nguyȇn tắc
Phải biết trưσc các thông tin về tiến trình và tài nguyên
Tiến trình phải khai báo lưσng tài nguyên lσn nhất mỗi loại
sẽ yêu cầu khi thực hiện
Quyết đành dựa trên kết quả kiểm tra trạng thái cung cấp
tài nguyên (Resource-Allocation State) -Trạng thái hệ thống
Trạng thái cung cấp tài nguyên xác đành bσi các thông số
Số đσn và tài nguyên có sắn trong hệ thống
Số đσn và tài nguyên đã đưσc cấp cho mỗi tiến trình
Số đσn và tài nguyên lσn nhất mỗi tiến trình có thể yêu cầu
Nếu h» thống an toàn, sẽ đáp ùng cho yêu cầu
Thực hiện kiểm tra mỗi khi nhªn đưσc yêu cầu tài nguyên
Mực đích: Oảm bảo trạng thái hệ thống luôn an toàn
Thσi điểm ban đầu (chưa c/cấp tài nguyên), hệ thống an
toàn Hệ thống ch¿ cung cấp tài nguyên khi vẫn đảm bảo an
toàn
⇒Hệ thống chuyển tø trạng thái an toàn này sang trạng
thái an toàn khác
174 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Nguyȇn tắc
Phải biết trưσc các thông tin về tiến trình và tài nguyên
Tiến trình phải khai báo lưσng tài nguyên lσn nhất mỗi loại
sẽ yêu cầu khi thực hiện
Quyết đành dựa trên kết quả kiểm tra trạng thái cung cấp
tài nguyên (Resource-Allocation State) -Trạng thái hệ thống
Trạng thái cung cấp tài nguyên xác đành bσi các thông số
Số đσn và tài nguyên có sắn trong hệ thống
Số đσn và tài nguyên đã đưσc cấp cho mỗi tiến trình
Số đσn và tài nguyên lσn nhất mỗi tiến trình có thể yêu cầu
Nếu h» thống an toàn, sẽ đáp ùng cho yêu cầu
Thực hiện kiểm tra mỗi khi nhªn đưσc yêu cầu tài nguyên
Mực đích: Oảm bảo trạng thái hệ thống luôn an toàn
Thσi điểm ban đầu (chưa c/cấp tài nguyên), hệ thống an
toàn Hệ thống ch¿ cung cấp tài nguyên khi vẫn đảm bảo an
toàn
⇒Hệ thống chuyển tø trạng thái an toàn này sang trạng
thái an toàn khác
Trạng thái an toàn của h» thống là
174 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
175 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Chuỗi an toàn
176 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Chuỗi an toàn
Ví dụ minh họa
177 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví dụ minh họa
177 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví dụ minh họa
Ví dụ minh họa
Tại thσi điểm t1, tiến trình P2 yêu cầu và đưσc cấp 1 đσn và
tài nguyên R. Hệ thống có an toàn?
177 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví dụ minh họa
Tại thσi điểm t1, tiến trình P2 yêu cầu và đưσc cấp 1 đσn và
tài nguyên R. Hệ thống có an toàn?
Vσi 2 đσn và hiện có, mQi yêu cầu của P2 đều đáp ùng đưσc
⇒ P2 chắc chắn kết thúc, giải phóng 2 đσn và R
Khi P2 kết thúc số tài nguyên sắn có trong hệ thống là 4
Vσi 4 đσn và tài nguyên, P1 và P3 đều có thể phải đσi khi
xin thêm 5 đσn và tài nguyên
Vªy hệ thống không an toàn vσi dãy (P1, P3)
177 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví dụ minh họa
Tại thσi điểm t1, tiến trình P2 yêu cầu và đưσc cấp 1 đσn và
tài nguyên R. Hệ thống có an toàn?
Vσi 2 đσn và hiện có, mQi yêu cầu của P2 đều đáp ùng đưσc
⇒ P2 chắc chắn kết thúc, giải phóng 2 đσn và R
Khi P2 kết thúc số tài nguyên sắn có trong hệ thống là 4
Vσi 4 đσn và tài nguyên, P1 và P3 đều có thể phải đσi khi
xin thêm 5 đσn và tài nguyên
Vªy hệ thống không an toàn vσi dãy (P1, P3)
Nhªn xét: Tại thσi diểm t1 nếu tiến trình P2 phải dσi khi
yêu cầu thêm 1 dơn và tài nguyên, bế tắc sẽ dưσc loại trù
177 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Nhªn xét
Hệ thống an toàn ⇒ Các tiến trình đều có thể kết thúc
đưσc
⇒ không xảy ra bế tắc
Hệ thống không an toàn ⇒ Có khả năng xảy ra bế tắc
178 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Nhªn xét
Hệ thống an toàn ⇒ Các tiến trình đều có thể kết thúc
đưσc
⇒ không xảy ra bế tắc
Hệ thống không an toàn ⇒ Có khả năng xảy ra bế tắc
Phưσng pháp
Không để hệ thống rσi vào tình trạng không an
toàn Kiểm tra mQi yêu cầu tài nguyên
Nếu hệ thống vẫn an toàn khi cung cấp ⇒ Cung cấp
Nếu hệ thống không an toàn khi cung cấp ⇒ Phải
đσi
178 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Nhªn xét
Hệ thống an toàn ⇒ Các tiến trình đều có thể kết thúc
đưσc
⇒ không xảy ra bế tắc
Hệ thống không an toàn ⇒ Có khả năng xảy ra bế tắc
Phưσng pháp
Không để hệ thống rσi vào tình trạng không an
toàn Kiểm tra mQi yêu cầu tài nguyên
Nếu hệ thống vẫn an toàn khi cung cấp ⇒ Cung cấp
Nếu hệ thống không an toàn khi cung cấp ⇒ Phải
đσi
Thuªt toán
Thuªt toán dựa vào đồ thà cung cấp tài
nguyên Thuªt toán ngưσi quản lý nhà băng
178 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
179 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
179 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
179 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví
dụ
Hệ thống: 2 tiến trình P1, P2 và 2
tài nguyên R1, R2, mỗi loại 1 đσn và
R1 P1 có thể xin R1, R2 trong tưσng
lai
P1 có thể xin R1, R2 trong tưσng
lai
P1 P2
R2
180 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví
dụ
Hệ thống: 2 tiến trình P1, P2 và 2
tài nguyên R1, R2, mỗi loại 1 đσn và
R1 P1 có thể xin R1, R2 trong tưσng
lai
P1 có thể xin R1, R2 trong tưσng
lai
P1 yêu cầu tài nguyên R1
Cung đòi hỏi trσ thành cung yêu
P1 P2 cầu
R2
180 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví
dụ
Hệ thống: 2 tiến trình P1, P2 và 2
tài nguyên R1, R2, mỗi loại 1 đσn và
R1 P1 có thể xin R1, R2 trong tưσng
lai
P1 có thể xin R1, R2 trong tưσng
lai
P1 yêu cầu tài nguyên R1
Cung đòi hỏi trσ thành cung yêu
P1 P2 cầu
Yêu cầu của P1 đưσc đáp ùng
Cung yêu cầu thành cung sû dựng
R2
180 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví
dụ
Hệ thống: 2 tiến trình P1, P2 và 2
tài nguyên R1, R2, mỗi loại 1 đσn và
R1 P1 có thể xin R1, R2 trong tưσng
lai
P1 có thể xin R1, R2 trong tưσng
lai
P1 yêu cầu tài nguyên R1
Cung đòi hỏi trσ thành cung yêu
P1 P2 cầu
Yêu cầu của P1 đưσc đáp ùng
Cung yêu cầu thành cung sû dựng
P2 yêu cầu tài nguyên R1 ⇒ Oσi
R2
180 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví
dụ
Hệ thống: 2 tiến trình P1, P2 và 2
tài nguyên R1, R2, mỗi loại 1 đσn và
R1 P1 có thể xin R1, R2 trong tưσng
lai
P1 có thể xin R1, R2 trong tưσng
lai
P1 yêu cầu tài nguyên R1
Cung đòi hỏi trσ thành cung yêu
P1 P2 cầu
Yêu cầu của P1 đưσc đáp ùng
Cung yêu cầu thành cung sû dựng
P2 yêu cầu tài nguyên R1 ⇒ Oσi
R2 P2 yêu cầu tài nguyên R2 ⇒ cung
đòi hỏi trσ thành cung yêu cầu P2
→ R2
180 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví
dụ
Hệ thống: 2 tiến trình P1, P2 và 2
tài nguyên R1, R2, mỗi loại 1 đσn và
R1 P1 có thể xin R1, R2 trong tưσng
lai
P1 có thể xin R1, R2 trong tưσng
lai
P1 yêu cầu tài nguyên R1
Cung đòi hỏi trσ thành cung yêu
P1 P2 cầu
Yêu cầu của P1 đưσc đáp ùng
Cung yêu cầu thành cung sû dựng
P2 yêu cầu tài nguyên R1 ⇒ Oσi
R2 P2 yêu cầu tài nguyên R2 ⇒ cung
đòi hỏi trσ thành cung yêu cầu P2
→ R2
180 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví
dụ
Hệ thống: 2 tiến trình P1, P2 và 2
tài nguyên R1, R2, mỗi loại 1 đσn và
R1 P1 có thể xin R1, R2 trong tưσng
lai
P1 có thể xin R1, R2 trong tưσng
lai
P1 yêu cầu tài nguyên R1
Cung đòi hỏi trσ thành cung yêu
P1 P2 cầu
Yêu cầu của P1 đưσc đáp ùng
Cung yêu cầu thành cung sû dựng
P2 yêu cầu tài nguyên R1 ⇒ Oσi
R2 P2 yêu cầu tài nguyên R2 ⇒ cung
đòi hỏi trσ thành cung yêu cầu P2
→ R2
180 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví
dụ
Hệ thống: 2 tiến trình P1, P2 và 2
tài nguyên R1, R2, mỗi loại 1 đσn và
R1 P1 có thể xin R1, R2 trong tưσng
lai
P1 có thể xin R1, R2 trong tưσng
lai
P1 yêu cầu tài nguyên R1
Cung đòi hỏi trσ thành cung yêu
P1 P2 cầu
Yêu cầu của P1 đưσc đáp ùng
Cung yêu cầu thành cung sû dựng
P2 yêu cầu tài nguyên R1 ⇒ Oσi
R2 P2 yêu cầu tài nguyên R2 ⇒ cung
đòi hỏi trσ thành cung yêu cầu P2
→ R2
180 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví
dụ
Hệ thống: 2 tiến trình P1, P2 và 2
tài nguyên R1, R2, mỗi loại 1 đσn và
R1 P1 có thể xin R1, R2 trong tưσng
lai
P1 có thể xin R1, R2 trong tưσng
lai
P1 yêu cầu tài nguyên R1
Cung đòi hỏi trσ thành cung yêu
P1 P2 cầu
Yêu cầu của P1 đưσc đáp ùng
Cung yêu cầu thành cung sû dựng
P2 yêu cầu tài nguyên R1 ⇒ Oσi
R2 P2 yêu cầu tài nguyên R2 ⇒ cung
đòi hỏi trσ thành cung yêu cầu P2
→ R2
180 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví
dụ
Hệ thống: 2 tiến trình P1, P2 và 2
tài nguyên R1, R2, mỗi loại 1 đσn và
R1 P1 có thể xin R1, R2 trong tưσng
lai
P1 có thể xin R1, R2 trong tưσng
lai
P1 yêu cầu tài nguyên R1
Cung đòi hỏi trσ thành cung yêu
P1 P2 cầu
Yêu cầu của P1 đưσc đáp ùng
Cung yêu cầu thành cung sû dựng
P2 yêu cầu tài nguyên R1 ⇒ Oσi
R2 P2 yêu cầu tài nguyên R2 ⇒ cung
đòi hỏi trσ thành cung yêu cầu P2
→ Rđưσc
2
đáp
180 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví
dụ
Hệ thống: 2 tiến trình P1, P2 và 2
tài nguyên R1, R2, mỗi loại 1 đσn và
R1 P1 có thể xin R1, R2 trong tưσng
lai
P1 có thể xin R1, R2 trong tưσng
lai
P1 yêu cầu tài nguyên R1
Cung đòi hỏi trσ thành cung yêu
P1 P2 cầu
Yêu cầu của P1 đưσc đáp ùng
Cung yêu cầu thành cung sû dựng
P2 yêu cầu tài nguyên R1 ⇒ Oσi
R2 P2 yêu cầu tài nguyên R2 ⇒ cung
đòi hỏi trσ thành cung yêu cầu P2
P2 yêu cầu R2, Oáp ùng? → Rđưσc
180 / 201
2
đáp
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Thích hσp cho các hệ thống gồm các kiểu tài nguyên có
nhiều đσn và
M®t tiến trình mσi xuất hiện trong hệ thống cần khai báo
số đσn và lσn nhất của mỗi kiểu tài nguyên sẽ sû dựng
Không đưσc vưσt quá tổng số tài nguyên của hệ thống
Khi m®t tiến trình yêu cầu tài nguyên, hệ thống kiểm tra
liệu đáp ùng cho yêu cầu hệ thống có còn an toàn không
Nếu hệ thống vẫn an toàn ⇒ Cung cấp tài nguyên cho yêu
cầu Nếu hệ thống không an toàn ⇒ Tiến trình phải đσi
Thuªt toán cần
Các cấu trúc dú liệu biểu diễn trạng thái phân phối tài
nguyên Thuªt toán kiểm tra tình trạng an toàn của hệ thông
Thuªt toán yêu cầu tài nguyên
181 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
H» thống
n số tiến trình trong hệ thống
m số kiểu tài nguyên trong hệ thống
Các cấu trúc dť li»u
Available Vector chiều dài m cho biết số đσn và tài nguyên
sắn có trong hệ thống. (Available[3] = 8 ⇒?)
Max Ma trªn n ∗ m cho biết số lưσng lσn nhất mỗi kiểu
tài nguyên của tøng tiến trình. (Max[2,3] = 5 ⇒?)
Allocation Ma trªn n ∗ m cho biết số lưσng mỗi kiểu tài
nguyên đã cấp cho tiến trình. (Allocation[2,3] = 2
⇒?)
Need Ma trªn n ∗ m ch¿ ra số lưσng mỗi kiểu tài
nguyên còn cần đến của tøng tiến trình. Need[2,3]
= 3 ⇒?)
182 / 201 Need[i][j] = Max[i][j] - Allocation[i][j]
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Quy fớc
X, Y là các vector đ® dài n
X ≤ Y ⇔ X [i ] ≤ Y [i ] ∀i = 1, 2, . . . , n
Các dòng của ma trªn Max,Yêu cầu, Cung cấp đưσc xû
lý như các vector
Thuªt toán tính toán trên các vector
Các cấu trúc cục bộ
Work vector đ® dài m cho biết mỗi tài nguyên còn
bao nhiêu
Finish vector đ® dài n, kiểu logic cho biết tiến trình có
chắc chắn kết thúc không
183 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Ví dụ minh họa
Số tài nguyên còn sắn trong hệ thống (R0, R1, R2) =(3, 3,
2)
186 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Số tài nguyên còn sắn trong hệ thống (R0, R1, R2) =(3, 3,
2) Yêu cầu còn lại của mỗi tiến trình (Need = Max -
R0 R1 R2
Allocation) R0 R1 R2 R0 R1 R2
P0 7 5 3 P0 0 1 0 P0 7 4 3
P1 3 2 2 P1 2 0 0 P1 1 2 2
P2 9 0 2 P2 3 0 2 P2 6 0 0
P3 2 2 2 P3 2 1 1 P3 0 1 1
P4 4 3 3 P4 0 0 2 P4 4 3 1
Max Allocation Need
186 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Số tài nguyên còn sắn trong hệ thống (R0, R1, R2) =(3, 3,
2) Yêu cầu còn lại của mỗi tiến trình (Need = Max -
R0 R1 R2
Allocation) R0 R1 R2 R0 R1 R2
P0 7 5 3 P0 0 1 0 P0 7 4 3
P1 3 2 2 P1 2 0 0 P1 1 2 2
P2 9 0 2 P2 3 0 2 P2 6 0 0
P3 2 2 2 P3 2 1 1 P3 0 1 1
P4 4 3 3 P4 0 0 2 P4 4 3 1
Max Allocation Need
Thțc hi»n thuªt toán an
toàn Tiến trình P0 P1 P2 P3 P4
Finish F F F F F
Work (3, 3, 2)
186 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Số tài nguyên còn sắn trong hệ thống (R0, R1, R2) =(3, 3,
2) Yêu cầu còn lại của mỗi tiến trình (Need = Max -
R0 R1 R2
Allocation) R0 R1 R2 R0 R1 R2
P0 7 5 3 P0 0 1 0 P0 7 4 3
P1 3 2 2 P1 2 0 0 P1 1 2 2
P2 9 0 2 P2 3 0 2 P2 6 0 0
P3 2 2 2 P3 2 1 1 P3 0 1 1
P4 4 3 3 P4 0 0 2 P4 4 3 1
Max Allocation Need
Thțc hi»n thuªt toán an
toàn Tiến trình P0 P1 P2 P3 P4
Finish F F F F F
Work (3, 3, 2)
186 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Số tài nguyên còn sắn trong hệ thống (R0, R1, R2) =(3, 3,
2) Yêu cầu còn lại của mỗi tiến trình (Need = Max -
R0 R1 R2
Allocation) R0 R1 R2 R0 R1 R2
P0 7 5 3 P0 0 1 0 P0 7 4 3
P1 3 2 2 P1 2 0 0 P1 1 2 2
P2 9 0 2 P2 3 0 2 P2 6 0 0
P3 2 2 2 P3 2 1 1 P3 0 1 1
P4 4 3 3 P4 0 0 2 P4 4 3 1
Max Allocation Need
Thțc hi»n thuªt toán an
toàn Tiến trình P0 P1 P2 P3 P4
Finish F F F F F
Work (3, 3, 2)
186 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Số tài nguyên còn sắn trong hệ thống (R0, R1, R2) =(3, 3,
2) Yêu cầu còn lại của mỗi tiến trình (Need = Max -
R0 R1 R2
Allocation) R0 R1 R2 R0 R1 R2
P0 7 5 3 P0 0 1 0 P0 7 4 3
P1 3 2 2 P1 2 0 0 P1 1 2 2
P2 9 0 2 P2 3 0 2 P2 6 0 0
P3 2 2 2 P3 2 1 1 P3 0 1 1
P4 4 3 3 P4 0 0 2 P4 4 3 1
Max Allocation Need
Thțc hi»n thuªt toán an
toàn Tiến trình P0 P1 P2 P3 P4
Finish F T F F F
Work (5, 3, 2)
186 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Số tài nguyên còn sắn trong hệ thống (R0, R1, R2) =(3, 3,
2) Yêu cầu còn lại của mỗi tiến trình (Need = Max -
R0 R1 R2
Allocation) R0 R1 R2 R0 R1 R2
P0 7 5 3 P0 0 1 0 P0 7 4 3
P1 3 2 2 P1 2 0 0 P1 1 2 2
P2 9 0 2 P2 3 0 2 P2 6 0 0
P3 2 2 2 P3 2 1 1 P3 0 1 1
P4 4 3 3 P4 0 0 2 P4 4 3 1
Max Allocation Need
Thțc hi»n thuªt toán an
toàn Tiến trình P0 P1 P2 P3 P4
Finish F T F F F
Work (5, 3, 2)
186 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Số tài nguyên còn sắn trong hệ thống (R0, R1, R2) =(3, 3,
2) Yêu cầu còn lại của mỗi tiến trình (Need = Max -
R0 R1 R2
Allocation) R0 R1 R2 R0 R1 R2
P0 7 5 3 P0 0 1 0 P0 7 4 3
P1 3 2 2 P1 2 0 0 P1 1 2 2
P2 9 0 2 P2 3 0 2 P2 6 0 0
P3 2 2 2 P3 2 1 1 P3 0 1 1
P4 4 3 3 P4 0 0 2 P4 4 3 1
Max Allocation Need
Thțc hi»n thuªt toán an
toàn Tiến trình P0 P1 P2 P3 P4
Finish F T F T F
Work (7, 4, 3)
186 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Số tài nguyên còn sắn trong hệ thống (R0, R1, R2) =(3, 3,
2) Yêu cầu còn lại của mỗi tiến trình (Need = Max -
R0 R1 R2
Allocation) R0 R1 R2 R0 R1 R2
P0 7 5 3 P0 0 1 0 P0 7 4 3
P1 3 2 2 P1 2 0 0 P1 1 2 2
P2 9 0 2 P2 3 0 2 P2 6 0 0
P3 2 2 2 P3 2 1 1 P3 0 1 1
P4 4 3 3 P4 0 0 2 P4 4 3 1
Max Allocation Need
Thțc hi»n thuªt toán an
toàn Tiến trình P0 P1 P2 P3 P4
Finish F T F T T
Work (7, 4, 5)
186 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Số tài nguyên còn sắn trong hệ thống (R0, R1, R2) =(3, 3,
2) Yêu cầu còn lại của mỗi tiến trình (Need = Max -
R0 R1 R2
Allocation) R0 R1 R2 R0 R1 R2
P0 7 5 3 P0 0 1 0 P0 7 4 3
P1 3 2 2 P1 2 0 0 P1 1 2 2
P2 9 0 2 P2 3 0 2 P2 6 0 0
P3 2 2 2 P3 2 1 1 P3 0 1 1
P4 4 3 3 P4 0 0 2 P4 4 3 1
Max Allocation Need
Thțc hi»n thuªt toán an
toàn Tiến trình P0 P1 P2 P3 P4
Finish F T F T T
Work (7, 4, 5)
186 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Số tài nguyên còn sắn trong hệ thống (R0, R1, R2) =(3, 3,
2) Yêu cầu còn lại của mỗi tiến trình (Need = Max -
R0 R1 R2
Allocation) R0 R1 R2 R0 R1 R2
P0 7 5 3 P0 0 1 0 P0 7 4 3
P1 3 2 2 P1 2 0 0 P1 1 2 2
P2 9 0 2 P2 3 0 2 P2 6 0 0
P3 2 2 2 P3 2 1 1 P3 0 1 1
P4 4 3 3 P4 0 0 2 P4 4 3 1
Max Allocation Need
Thțc hi»n thuªt toán an
toàn Tiến trình P0 P1 P2 P3 P4
Finish T T F T T
Work (7, 5, 5)
186 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Số tài nguyên còn sắn trong hệ thống (R0, R1, R2) =(3, 3,
2) Yêu cầu còn lại của mỗi tiến trình (Need = Max -
R0 R1 R2
Allocation) R0 R1 R2 R0 R1 R2
P0 7 5 3 P0 0 1 0 P0 7 4 3
P1 3 2 2 P1 2 0 0 P1 1 2 2
P2 9 0 2 P2 3 0 2 P2 6 0 0
P3 2 2 2 P3 2 1 1 P3 0 1 1
P4 4 3 3 P4 0 0 2 P4 4 3 1
Max Allocation Need
Thțc hi»n thuªt toán an
toàn Tiến trình P0 P1 P2 P3 P4
Finish T T T T T
Work (10, 5, 7)
186 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
Số tài nguyên còn sắn trong hệ thống (R0, R1, R2) =(3, 3,
2) Yêu cầu còn lại của mỗi tiến trình (Need = Max -
R0 R1 R2
Allocation) R0 R1 R2 R0 R1 R2
P0 7 5 3 P0 0 1 0 P0 7 4 3
P1 3 2 2 P1 2 0 0 P1 1 2 2
P2 9 0 2 P2 3 0 2 P2 6 0 0
P3 2 2 2 P3 2 1 1 P3 0 1 1
P4 4 3 3 P4 0 0 2 P4 4 3 1
Max Allocation Need
Thțc hi»n thuªt toán an
toàn Tiến trình P0 P1 P2 P3 P4
Finish T T T T T
Work (10, 5, 7)
H» thống an toàn (P1, P3, P4, P0, P2)
186 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
188 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
188 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
188 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
188 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
188 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
188 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
188 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
188 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
188 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
188 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
188 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
188 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
189 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.5 Phòng tránh bế tắc
189 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
5 Bế tắc và xť lý bế tắc
Khái niệm bế tắc
Oiều kiện xảy ra bế tắc
Các phưσng pháp xû lý bế
tắc Phòng ngøa bế tắc
Phòng tránh bế tắc
Nhªn biết và khắc
phực
190 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Giới thi»u
Nguyên tắc
Không áp dựng các biện pháp phòng ngøa ho°c phòng
tránh, để cho bế tắc xảy ra
Oành kỳ kiểm tra xem bế tắc có đang xảy ra không. Nếu
có tìm cách khắc phực
Oể thực hiện, hệ thống phải cung cấp
Thuªt toán xác đành hệ thống đang bế tắc
không Thuªt toán chúa bế tắc
191 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Giới thi»u
Nguyên tắc
Không áp dựng các biện pháp phòng ngøa ho°c phòng
tránh, để cho bế tắc xảy ra
Oành kỳ kiểm tra xem bế tắc có đang xảy ra không. Nếu
có tìm cách khắc phực
Oể thực hiện, hệ thống phải cung cấp
Thuªt toán xác đành hệ thống đang bế tắc
không Thuªt toán chúa bế tắc
Nhªn biết bế tắc
Thuªt toán dựa trên đồ thà cung cấp tài
nguyên Thuªt toán ch¿ ra bế tắc tổng quát
191 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Giới thi»u
Nguyên tắc
Không áp dựng các biện pháp phòng ngøa ho°c phòng
tránh, để cho bế tắc xảy ra
Oành kỳ kiểm tra xem bế tắc có đang xảy ra không. Nếu
có tìm cách khắc phực
Oể thực hiện, hệ thống phải cung cấp
Thuªt toán xác đành hệ thống đang bế tắc
không Thuªt toán chúa bế tắc
Nhªn biết bế tắc
Thuªt toán dựa trên đồ thà cung cấp tài
nguyên Thuªt toán ch¿ ra bế tắc tổng quát
Khắc phực bế tắc
Kết thúc tiến trình
Trưng dựng tài nguyên
191 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Thuªn toán dța trȇn đồ thà cung cấp tài nguyȇn
192 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Thuªn toán dța trȇn đồ thà cung cấp tài nguyȇn
192 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Thuªn toán dța trȇn đồ thà cung cấp tài nguyȇn
192 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Thuªn toán dța trȇn đồ thà cung cấp tài nguyȇn
R3 R4 R5
P1 P2 P3
R1 P5 R2
193 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Dồ thà chờ đợi: Ví
dụ
P4
R3 R4 R5
P1 P2 P3
R1 P5 R2
193 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Dồ thà chờ đợi: Ví
dụ
P4
Dồ thà chờ
đợi
R3 R4 R5 P4
P1 P2 P3 P1 P2 P3
R1 P5 R2 P5
193 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Thuªt toán ch¿ ra bế tắc tổng quát : Giới thi»u
5 tiến trình P0, P1, P2, P3, P4; 3 tài nguyên R0, R1, R2
Tài nguyên R0 có 7 đσn và, R1 có 2 đσn và, R2 có 6 đσn và
Trạng thái cung cấp tài nguyên tại thσi điểm t0
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 0 0 0
P1 2 0 0 P1 2 0 2
P2 3 0 3 P2 0 0 0
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request
196 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa
5 tiến trình P0, P1, P2, P3, P4; 3 tài nguyên R0, R1, R2
Tài nguyên R0 có 7 đσn và, R1 có 2 đσn và, R2 có 6 đσn và
Trạng thái cung cấp tài nguyên tại thσi điểm t0
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 0 0 0
P1 2 0 0 P1 2 0 2
P2 3 0 3 P2 0 0 0
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request
Tài nguyên hiện có (R0, R1, R2) =(0, 0,
0)
196 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa
5 tiến trình P0, P1, P2, P3, P4; 3 tài nguyên R0, R1, R2
Tài nguyên R0 có 7 đσn và, R1 có 2 đσn và, R2 có 6 đσn và
Trạng thái cung cấp tài nguyên tại thσi điểm t0
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 0 0 0
P1 2 0 0 P1 2 0 2
P2 3 0 3 P2 0 0 0
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request
Tài nguyên hiện có (R0, R1, R2) =(0, 0,
0)
Tiếntoán
Thțc hi»n thuªt trìnhch¿Pra
0 bếPtắc
1 P2 P3 P4
Finish F F F F F
Work (0, 0, 0)
196 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa
5 tiến trình P0, P1, P2, P3, P4; 3 tài nguyên R0, R1, R2
Tài nguyên R0 có 7 đσn và, R1 có 2 đσn và, R2 có 6 đσn và
Trạng thái cung cấp tài nguyên tại thσi điểm t0
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 0 0 0
P1 2 0 0 P1 2 0 2
P2 3 0 3 P2 0 0 0
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request
Tài nguyên hiện có (R0, R1, R2) =(0, 0,
0)
Tiếntoán
Thțc hi»n thuªt trình ch¿Pra
0 bếPtắc
1 P2 P3 P4
Finish F F F F F
Work (0, 0, 0)
196 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa
5 tiến trình P0, P1, P2, P3, P4; 3 tài nguyên R0, R1, R2
Tài nguyên R0 có 7 đσn và, R1 có 2 đσn và, R2 có 6 đσn và
Trạng thái cung cấp tài nguyên tại thσi điểm t0
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 0 0 0
P1 2 0 0 P1 2 0 2
P2 3 0 3 P2 0 0 0
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request
Tài nguyên hiện có (R0, R1, R2) =(0, 0,
0)
Tiếntoán
Thțc hi»n thuªt trình ch¿Pra
0 bếPtắc
1 P2 P3 P4
Finish T F F F F
Work (0, 1, 0)
196 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa
5 tiến trình P0, P1, P2, P3, P4; 3 tài nguyên R0, R1, R2
Tài nguyên R0 có 7 đσn và, R1 có 2 đσn và, R2 có 6 đσn và
Trạng thái cung cấp tài nguyên tại thσi điểm t0
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 0 0 0
P1 2 0 0 P1 2 0 2
P2 3 0 3 P2 0 0 0
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request
Tài nguyên hiện có (R0, R1, R2) =(0, 0,
0)
Tiếntoán
Thțc hi»n thuªt trình ch¿Pra
0 bếPtắc
1 P2 P3 P4
Finish T F F F F
Work (0, 1, 0)
196 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa
5 tiến trình P0, P1, P2, P3, P4; 3 tài nguyên R0, R1, R2
Tài nguyên R0 có 7 đσn và, R1 có 2 đσn và, R2 có 6 đσn và
Trạng thái cung cấp tài nguyên tại thσi điểm t0
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 0 0 0
P1 2 0 0 P1 2 0 2
P2 3 0 3 P2 0 0 0
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request
Tài nguyên hiện có (R0, R1, R2) =(0, 0,
0)
Tiếntoán
Thțc hi»n thuªt trình ch¿Pra
0 bếPtắc
1 P2 P3 P4
Finish T F T F F
Work (3, 1, 3)
196 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa
5 tiến trình P0, P1, P2, P3, P4; 3 tài nguyên R0, R1, R2
Tài nguyên R0 có 7 đσn và, R1 có 2 đσn và, R2 có 6 đσn và
Trạng thái cung cấp tài nguyên tại thσi điểm t0
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 0 0 0
P1 2 0 0 P1 2 0 2
P2 3 0 3 P2 0 0 0
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request
Tài nguyên hiện có (R0, R1, R2) =(0, 0,
0)
Tiếntoán
Thțc hi»n thuªt trình ch¿Pra
0 bếPtắc
1 P2 P3 P4
Finish T F T T F
Work (5, 2, 4)
196 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa
5 tiến trình P0, P1, P2, P3, P4; 3 tài nguyên R0, R1, R2
Tài nguyên R0 có 7 đσn và, R1 có 2 đσn và, R2 có 6 đσn và
Trạng thái cung cấp tài nguyên tại thσi điểm t0
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 0 0 0
P1 2 0 0 P1 2 0 2
P2 3 0 3 P2 0 0 0
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request
Tài nguyên hiện có (R0, R1, R2) =(0, 0,
0)
Tiếntoán
Thțc hi»n thuªt trìnhch¿Pra
0 bếPtắc
1 P2 P3 P4
Finish T F T T F
Work (5, 2, 4)
196 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa
5 tiến trình P0, P1, P2, P3, P4; 3 tài nguyên R0, R1, R2
Tài nguyên R0 có 7 đσn và, R1 có 2 đσn và, R2 có 6 đσn và
Trạng thái cung cấp tài nguyên tại thσi điểm t0
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 0 0 0
P1 2 0 0 P1 2 0 2
P2 3 0 3 P2 0 0 0
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request
Tài nguyên hiện có (R0, R1, R2) =(0, 0,
0)
Tiếntoán
Thțc hi»n thuªt trình ch¿Pra
0 bếPtắc
1 P2 P3 P4
Finish T F T T F
Work (5, 2, 4)
196 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa
5 tiến trình P0, P1, P2, P3, P4; 3 tài nguyên R0, R1, R2
Tài nguyên R0 có 7 đσn và, R1 có 2 đσn và, R2 có 6 đσn và
Trạng thái cung cấp tài nguyên tại thσi điểm t0
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 0 0 0
P1 2 0 0 P1 2 0 2
P2 3 0 3 P2 0 0 0
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request
Tài nguyên hiện có (R0, R1, R2) =(0, 0,
0)
Tiếntoán
Thțc hi»n thuªt trình ch¿Pra
0 bếPtắc
1 P2 P3 P4
Finish T T T T F
Work (7, 2, 4)
196 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa
5 tiến trình P0, P1, P2, P3, P4; 3 tài nguyên R0, R1, R2
Tài nguyên R0 có 7 đσn và, R1 có 2 đσn và, R2 có 6 đσn và
Trạng thái cung cấp tài nguyên tại thσi điểm t0
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 0 0 0
P1 2 0 0 P1 2 0 2
P2 3 0 3 P2 0 0 0
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request
Tài nguyên hiện có (R0, R1, R2) =(0, 0,
0)
Tiếntoán
Thțc hi»n thuªt trìnhch¿Pra
0 bếPtắc
1 P2 P3 P4
Finish T T T T T
Work (7, 2, 6)
196 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa
5 tiến trình P0, P1, P2, P3, P4; 3 tài nguyên R0, R1, R2
Tài nguyên R0 có 7 đσn và, R1 có 2 đσn và, R2 có 6 đσn và
Trạng thái cung cấp tài nguyên tại thσi điểm t0
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 0 0 0
P1 2 0 0 P1 2 0 2
P2 3 0 3 P2 0 0 0
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request
Tài nguyên hiện có (R0, R1, R2) =(0, 0,
0)
Thțc hi»n thuªtTiếntoán
trìnhch¿Pra
0 bếPtắc
1 P2 P3 P4
Finish T T T T T
Work (7, 2, 6)
H» thống khȏng bế tắc (P0, P2, P3, P1,
196 / 201 P4)
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa (tiếp)
197 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa (tiếp)
197 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa (tiếp)
197 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa (tiếp)
197 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa (tiếp)
197 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa (tiếp)
197 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa (tiếp)
197 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa (tiếp)
197 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa (tiếp)
197 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa (tiếp)
197 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa (tiếp)
197 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa (tiếp)
197 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Ví dụ minh họa (tiếp)
Nguyȇn tắc: Hủy bỏ các tiến trình đang trong tình trạng bế tắc
và lấy lại tài nguyên đã cấp cho tiến trình bà hủy bỏ
198 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Khắc phục bế tắc: Phfбng pháp kết thúc tiến trình
Nguyȇn tắc: Hủy bỏ các tiến trình đang trong tình trạng bế tắc
và lấy lại tài nguyên đã cấp cho tiến trình bà hủy bỏ
Hủy bỏ tất cả các tiến trình
Nhanh chóng hủy bỏ bế
tắc Quá tốn kém
Các tiến trình bà hủy bỏ có
thể gần kết thúc
198 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Khắc phục bế tắc: Phfбng pháp kết thúc tiến trình
Nguyȇn tắc: Hủy bỏ các tiến trình đang trong tình trạng bế tắc
và lấy lại tài nguyên đã cấp cho tiến trình bà hủy bỏ
Hủy bỏ tất cả các tiến trình
Nhanh chóng hủy bỏ bế
tắc Quá tốn kém
Các tiến trình bà hủy bỏ có
thể gần kết thúc
Hủy bỏ lần lưσt tiến trình
cho tσi khi bế tắc không xảy
ra
Sau khi hủy bỏ, phải kiểm tra
xem bế tắc còn tồn tại
không
Thuªt toán kiểm tra bế tắc
có đ® phùc tạp m ∗ n2
Cần ch¿ ra thù tự tiến trình bà
hủy bỏ để phá vσ bế tắc
198 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Khắc phục bế tắc: Phfбng pháp kết thúc tiến trình
Nguyȇn tắc: Hủy bỏ các tiến trình đang trong tình trạng bế tắc
và lấy lại tài nguyên đã cấp cho tiến trình bà hủy bỏ
Hủy bỏ tất cả các tiến trình
Nhanh chóng hủy bỏ bế
tắc Quá tốn kém
Các tiến trình bà hủy bỏ có
thể gần kết thúc
Hủy bỏ lần lưσt tiến trình
cho tσi khi bế tắc không xảy
ra
Sau khi hủy bỏ, phải kiểm tra
xem bế tắc còn tồn tại
không
Thuªt toán kiểm tra bế tắc
có đ® phùc tạp m ∗ n2
Cần ch¿ ra thù tự tiến trình bà
hủy bỏ để phá vσ bế tắc
198 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Khắc phục bế tắc: Phfбng pháp trfng dụng tài nguyȇn
Nguyȇn tắc:
Trưng dựng liên tực m®t vài tài nguyên tø m®t số tiến trình
đang bế tắc cho các tiến trình khác đến khi bế tắc đưσc hủy bỏ
Các vấn đề cần quan
tȃm
199 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Khắc phục bế tắc: Phfбng pháp trfng dụng tài
nguyȇn
Nguyȇn tắc:
Trưng dựng liên tực m®t vài tài nguyên tø m®t số tiến trình
đang bế tắc cho các tiến trình khác đến khi bế tắc đưσc hủy bỏ
Các vấn đề cần quan
tȃm
1 Lựa chQn nạn nhân (victime)
199 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Khắc phục bế tắc: Phfбng pháp trfng dụng tài
nguyȇn
Nguyȇn tắc:
Trưng dựng liên tực m®t vài tài nguyên tø m®t số tiến trình
đang bế tắc cho các tiến trình khác đến khi bế tắc đưσc hủy bỏ
Các vấn đề cần quan
tȃm
1 Lựa chQn nạn nhân (victime)
199 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc
5.6 Nhªn biết và khắc
phực
Khắc phục bế tắc: Phfбng pháp trfng dụng tài
nguyȇn
Nguyȇn tắc:
Trưng dựng liên tực m®t vài tài nguyên tø m®t số tiến trình
đang bế tắc cho các tiến trình khác đến khi bế tắc đưσc hủy bỏ
Các vấn đề cần quan
tȃm
1 Lựa chQn nạn nhân (victime)
Tổng kết
Bế tắc là tình trạng 2 hay nhiều tiến trình cùng chσ đσi
đ®c lªp m®t sự kiện ch¿ có thể xảy ra bσi sự hoạt đ®ng
của các tiến trình đang đσi
Bế tắc xảy ra khi h®i đủ 4 điều kiện
Tồn tại tài nguyên găng
Phải chσ đσi trưσc khi vào đoạn găng
Không tồn tại hệ thống phân phối lại tài
nguyên Tồn tại hiện tưσng chσ đσi vòng tròn
Oể xû lý bế tắc có 3 lσp thuªt toán
Phòng ngøa bế tắc
Tác đ®ng vào các điều kiện xảy ra bế tắc
Dự báo và phòng tránh
Ngăn ngøa hệ thống rσi vào tình trạng có thể
dẫn đến bế tắc
Nhªn biết và khắc phực
Cho phép bế tắc xảy ra, ch¿ ra bế tắc và
200 / 201
Chưσng 2: Quản lý tiến trình
Kết luªn