You are on page 1of 419

Hệ điều hành

Hfi DIỀU HÀNH


Phạm Đăng Hải
haipd-fit@mail.hut.edu.vn

B® môn Khoa học Máy tính


Viện Công nghệ Thông tin &
Truyền Thông

Ngày 19 tháng 3 năm


1 / 201
2011
Chương 2: Quản lý tiến trình

Chương 2 Quản lý tiến


trình

2 / 201
Chương 2: Quản lý tiến trình

Giới thi»u

Chương trình đang thực hiện


Đưσc cung cấp tài nguyên (CPU, bë nhσ, thiết bà
vào/ra. . .) để hoàn thành công việc
Tài nguyên đưσc cấp khi khσi tạo tiến trình hay khi tiến
trình đang thực hiện
GQi là tiến trình (process)
Hệ thống là tªp các tiến trình thực hiện đồng thσi
Tiến trình h» điều hành Thực hiện mã lệnh hệ thống
Tiến trình người dùng Thực hiện mã lệnh ngưσi dùng
Tiến trình có thể chùa m®t ho°c nhiều luồng điều khiển
Trách nhiệm của Hệ điều hành: Đảm bảo hQat đ®ng của
tiến trình và tiểu trình (luồng )
Tạo/xóa tiến trình (ngưσi dùng, hệ
thống) Điều phối tiến trình
Cung cấp cơ chế đồng b®, truyền thông và ngăn ngøa
tình trạng bế tắc giúa các tiến trình
3 / 201
Chương 2: Quản lý tiến trình

Nội dung chính

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

4 Tài nguyên găng và điều độ tiến


trình

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

Dành nghĩa tiến


trình
1 Là m®t dãy thay đổi trạng thái của hệ thống

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

Dành nghĩa tiến


trình
1 Là m®t dãy thay đổi trạng thái của hệ thống

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

Dành nghĩa tiến trình

Chương trình gồm


Mã chương trình: Lệnh máy (CD2190EA...)
Dú liệu: Biến đưσc lưu trú và sû dựng trong b® nhσ
Biến toàn cực
Biến đưσc cung cấp đ®ng (malloc,
new,..) Biến stack (tham số hàm, biến
cực bë )
Thư viện liên kết đ®ng: không đưσc dàch & liên kết cùng
vσi chương trình ( D L L )
Quá trình dàch m®t chương 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

Dành nghĩa tiến trình

Thực hiện m®t chương 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

Dành nghĩa tiến trình

Thực hiện m®t chương trình


Hệ điều hành tạo m®t tiến trình và phân phối vùng nhσ cho
nó B® thực hiện (loader/exec)
Đọc và dàch (interprets) file thực thi
Thiết lªp không gian đàa ch¿ cho tiến trình để chùa mã lệnh
và dú liệu tø file thực thi
Đ°t các tham số dòng lệnh, môi trưσng (argc, argv, envp)
vào stack
Thiết lªp các thanh ghi của VXL thích hσp và gọi hàm
"_start()" (h» điều hành)
Chương trình bắt đầu thực hiện tại "_start()". Hàm này
gQi tσi hàm main()(hàm của chương trình)
⇒"Tiến trình" đang thực hi»n, không còn đề c¼p đến
"chương trình" núa
Khi hàm main() kết thúc, OS gQi tσi hàm "_exit()" để hủy
bỏ tiến trình và thu hồi tài nguyên

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

Dành nghĩa tiến trình

Thực hiện m®t chương trình


Hệ điều hành tạo m®t tiến trình và phân phối vùng nhσ cho
nó B® thực hiện (loader/exec)
Đọc và dàch (interprets) file thực thi
Thiết lªp không gian đàa ch¿ cho tiến trình để chùa mã lệnh
và dú liệu tø file thực thi
Đ°t các tham số dòng lệnh, môi trưσng (argc, argv, envp)
vào stack
Thiết lªp các thanh ghi của VXL thích hσp và gọi hàm
"_start()" (h» điều hành)
Chương trình bắt đầu thực hiện tại "_start()". Hàm này
gQi tσi hàm main()(hàm của chương trình)
⇒"Tiến trình" đang thực hi»n, không còn đề c¼p đến
"chương trình" núa
Khi hàm main() kết thúc, OS gQi tσi hàm "_exit()" để hủy
bỏ tiến trình và thu hồi tài nguyên
, ,
Tiến trình là chương trình đang thțc
z r
10 / 201 thi
Chương 2: Quản lý tiến trình
1. Tiến trình
1. Khái niệm tiến trình

Trạng thái tiến trình I

Khi thực hiện, tiến trình thay đổi trạng thái


Trạng thái của tiến trình là m®t phần trong hoạt đ®ng
hiện tại của tiến trình:
Khởi tạo (New) Tiến trình đang đưσc khσi tạo
Sắn sàng (Ready) Tiến trình đang đσi sû dựng
processor vªt lý
Thțc hi»n (Running) Các câu lệnh của tiến trình
đang đưσc thực hiện
Chờ đợi (Waiting) Tiến trình đang chσ đσi m®t sự kiện
nào đó xuất hiện (sự hoàn thành thao tác
vào/ra)
Kết thúc (Terminated) Tiến trình thực hiện xong
Hệ thống có m®t processor
Có duy nhất m®t tiến trình σ trạng thái thực hiện
Có thể có nhiều tiến trình σ trạng thái chσ đσi ho°c sắn sàng
11 / 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

Trạng thái tiến trình II

Lưu đồ thay đổi trạng thái tiến trình (Silberschatz


2002)

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

Khối điều khiển tiến trình (PCB: Process Control Block)

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

Tiến trình và Luồng

Tiến trình đơn luồng: Là m®t chương trình thực hiện


ch¿ m®t luồng thực thi
⇒Có m®t luồng câu lệnh thực thi
⇒Cho phép thực hiện ch¿ m®t nhiệm vự tại m®t thσi
điểm

Tiến trình đa luồng: Có nhiều luồng thực thi


⇒Cho phép thực hiện nhiều hơn m®t nhiệm vự tại m®t
thσi điểm

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

Mục đích Sủ dựng tối đa thσi gian của CPU


⇒ Cần có nhiều tiến trình trong hệ thống

Vấn đề Luân chuyển CPU giũa các tiến trình


⇒ Phải có hàng đσi cho các tiến trình

H» thống một processor


⇒ M®t tiến trình thực hiện
⇒ Các tiến trình khác phải đσi tσi khi CPU tự do

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

Các hàng đợi tiến trình I

Hệ thống có nhiều hàng đσi dành cho tiến trình


Job-queue Tªp các tiến trình trong hệ thống
Ready-Queue Tªp các tiến trình tồn tại trong b® nhσ,
đang sắn sàng và chσ đσi để đưσc thực hiện
Device queues Tªp các tiến trình đang chσ đσi m®t thiết

vào ra. Phân biệt hàng đσi cho tøng thiết bà

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

Các hàng đợi tiến trình II


Các tiến trình di chuyển giúa hàng đσi khác nhau

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

Các hàng đợi tiến trình


III

Tiến trình đã đưσc chQn và đang thực


hiên1 Đưa ra m®t yêu cầu vào ra: đσi trong m®t hàng đσi thiết
2bà Tạo m®t tiến trình con và đσi tiến trình con kết thúc
3Hết thσi gian sû dựng CPU, phải quay lại hàng đσi sắn
sàng
Trưσng hσp (1&2) sau khi sự kiện chσ đσi hoàn thành,
Tiến trình sẽ chuyển tø trạng thái đσi sang trạng thái sắn
sàng Tiến trình quay lại hàng đσi sắn sàng
Tiến trình tiếp tực chu kỳ (sắn sàng, thực hi»n, chσ dσi )
cho tσi khi kết thúc
Xóa khỏi tất cả các hàng đσi
PCB và tài nguyên đã cấp đưσc giải phóng

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

Bộ điều phối (Scheduler) I

Lựa chQn tiến trình trong các hàng đσi


Điều phối công việc (Job scheduler; Long-term
scheduler ) Điều phối CPU (CPU scheduler; Short-term
scheduler )
Diều phối cȏng vi»c :
ChQn các tiến trình tø hàng đσi tiến trình đưσc lưu trong
các vùng đệm (dĩa tù) và đưa vào b® nhσ để thực hiện
Thực hiện không thưσng xuyên (dơn và giây/phút)
Điều khiển mùc đ® đa chương trình (số t/trình trong bë
nhσ ) Khi mùc đ® đa chương trình ổn đành, điều phối công
việc đưσc gQi ch¿ khi có tiến trình rσi khỏi hệ thống
Vấn đề lựa chQn công việc
Tiến trình thiên về vào/ra: sû dựng ít thσi gian CPU
Tiến trình thiên về tính toán: sû dựng nhiều thσi gian
CPU Cần lựa chọn lẫn cả 2 loại tiến tình
⇒ tt vào ra: hàng đσi sắn sàng rỗng, lãng phí CPU
20 / 201
⇒ tt tính toán: hàng đσi thiết bà rỗng, lãng phí thiết bà
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

Bộ điều phối (Scheduler) II

Diều phối CPU :


Lựa chQn m®t tiến trình tø hàng đσi các tiến trình đang
sắn sàng thực hiện và phân phối CPU cho nó
Đưσc thực hiện thưσng xuyên (VD: 100ms/lần)
Tiến trình thực hiện vài ms rồi thực hiện vào ra
Lựa chọn tiến trình mσi, đang sắn sàng
Phải thực hiện nhanh
10ms để quyết đành ⇒10/(110)=9% thσi gian
CPU lãng phí
Vấn đề luân chuyển CPU tø tiến trình này tσi tiến trình
khác Phải lưu trạng thái của tiến trình cũ (PCB) và khôi
phực trạng thái cho tiến trình mσi
Thσi gian luân chuyển là lãng phí Có
thể đưσc hỗ trσ bσi phần cùng
Vấn đề lựa chQn tiến trình (diều phối
CPU)
21 / 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

Swapping tiến trình (Medium-term scheduler)

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 ngť cảnh (context switch)

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

Thao tác trên tiến trình

Tạo tiến trǐnh

Kết thúc 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

Tạo 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

Kết thúc 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

Một số hàm với tiến trình trong WIN32 API

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

Phȃn loại tiến trình

Các tiến trình tuần tự


Điểm bắt đầu của tiến trình này nằm sau điểm kết thúc
của tiến trình kia
Các tiến trình song song
Điểm bắt đầu của tiến trình này nằm giťa điểm bắt đầu
và kết thúc của tiến trình kia
Dộc lªp: Không ảnh hưσng tσi ho°c bà ảnh hưσng bσi tiến
trình khác đang thực hiện trong hệ thống
Có hợp tác: Ảnh hưσng tσi ho°c chàu ảnh hưσng bσi
tiến trình khác đang thực hiện trong hệ thống
Hσp tác tiến trình nhằm
Chia sẻ thông tin
Tăng tốc đ® tính
toán:
Module hóa Tiện
dựng
Hσp tác tiến trình
đòi hỏi cơ chế
31 / 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

Bài toán người sản xuất (producer)-người tiêu thụ(consumer) I

Hệ thống gồm 2 tiến trình


Producer sản xuất ra các sản phẩm
Consumer tiêu thự các sản phẩm đưσc sản xuất ra
Ví dự ùng dựng
Chương trình in (producer ) sản xuất ra các ký tự đưσc
tiêu thự bσi b® điều khiển máy in (consumer)
Trình dàch (producer ) sản xuất ra mã hσp ngú, trình hσp
ngú (consumer/producer ) tiêu thự mã hσp ngú rồi sản xuất
ra module đối tưσng đưσc b® thực hiện (consumer ) tiêu thự
32 / 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

Bài toán người sản xuất (producer)-người tiêu thụ(consumer)


II
Producer và Consumer hoạt đ®ng đồng thσi
Sû dựng vùng đệm dùng chung (Buffer) chùa sản phẩm
đưσc điền vào bσi producer và đưσc lấy ra bσi consumer
IN Và trí trống kế tiếp trong vùng đệm;
OUT Và trí đầy đầu tiên trong vùng đệm.
Counter Số sản phẩm trong vùng đệm
Producer và Consumer phải đồng b®
Consumer không cố gắng tiêu thự m®t sản phẩm chưa
đưσc sản xuất
Vùng đệm dung lưσng vô hạn
Khi Buffer rỗng, Consumer phải đσi
Producer không phải đσi khi đ°t sản phẩm vào buffer
Vùng đệm dung lưσng húu hạn
Khi Buffer rỗng, Consumer phải đσi
33 / 201 Producer phải đσi nếu vùng đệm đầy
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

Bài toán người sản xuất (producer)-người tiêu thụ(consumer)


II
Producer
while(1){
while (Counter
/*produce == BUFFER_SIZE)
an item ; /*do nothing*/
i n nextProduced*/
Buffer[IN] = nextProduced;
IN = (IN + 1 ) % BUFFER_SIZE;
Counter++;
}

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

Trao đổi giťa các tiến trình

Dùng mô hình b® nhσ phân chia


Các tiến trình chia sẻ vùng nhσ chính
Mã cài đ°t đưσc viết tưσng minh bσi
ngưσi lªp trình ùng dựng
Ví dự: Bài toán Producer-Consumer

Dùng mô hình truyền thông liên tiến


trình (Interprocess communication)
Là cơ chế cho phép các tiến trình
truyền thông và đồng b® các hoạt
đ®ng Thưσng đưσc sû dựng trong các
hệ phân tán khi các tiến trình truyền
thông nằm trên các máy khác nhau
(chat)
36 / 201
Đảm bảo bσi hệ thống truyền thông
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

H» thống truyền thȏng báo

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

Truyền thȏng trțc tiếp

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

Truyền thȏng gián tiếp

Các thông báo đưσc gûi/nhªn tσi/tø các hòm


thư (mailboxes), cổng (ports)
Mỗi hòm thư có đành danh duy nhất
Các tiến trình có thể trao đổi nếu chúng dùng
chung hòm thư
Tính chất các liên kết
Các liên kết đưσc thiết lªp ch¿ khi các tiến trình dùng
chung hòm thư
M®t liên kết có thể đưσc gắn vσi nhiều tiến trình
Mỗi c°p tiến trình có thể dùng chung nhiều liên kết
truyền thông
Liên kết có thể m®t hay hai chiều
Các thao tác
Tạo hòm thư
Gûi/nhªn thông báo qua hòm thư
send(A, msg): Gûi m®t msg tσi hòm thư A
receive(A, msg): Nhªn m®t msg tø hòm thư A
39 / 201 Hủy bỏ
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ấn đề đồng bộ hóa

Truyền thông báo có thể phải chσ đσi (blocking ), ho°c


không chσ đσi (non blocking )
Blocking Truyền thông đồng b®
Non-blocking Truyền thông không đồng b®
Các thủ tực send và receive có thể bà chσ đσi ho°c không
chσ đσi
Blocking send Tiến trình gûi thông báo và đσi cho tσi
khi msg đưσc nhªn bσi tiến trình nhªn ho°c bσi hòm thư
Non blockking send Tiến trình gûi thông báo và tiếp tực
làm việc
Blocking receive Tiến trình nhªn phải đσi cho tσi khi có
thông báo
Non-blocking receive Tiến trình nhªn trả về ho°c m®t
thông báo có giá trà, ho°c m®t giá trà null

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

Truyền thȏng trong h» thống Client-Server

Socket Ràng bu®c vσi đàa ch¿ IP và cổng

RPC (Remote Procedure Calls)

RMI (Remote Method Invocation) Cơ chế của


Java

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

Tǐm hiểu các phương pháp truyền


thông Client-Server

Viết chương trǐnh giải quyết bài


toán Producer-Consumer

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

4 Tài nguyên găng và điều độ tiến


trình

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

Tính toán trên vector kích thước


lớn
for(k = 0; k < n; k + +){
a[k] = b[k] ∗ c[k];
}

46 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu

Ví dụ: Vector

Tính toán trên vector kích thước


lớn
for(k = 0; k < n; k + +)(
a[k] = b[k] ∗ c[k];
}

Vσi hệ thống nhiều vi xủ lý

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

Process Q Vấn đề nhªn Process P


while(1) Msg
► Blocking Receive while(1)
{ Receive(P,Msg ► Non-blocking { ReadLine(Msg
); Receive );
PrintLine(Msg); Send(Q,Msg);
ReadLine(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

Process Q Vấn đề nhªn Process P


while(1) Msg
► Blocking Receive while(1)
{ Receive(P,Msg ► Non-blocking { ReadLine(Msg
); Receive );
PrintLine(Msg); Giải Send(Q,Msg);
ReadLine(Msg); quyết Receive(Q,Msg);
Thực hiện song
Send(P,Msg); song Receive & PrintLine(Msg);
} 47 / 201 Send }
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu

Tiến trình đơn luồng và đa luồng

Hệ điều hành truyền thống


Tiến trình có m®t luồng điều khiển (heavyweight process)
Hệ điều hành hiện nay
Tiến trình có thể gồm nhiều luồng
Có thể thực hiện nhiều nhiệm vự tại m®t thσi điểm

48 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu

Ví dụ: Word processor (Tanenbaum 2001)

49 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu

Khái ni»m luồng

Là đơn và sû dựng CPU cơ bản, gồm


Đành danh luồng (ID Thread )
B® đếm chương trình (Program
Computer ) Tªp các thanh ghi (Rigisters)
Không gian stack
Phân chia cùng các luồng khác trong cùng
m®t tiến trình
Đoạn mã lệnh
Đoạn dú liệu (dối tưσng toàn cực)
Các tài nguyên hệ điều hành khác (file
dang mσ )
Các luồng có thể thực hiện cùng đoạn mã vσi ngú cảnh
(T¼p thanh ghi, Bë dếm chương trình, stack) khác nhau
Còn đưσc gQi là tiến trình nhẹ (LWP: Lightweight
50 /
Process) M®t tiến trình có ít nhất là m®t luồng
201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu

Lợi ích của lªp trình đa luồng

Tăng tính đáp ùng vσi ngưσi dùng


Cho phép chương trình vẫn thực hiện ngay khi m®t phần
đang chσ đσi (block) ho°c đang thực hiện tính toán tăng
cưσng
Ví dự trình duyệt Web (Web browser ) đa luồng
M®t luồng tưσng tác vσi ngưσi dùng
M®t luồng thực hiện nhiệm vự tải dú liệu

51 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu

Lợi ích của lªp trình đa luồng

Tăng tính đáp ùng vσi ngưσi dùng


Cho phép chương trình vẫn thực hiện ngay khi m®t phần
đang chσ đσi (block) ho°c đang thực hiện tính toán tăng
cưσng
Ví dự trình duyệt Web (Web browser ) đa luồng
M®t luồng tưσng tác vσi ngưσi dùng
M®t luồng thực hiện nhiệm vự tải dú liệu
Chia sẻ tài nguyên
Các luồng chia sẻ b® nhσ và tài nguyên của tiến trình chùa
nó Tốt cho các thuªt toán song song (sủ dựng chung các
CTDL) Trao đổi giúa các luồng thông qua b® nhσ phân chia
Cho phép m®t ùng dựng chùa nhiều luồng hoạt đ®ng trong
cùng không gian đàa ch¿

51 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu

Lợi ích của lªp trình đa luồng

Tăng tính đáp ùng vσi ngưσi dùng


Cho phép chương trình vẫn thực hiện ngay khi m®t phần
đang chσ đσi (block) ho°c đang thực hiện tính toán tăng
cưσng
Ví dự trình duyệt Web (Web browser ) đa luồng
M®t luồng tưσng tác vσi ngưσi dùng
M®t luồng thực hiện nhiệm vự tải dú liệu
Chia sẻ tài nguyên
Các luồng chia sẻ b® nhσ và tài nguyên của tiến trình chùa
nó Tốt cho các thuªt toán song song (sủ dựng chung các
CTDL) Trao đổi giúa các luồng thông qua b® nhσ phân chia
Cho phép m®t ùng dựng chùa nhiều luồng hoạt đ®ng trong
cùng không gian đàa ch¿
Tính kinh tế
Các thao tác khσi tạo, hủy bỏ và luân chuyển luồng ít tốn
kém Minh họa đưσc tính song song trên b® đσn VXL do
thσi gian luân chuyển CPU nhanh (Thực tế chỉ mët luồng
thực hi»n)
51 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu

Lợi ích của lªp trình đa luồng

Tăng tính đáp ùng vσi ngưσi dùng


Cho phép chương trình vẫn thực hiện ngay khi m®t phần
đang chσ đσi (block) ho°c đang thực hiện tính toán tăng
cưσng
Ví dự trình duyệt Web (Web browser ) đa luồng
M®t luồng tưσng tác vσi ngưσi dùng
M®t luồng thực hiện nhiệm vự tải dú liệu
Chia sẻ tài nguyên
Các luồng chia sẻ b® nhσ và tài nguyên của tiến trình chùa
nó Tốt cho các thuªt toán song song (sủ dựng chung các
CTDL) Trao đổi giúa các luồng thông qua b® nhσ phân chia
Cho phép m®t ùng dựng chùa nhiều luồng hoạt đ®ng trong
cùng không gian đàa ch¿
Tính kinh tế
Các thao tác khσi tạo, hủy bỏ và luân chuyển luồng ít tốn
kém Minh họa đưσc tính song song trên b® đσn VXL do
thσi gian luân chuyển CPU nhanh (Thực tế chỉ mët luồng
thực hi»n)
51 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu

Tiến trình ><


Luồng
Tiến Luồng
trìnhTiến trình có đoạn mã/dú
Luồng không có đoạn dú liệu
liệu/heap & các đoạn hay heap riêng
khác

52 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu

Tiến trình ><


Luồng
Tiến Luồng
trìnhTiến trình có đoạn mã/dú
Luồng không có đoạn dú liệu
liệu/heap & các đoạn hay heap riêng
khác
Luồng không đùng riêng mà
Phải có ít nhất m®t luồng trong nằm trong m®t tiến trình
mỗi tiến trình

52 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu

Tiến trình ><


Luồng
Tiến Luồng
trìnhTiến trình có đoạn mã/dú
Luồng không có đoạn dú liệu
liệu/heap & các đoạn hay heap riêng
khác
Luồng không đùng riêng mà
Phải có ít nhất m®t luồng trong nằm trong m®t tiến trình
mỗi tiến trình
Có thể tồn tại nhiều luồng trong
Các luồng trong phạm vi m®t tiến mỗt tiến trình. Luồng đầu là luồng
trình chia sẻ mã/dú liệu/heap, chính và sσ húu không gian stack
vào/ra nhưng có stack và tªp của tiến trình
thanh ghi riêng

52 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu

Tiến trình ><


Luồng
Tiến Luồng
trìnhTiến trình có đoạn mã/dú
Luồng không có đoạn dú liệu
liệu/heap & các đoạn hay heap riêng
khác
Luồng không đùng riêng mà
Phải có ít nhất m®t luồng trong nằm trong m®t tiến trình
mỗi tiến trình
Có thể tồn tại nhiều luồng trong
Các luồng trong phạm vi m®t tiến mỗt tiến trình. Luồng đầu là luồng
trình chia sẻ mã/dú liệu/heap, chính và sσ húu không gian stack
vào/ra nhưng có stack và tªp của tiến trình
thanh ghi riêng
Thao tác khσi tạo và luân
Thao tác khσi tạo, luân chuyển chuyển luồng không tốn kém
tiến trình tốn kém

52 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu

Tiến trình ><


Luồng
Tiến Luồng
trìnhTiến trình có đoạn mã/dú
Luồng không có đoạn dú liệu
liệu/heap & các đoạn hay heap riêng
khác
Luồng không đùng riêng mà
Phải có ít nhất m®t luồng trong nằm trong m®t tiến trình
mỗi tiến trình
Có thể tồn tại nhiều luồng trong
Các luồng trong phạm vi m®t tiến mỗt tiến trình. Luồng đầu là luồng
trình chia sẻ mã/dú liệu/heap, chính và sσ húu không gian stack
vào/ra nhưng có stack và tªp của tiến trình
thanh ghi riêng
Thao tác khσi tạo và luân
Thao tác khσi tạo, luân chuyển chuyển luồng không tốn kém
tiến trình tốn kém
Không gian điạ ch¿ chung,
Bảo vệ tốt do có không gian điạ cần phải bảo vệ
ch¿ riêng

52 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
1. Giσi thiệu

Tiến trình ><


Luồng
Tiến Luồng
trìnhTiến trình có đoạn mã/dú
Luồng không có đoạn dú liệu
liệu/heap & các đoạn hay heap riêng
khác
Luồng không đùng riêng mà
Phải có ít nhất m®t luồng trong nằm trong m®t tiến trình
mỗi tiến trình
Có thể tồn tại nhiều luồng trong
Các luồng trong phạm vi m®t tiến mỗt tiến trình. Luồng đầu là luồng
trình chia sẻ mã/dú liệu/heap, chính và sσ húu không gian stack
vào/ra nhưng có stack và tªp của tiến trình
thanh ghi riêng
Thao tác khσi tạo và luân
Thao tác khσi tạo, luân chuyển chuyển luồng không tốn kém
tiến trình tốn kém
Không gian điạ ch¿ chung,
Bảo vệ tốt do có không gian điạ cần phải bảo vệ
ch¿ riêng
Luồng kết thúc, stack của nó
Khi tiến trình kết thúc, các tài đưσc thu hồi
nguyên đưσc đòi lại và các
52 luồng
/ 201 phải kết thúc theo
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
2.2 Mô hình đa luồng

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

Luồng ngfời dùng và luồng nhȃn

Luồng mùc ngưσi dùng (User threads)


Đưσc cài đ°t bσi thư viện luồng tại mùc ngưσi
dùng
Thư viện hỗ trσ tạo, điều phối, quản lý luồng
Thao tác luồng đưσc thực hiện trong không gian ngưσi dùng
(nhân không biết gì về luồng ngưσi dùng nên không can
thi»p)
Tạo và quản lý luồng nhanh chóng
Nếu nhân đơn luồng ⇒M®t luồng đang chσ đσi vào ra có
thể làm cho toàn b® tiến trình phải đσi theo
Luồng mùc hệ thống (Kernel threads)
Đưσc hỗ trσ trực tiếp bσi HĐH
Nhân thực hiện tạo, lªp làch, quản lý luồng trong không
gian nhân
Hệ điều hành quản lý luồng:
Chªm trong tạo và quản lý luồng
M®t luồng chσ đσi vào ra, không ảnh hưσng tσi luồng khác
54 / 201 Trong môi trưσng đa VXL, nhân có thể điều phối các
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

Ánh xạ nhiều luồng mùc ngưσi


dùng tσi m®t luồng mùc hệ thống
Quản lý luồng đưσc thực hiện
trong không gian ngưσi dùng
Hiệu quả
Cho phép tạo nhiều luồng tùy ý
Toàn b® tiến trình sẽ bà khóa
nếu m®t luồng bà khóa
Không thể chạy song song trên các
máy nhiều vi xû lý (Chỉ mët luồng có
thể truy nh¼p nhân tại mët thσi
diểm)
Dùng trong hệ điều hành không hỗ
trσ luồng hệ thống
55 / 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 một-một

Ánh xạ mỗi luồng mùc ngưσi dùng tσi m®t luồng hệ


thống
Cho phép thực hiện luồng khác khi m®t luồng bà khóa
Cho phép chạy song song đa luồng trên máy nhiều vi xû

Tạo luồng mùc ngưσi dùng đòi hỏi tạo m®t luồng mùc
hệ thống tương ùng
Ảnh hưσng tσi hiệu năng của ùng dựng
56 / 201 Chi phi cao ⇒ Giσi hạn số luồng đưσc hệ thống hỗ trσ
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-nhiều

Nhiều luồng mùc ngưσi dùng ánh


xạ tσi m®t số nhỏ luồng mùc hệ
thống
Số lưσng luồng nhân có thể đưσc
xác đành theo máy ho°c theo ùng
dựng
VD: Đưσc cấp nhiều luồng nhân hơn
trên hệ thống nhiều VXL
Có đưσc ưu điểm của 2 mô hình
trên Cho phép tạo nhiều luồng
mùc ùng dựng theo yêu cầu
Các luồng nhân tương ùng có thể chạy
song song trên hệ nhiều VXL M®t
luồng bà khóa, nhân có thể cho
phép luồng khác thực hiện
57 / 201
Chương 2: Quản lý tiến trình
2. Luồng (Thread)
2.3 Cài đ°t luồng

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

Một số hàm với luồng trong WIN32 API

HANDLE CreateThread(. . .);


LPSECURITY_ATTRIBUTESlpThreadAttributes,
⇒Trỏ tσi cấu trúc an ninh: thẻ trả về có thể đưσc kế thøa?
DWORD dwStackSize,
⇒Kích thưσc ban đầu của stack cho luồng mσi
LPTHREAD_START_ROUTINE lpStartAddress,
⇒Trỏ tσi hàm đưσc thực hiện bσi luồng mσi
LPVOID lpParameter,
⇒Trỏ tσi các biến đưσc gûi tσi luồng mσi (tham số của hàm)
DWORD dwCreationFlags,
⇒Phương pháp tạo luồng
CREATE_SUSPENDED : Luồng σ trạng thái tạm ngøng
0: Luồng đưσc thực hiện ngay lªp tùc
LPDWORD lpThreadId
⇒Biến ghi nhªn đành danh luồng mσi
Kết quả trả về: Thẻ của luồng mσi ho°c giá trà NULL
nếu không tạo đưσc luồng mσi
59 / 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

Đưσc cài đ°t bσi


Mσ r®ng lσp Thread (Thread class)
Cài đ°t giao diện có thể thực thi đưσc (Runnable interface)
Đưσc quản lý bσi máy ảo Java (Java Virtual
Machine) Các trạng thái có thể

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

Cài đ°t bài toán Producer-Consumer sû


dựng khái ni»m luồng

Viết chương trǐnh trao đổi thông báo


giúa 2 máy (chat)

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

4 Tài nguyên găng và điều độ tiến


trình

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

3 Diều phối CPU


Các khái niệm cơ
bản Tiêu chuẩn điều
phối
Các thuªt toán điều phối CPU
Điều phối đa xû lý

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

Chu kỳ thțc hi»n CPU - I/O

Tiến trình là chuỗi luân phiên giúa


chu kỳ tính toán và chσ đσi vào/ra
Bắt đầu bσi chu kỳ tính
toán Tiếp theo chu kỳ đσi
vào/ra
Tính toán→ đσi vào/ra →
tính toán
→ đσi vào/ra → . . .
Kết thúc: Tính toán (yêu cầu
h» thống kết thúc thực hi»n)
Phân biệt các kiểu tiến trình
Dựa trên sự phân bổ thσi gian
cho các chu kỳ CPU & vào/ra
Tiến trình tính toán (CPU-bound
process) có vài chu kỳ CPU dài
Tiến trình vào ra (I/0-bound
process) có nhiều chu kỳ CPU
69 / 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

Bộ điều phối CPU

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 (,

hết thσi gian sủ dựng CPU: ngắt thσi gian)


3 Chuyển tø trạng thái chσ đσi sang trạng thái sắn sàng (hoàn

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

Diều phối trfng dụng và khȏng trfng dụng

Điều phối không trưng dựng


Tiến trình chiếm CPU cho tσi khi giải phóng bσi
Kết thúc nhiệm vự
Chuyển sang trạng thái chσ đσi
Không đòi hỏi phần cùng đ°c biệt (dồng
hồ ) Ví dự: DOS, Win 3.1, Macintosh
Điều phối trưng dựng
Tiến trình ch¿ đưσc phép thực hiện trong khoảng thσi gian
Kết thúc khoảng thσi gian đưσc đành nghĩa trưσc, ngắt thσi
gian xuất hiện, b® điều vªn (dispatcher ) đưσc kích hoạt để
quyết đành hồi phực lại tiến trình hay lựa chQn tiến trình
khác Bảo vệ CPU khỏi các tiến trình "dói-CPU"
Vấn đề dú liệu dùng chung
Tiến trình 1 đang cªp nhªt DL thì bà mất CPU
Tiến trình 2, đưσc giao CPU và đọc DL đang cªp nhªt
Ví dự: Hệ điều hành đa nhiệm WinNT, UNIX
71 / 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

3 Diều phối CPU


Các khái niệm cơ
bản Tiêu chuẩn điều
phối
Các thuªt toán điều phối CPU
Điều phối đa xû lý

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

Tiêu chuẩn điều phối I

Sť dụng CPU (Iσn nhất)


Mực đích của điều đ® là làm CPU hoạt đ®ng nhiều nhất có
thể Đ® sû dựng CPU thay đổi tø 40% (h» thống tải nh?) đến
90% (h» thống tải n¼ng ).
Thȏng lfợng (throughput) (Iσn nhất)
Số lưσng tiến trình hoàn thành trong m®t đơn và thσi gian
Các tiến trình dài: 1 tiến trình/giσ
Các tiến trình ngắn: 10 tiến trình/giây
Thời gian hoàn thành (Nhó nhất)
Khoảng thσi gian tø thσi điểm gûi đến hệ thống tσi khi
quá trình hoàn thành
Thσi gian chσ đσi để đưa tiến trình vào b®
nhσ Thσi gian chσ đσi trong hàng đσi sắn
sàng Thσi gian chσ đσi trong hàng đσi thiết

Thσi gian thực hiện thực tế
73 / 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

Tiȇu chuẩn điều phối II

Thời gian chờ đợi (Nhó nhất)


Tổng thσi gian chσ trong hàng đσi sẳn sàng (Giải thu¼t diều
dë CPU không ảnh hưσng tσi các tiến trình dang thực hi»n
hay dang dσi thiết bà vào ra)
Thời gian đáp ťng (Nhó nhất)
Tø lúc gûi câu hỏi cho tσi khi câu trả lσi đầu tiên đưσc tạo ra
Tiến trình có thể tạo kết quả ra tøng phần
Tiến trình vẫn tiếp tực tính toán kết quả mσi trong hi kết quả
cũ đưσc gûi tσi ngưσi dùng

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

3 Diều phối CPU


Các khái niệm cơ
bản Tiêu chuẩn điều
phối
Các thuªt toán điều phối CPU
Điều phối đa xû lý

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

Dến trfớc phục vụ trfớc (FCFS: First Come, First Served)

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

Cȏng vi»c ngắn trfớc (SJF: Shortest Job First)

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

Diều phối có fu tiȇn (Priority Scheduling)

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

Vòng tròn (RR: Round Robin Scheduling)

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

Lưσng tû thσi gian τ = 4 ⇒ twait =


5.66 Vấn đề: Lựa chQn lưσng tû thσi
gian τ
τ lσn: FCFS
τ nhỏ: Hãy phải luân chuyển CPU
79 / 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

Diều phối hàng đợi đa mťc (Multilevel Queue Scheduling)

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

Hàng đợi đa mťc có phản hồi (Multilevel Feeedback Queue)

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ý

3 Diều phối CPU


Các khái niệm cơ
bản Tiêu chuẩn điều
phối
Các thuªt toán điều phối CPU
Đ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 đề

Điều phối phùc tạp hơn so vσi trưσng hσp có m®t


VXL Vấn đề chia sẻ tải
Mỗi VXL có m®t hàng đσi sắn sàng riêng
Tồn tại VXL rảnh rỗi vσi hàng đσi rỗng trong khi VXL khác
phải tính toán nhiều
Hàng đσi sắn sàng dùng chung
Vấn đề dùng chung CTDL, phải điều đ®
Đa xû lý không đối xùng
Ch¿ có m®t VXL sû dựng hàng
đσi Hủy bỏ vấn đề dùng chung
CTDL

83 / 201
Chương 2: Quản lý tiến trình
3. Điều phối CPU

Bài tªp

Viết chương trǐnh mô phỏng hàng đñi


đa mùc có phản hồi

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)

3 Diều phối CPU


4 Tài nguyȇn găng và điều độ tiến
trình
5 Bế tắc và xť lý bế
tắc

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

Khái niệm tài nguyên găng


Phương pháp khóa trong
Phương pháp kiểm tra và xác
lªp Kỹ thuªt đèn báo
Ví dự về đồng b® tiến
trình Công cự điều đ® cấp
cao

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

Luồng song song


#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;
}
89 / 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

Luồng song song

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

Luồng song song

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

Luồng song song

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

Luồng song song

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

Luồng song song

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++ Counter++ Counter−−


Load R1,
Counter Inc R1
Store Counter,
R1

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++ Counter++ Counter−−


Load R1,
Counter Inc R1 Load R1,Counter
Store Counter,
R1

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++ Counter++ Counter−−


Load R1,
Counter Inc R1 Load R1,Counter
Store Counter, Load R2,Counter
R1

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++ Counter++ Counter−−


Load R1,
Counter Inc R1 Load R1,Counter
Store Counter, Load R2,Counter
R1
Inc R1

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++ Counter++ Counter−−


Load R1,
Counter Inc R1 Load R1,Counter
Store Counter, Load R2,Counter
R1
Inc R1
Dec R2

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

Counter++ Counter++ Counter−−


Load R1,
Counter Inc R1 Load R1,Counter
Store Counter, Load R2,Counter
R1
Inc R1
Dec R2
Store Counter, R1
Counter−

Load R2,
Counter Dec R2 R1 = 6 t R2 = 4
Store Counter, Counter=6
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++ Counter++ Counter−−


Load R1,
Counter Inc R1 Load R1,Counter
Store Counter, Load R2,Counter
R1
Inc R1
Dec R2
Store Counter, R1
Counter− Store Counter, R2

Load R2,
Counter Dec R2 R1 = 6 t R2 = 4
Store Counter, Counter=4
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

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

Diều ki»n cạnh tranh (Race condition)

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

Doạn găng (Critical section)

Đoạn găng (chő hẹp) là đoạn chương trình sủ


dựng tài nguyên găng (thực hi»n truy nh¼p và
thao tác trên dũ li»u dùng chung )
Khi có nhiều tiến trình sủ dựng tài nguyên găng
thì phải điều đ®
Mực đích: đảm bảo không có quá m®t tiến trình nằm
trong đoạ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

Yȇu cầu của chfơng trình điều độ

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

Có 2 tiến trình P1&P2 thực hiện đồng thσi


Các tiến trình dùng chung m®t tài nguyên găng
Mỗi tiến trình đ°t đoạn găng σ đầu, tiếp theo là phần còn
lại Tiến trình phải xin phép trưσc khi vào đoạn găng {phần
vào} Tiến trình khi thoát khỏi đoạn găng thực hiện {phần ra}
Cấu trúc tổng quát của m®t tiến trình
do(
Phần vào
(Ooạn găng của tiến trình}
Phần ra
(Phần còn lại của tiến trình}
}while(1);

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

Phȃn loại các phfơng pháp

Các công cự cấp thấp


Phương pháp khóa trong
Phương pháp kiểm tra và xác lªp
Kỹ thuªt đèn báo
Các công cự cấp cao
Monitor

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

4 Tài nguyȇn găng và điều độ tiến


trình
Khái niệm tài nguyên găng
Phương pháp khóa trong
Phương pháp kiểm tra và xác
lªp Kỹ thuªt đèn báo
Ví dự về đồng b® tiến
trình Công cự điều đ® cấp
cao

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

Thuªt toán điều độ

Các biến dùng chung: Boolean C1,C2 (Các


khóa) Khσi tạo Ci = Cj = false

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

Thuªt toán điều độ

Các biến dùng chung: Boolean C1,C2 (Các


khóa) Khσi tạo Ci = Cj = false

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

Thuªt toán điều độ

Các biến dùng chung: Boolean C1,C2 (Các


khóa) Khσi tạo Ci = Cj = false

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

Oiều đ® chưa hσp lý


Hai t/trình yêu cầu tài nguyên tại m®t thσi điểm
Vấn đề loại trø lẫn nhau (trưσng hσp 1
) Vấn đề tiến triển (trưσng hσp 2 )

Nguyên nhân : Do tách rσi giũa


Kiểm tra quyền vào đoạn găng
Xác lªp quyền sủ dựng tài nguyên găng

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

Thuªt toán Dekker

Sû dựng biến turn để ch¿ ra tiến trình đưσc quyền ưu


tiên Process P1 Process P2
do( do(
C1 ← true; C2 ← true;
while(C2==true)( while(C1==true)(
if(turn == 2)( if(turn == 1)(
C1 ← false; C2 ← false;
while(turn ==2); while(turn ==1);
C1 ← true; C2 ← true;
} }
} }
(Ooạn găng của tiến trình P1} (Ooạn găng của tiến trình P2}
turn = 2; turn = 1;
C1 ← false; C2 ← false;

(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

Oiều đ® hσp lý cho mQi trưσng hσp

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)

4 Tài nguyȇn găng và điều độ tiến


trình
Khái niệm tài nguyên găng
Phương pháp khóa trong
Phương pháp kiểm tra và xác
lªp Kỹ thuªt đèn báo
Ví dự về đồng b® tiến
trình Công cự điều đ® cấp
cao

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

Sû dựng sự hỗ trσ tø phần cùng


Phần cùng cung cấp các câu lệnh xû lý không tách rσi
Kiểm tra và thay đổi n®i dung của m®t word
boolean TestAndSet(boolean &target)
( boolean rv = target;
target = true;
return rv;
}
Hoán đổi n®i dung của 2 word khác
nhau void Swap(boolean &a, boolean &b) (
boolean temp = a;
a = b;
b = temp;
}
Xû lý không tách rσi (atomically )
Khối lệnh không thể bà ngắt trong khi đang thực
106 / 201 hiện
Oưσc gQi đồng thσi, sẽ đưσc thực hiện theo thù tự bất
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)

Thuªt toán với l»nh TestAndSet

Biến phân chia Boolean: Lock: trạng thái của tài


nguyên:
Bà khóa (Iock=true)
Tự do (Iock=false)
Khσi tạo: Iock = false ⇒ Tài nguyên tự
do Thuªt toán cho tiến trình Pi
do(
while(TestAndSet(Lock));
(Ooạn găng của tiến trình}
Lock = false;
(Phần còn lại của tiến

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)

Thuªt toán với l»nh Swap

Biến phân chia Lock cho biết trạng thái tài


nguyên Biến đàa phương cho mỗi tiến trình: Key:
Boolean Khσi tạo: Iock = false ⇒ Tài nguyên tự
do
Thuªt toán cho tiến trình Pi
do(
key = true;
while(key == true)
swap(Lock,
Key); găng của tiến trình}
(Ooạn
Lock = false;
(Phần còn lại của tiến

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

Oơn giản, không phùc tạp khi số tiến trình và số đoạn


găng tăng lên
Các tiến trình phải chσ đσi tích cực trưσc khi vào đoạn
găng
Luôn kiểm tra xem tài nguyên găng đã đưσc giải phóng
chưa
⇒ Sû dựng Processor không hiệu quả
Không đảm bảo yêu cầu chσ đσi húu hạn
Tiến trình đưσc vào đoạn găng tiếp theo, sẽ phự thu®c
thσi điểm giải phóng tài nguyên của tiến trình đang chiếm
giú
⇒ Cần khắc phực

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)

Thuªt toán cho nhiều tiến trình

Nguyȇn tắc: Tiến trình khi ra khỏi đoạn găng sẽ tìm


tiến trình đang đσi để trao tài nguyên cho nó
Dùng biến toàn cực Waiting[n] lưu trạng thái mỗi tiến
trình Sơ đồ cho tiến trình Pi
do(
Waiting[i] = true;
While(Waiting[i] && TestAndSet(Lock)) ;
Waiting[i] = False;
(Ooạn găng của tiến trình}
j = (i+1) % N;
while ( (j !=i) && (! Waiting[j])) j = (j+1) % N;
if (j == i) Lock = false;
else Waiting[j] = false;
(Phần còn lại của tiến trình}
}while(1);
110 / 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

4 Tài nguyȇn găng và điều độ tiến


trình
Khái niệm tài nguyên găng
Phương pháp khóa trong
Phương pháp kiểm tra và xác
lªp Kỹ thuªt đèn báo
Ví dự về đồng b® tiến
trình Công cự điều đ® cấp
cao

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

Dèn báo (Semaphore)

Là m®t biến nguyên S, khσi tạo bằng khả năng phực vự


của tài nguyên nó điều đ®
Số tài nguyên có thể phực vự tại m®t thσi điểm (VD 3 máy
in) Số đơn và tài nguyên có sắn (VD 10 chő trống trong buffer
)
Ch¿ có thể thay đổi giá trà bσi 2 thao tác cơ bản P và V
Thao tác P(S) (wait(S))
wait(S) (
while(S ≤ 0) no-op;
S − −;
}
Thao tác V(S) (signal(S))
signal(S) (
S + +;
}
Các thao tác P(S) và V(S) xû lý không tách rσi
Oèn báo là công cự điều đ® tổng quát
112 / 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

Sť dụng đèn báo I

Oiều đ® nhiều tiến trình qua đoạn găng


Sû dựng biến phân chia mutex kiểu
Semaphore Khσi tạo mutex bằng 1
Thuªt toán cho tiến trình Pi

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

Sť dụng đèn báo II

Oiều đ® thù tự thực hiện bên trong các tiến trình


Hai tiến trình P1 và P2 thực hiện đồng thσi
P1 chùa lệnh S1, P2 chùa lệnh S2 .

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

Hủy bỏ chờ đợi tích cțc

Sû dựng 2 thao tác đơn giản


block() Ngøng tạm thσi tiến trình đang thực hiện
wakeup(P) Thực hiện tiếp t/trình P døng bσi lệnh block()
Khi tiến trình gQi P(S) và đèn báo S không dương
Tiến trình phải døng bσi gQi tσi câu lệnh block()
Lệnh block() đ°t tiến trình vào hàng đσi gắn vσi đèn báo S
Hệ thống lấy lại CPU giao cho tiến trình khác (diều phối
CPU) Tiến trình chuyển sang trạng thái chσ đσi (waiting )
Tiến trình nằm trong hàng đσi đến khi tiến trình khác thực
hiện thao tác V(S) trên cùng đèn báo S
Tiến trình đưa ra lσi gQi V(S)
Lấy m®t tiến trình trong hàng đσi ra (nếu có)
Chuyển tiến trình lấy ra tø trạng thái chσ đσi sang trạng thái
sắn sàng và đ°t lên hàng đσi sắn sàng bσi gQi tσi
wakeup(P) Tiến trình mσi sắn sàng có thể trưng dựng CPU
tø tiến trình đang thực hiên nếu thuªt toán điều phối CPU
115 / 201 cho phép
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

Cài đ°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

S.Ptr PCB2 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)

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

Dễ dàng áp dựng cho các hệ thống phùc


tạp Không tồn tại hiện tưσng chσ đσi tích
cực Hiệu quả sû dựng phự thu®c vào ngưσi
dùngP(S) V(S) P(S)
(Ooạn găng} (Ooạn găng} (Ooạn găng}
V(S) P(S) P(S)
Oiều đ® đúng Nhầm và trí Nhầm lệnh
Các phép xû lý P(S) và V(S) là không phân chia đưσc
⇒bản thân P(S) và V(S) cũng là 2 tài nguyên găng
⇒Cũng cần điều đ®.
Hệ thống m®t VXL: Cấm ngắt khi thực hiện wait(),
signal() Hệ thống nhiều vi xû lý
Không thể cấm ngắt trên VXL khác
Có thể dùng phưσng pháp khoa trong ⇒ Hiện tưσng chσ
đσi tích cực, nhưng thσi gian chσ đσi ngắn (10 l»nh)
118 / 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

Dối tfợng Semaphore trong WIN32 API

CreateSemaphore(. . .) : Tạo m®t Semaphore


LPSECURITY_ATTRIBUTES lpSemaphoreAttributes
⇒ Trỏ tσi cấu trúc an ninh, thẻ trả về đưσc kế thøa?
LONG InitialCount,
⇒ Giá trà khσi tạo cho đối tưσng Semaphore
LONG MaximumCount,
⇒ Giá trà lσn nhất của đối tưσng Semaphore
LPCTSTR lpName
⇒ Tên của đối tưσng Semaphore
Ví dự CreateSemaphore(NULL,0,1,NULL);
Trả về thẻ (HANDIE ) của đối tưσng Semaphore ho°c
NULL WaitForSingleObject(HANDLE h, DWORD time)
ReleaseSemaphore (. . .)
HANDLE hSemaphore, ⇐Thẻ của đối tưσng Semaphore
LONG lReleaseCount, ⇐Giá trà đưσc tăng lên,
LPLONG lpPreviousCount ⇐Giá trà trưσc đó
Ví dự: ReleaseSemaphore(S, 1, NUII);
119 / 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
#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>

#define Max 5000000


#define numThreads 10
i n t Counter;
HANDLE S;

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);

p r i n t f ( " \ n K e t qua : %d\n", Counter);


r e t u r n 0;
}
123 / 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

4 Tài nguyȇn găng và điều độ tiến


trình
Khái niệm tài nguyên găng
Phương pháp khóa trong
Phương pháp kiểm tra và xác
lªp Kỹ thuªt đèn báo
Ví dự về đồng b® tiến
trình Công cự điều đ® cấp
cao

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

Một số bài toán

Ngưσi sản xuất-ngưσi tiêu thự (Producer-Consumer )

Triết gia ăn tối (Dining Philosophers)

Ngưσi đQC Và biên tªp viên (Readers-Writers)

Ngưσi thσ cắt tóc ngủ gªt (Sleeping Barber )

Bathroom Problem

Oồng b® theo Barriers

...

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

Vấn đề sản xuất-tiȇu thụ 1

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

Vấn đề sản xuất-tiȇu thụ 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 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

Vấn đề sản xuất-tiȇu thụ 2

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

Vấn đề sản xuất-tiȇu thụ 2

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

Vấn đề sản xuất-tiȇu thụ 3

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

Vấn đề sản xuất-tiȇu thụ 3

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

Vấn đề sản xuất-tiȇu thụ 3

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

Vấn đề sản xuất-tiȇu thụ 3

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

Vấn đề sản xuất-tiȇu thụ 3

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

Vấn đề sản xuất-tiȇu thụ 3

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

Vấn đề sản xuất-tiȇu thụ 3

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

Vấn đề sản xuất-tiȇu thụ 3

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

Vấn đề sản xuất-tiȇu thụ 3

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 = 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

Vấn đề sản xuất-tiȇu thụ 3

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 = 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

Vấn đề sản xuất-tiȇu thụ 3

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 = 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

Vấn đề sản xuất-tiȇu thụ 3

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 = 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

Vấn đề sản xuất-tiȇu thụ 3

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 = -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

Vấn đề sản xuất-tiȇu thụ 3

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 = 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

Vấn đề sản xuất-tiȇu thụ 3

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 = 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

Vấn đề sản xuất-tiȇu thụ 4

Vấn đề: Khi có nhiều Producers và Consumers, các biến


IN, OUT trσ thành tài nguyên găng giúa chúng
Giải quyết: Dùng đèn báo thù 3 (mutex ← 1 ) để đồng
b® giúa các tiến trình cùng loại

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

Vấn đề sản xuất-tiȇu thụ 4

Vấn đề: Khi có nhiều Producers và Consumers, các biến


IN, OUT trσ thành tài nguyên găng giúa chúng
Giải quyết: Dùng đèn báo thù 3 (mutex ← 1 ) để đồng
b® giúa các tiến trình cùng loại

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

Vấn đề sản xuất-tiȇu thụ 4

Vấn đề: Khi có nhiều Producers và Consumers, các biến


IN, OUT trσ thành tài nguyên găng giúa chúng
Giải quyết: Dùng đèn báo thù 3 (mutex ← 1 ) để đồng
b® giúa các tiến trình cùng loại

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

Ngfời đọc và biȇn tªp viȇn

Nhiều tiến trình (Readers) cùng truy nhªp m®t cơ sσ dũ


liệu (CSDL)
M®t số tiến trình (Writers) cªp nhªt cơ sσ dũ liệu
Cho phép số lưσng tùy ý các tiến trình Readers cùng truy
nhªp CSDL
Oang tồn tại m®t tiến trình Reader truy cªp CSDL,
mQi tiến trình Readers khác mσi xuất hiện đều đưσc
truy cªp CSDL (Tiến trình Writers phải xếp hàng chσ
dσi )
Ch¿ cho phép m®t tiến trình Writers cªp nhªt CSDL tại
m®t thσi điểm.
Vấn đề không trưng dựng. Các tiến trình σ trong đoạn
găng mà không bà ngắt

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

Ngfời đọc và biȇn tªp viȇn

Nhiều tiến trình (Readers) cùng truy nhªp m®t cơ sσ dũ


liệu (CSDL)
M®t số tiến trình (Writers) cªp nhªt cơ sσ dũ liệu
Cho phép số lưσng tùy ý các tiến trình Readers cùng truy
nhªp CSDL
Oang tồn tại m®t tiến trình Reader truy cªp CSDL,
mQi tiến trình Readers khác mσi xuất hiện đều đưσc
truy cªp CSDL (Tiến trình Writers phải xếp hàng chσ
dσi )
Ch¿ cho phép m®t tiến trình Writers cªp nhªt CSDL tại
m®t thσi điểm.
Vấn đề không trưng dựng. Các tiến trình σ trong đoạn
găng mà không bà ngắt
CÀI DT BÀI TOÁN !!
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

Ngfời thợ cắt tóc ngủ gªt

N ghế đσi dành cho khách hàng


M®t ngưσi thσ ch¿ có thể cắt
tóc cho m®t khách hàng tại
m®t thσi điểm
Không có khách hàng đσi, thσ
cắt tóc ngủ
Khi m®t khách hàng tσi
Nếu thσ cắt tóc đang
ngủ⇒Oánh thùc anh ta dªy làm
việc
Nếu thσ cắt tóc đang làm việc
Không còn ghế đσi trống ⇒
bỏ đi
Còn ghế đσi trống⇒ Ngồi đσi

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

Ngfời thợ cắt tóc ngủ gªt

N ghế đσi dành cho khách hàng


M®t ngưσi thσ ch¿ có thể cắt
tóc cho m®t khách hàng tại
m®t thσi điểm
Không có khách hàng đσi, thσ
cắt tóc ngủ
Khi m®t khách hàng tσi
Nếu thσ cắt tóc đang
ngủ⇒Oánh thùc anh ta dªy làm
việc
Nếu thσ cắt tóc đang làm việc
Không còn ghế đσi trống ⇒
bỏ đi
Còn ghế đσi trống⇒ Ngồi đσi
TÌM HIỂU VÀ CÀI DT
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 DT 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

Các tiến trình hưσng tσi m®t Ba-ri-e


chung

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

Các tiến trình hưσng tσi m®t Ba-ri-e chung


Khi đạt tσi Ba-ri-e, tất cả các tiến trình đều bà block
ngoại trø tiến trình đến cuối cùng

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

Các tiến trình hưσng tσi m®t Ba-ri-e chung


Khi đạt tσi Ba-ri-e, tất cả các tiến trình đều bà block
ngoại trø tiến trình đến cuối cùng
Khi tiến trình cuối tσi, đánh thùc tất cả các tiến trình
đang bà
133 / block và cùng vưσt qua Ba-ri-e
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 tạo phȃn tť H2O

Có 2 kiểu tiến trình (luồng): oxygen and hydrogen


Oể kết hσp các tiến trình thành m®t phân tû nưσc, cần
m®t Ba-ri-e để các tiến trình phải đσi cho tσi khi m®t
phân tû nưσc sắn sàng đưσc tạo ra.
Khi mỗi tiến trình vưσt qua Ba-ri-e, nó phải kích hoạt liên
kết. Tất cả các tiến trình trong cùng m®t phân tû nưσc phải
tạo liên kết, trưσc khi m®t tiến trình của phân tû nưσc khác
gQi tσi thủ tực tạo liên kết

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 tạo phȃn tť H2O

Có 2 kiểu tiến trình (luồng): oxygen and hydrogen


Oể kết hσp các tiến trình thành m®t phân tû nưσc, cần
m®t Ba-ri-e để các tiến trình phải đσi cho tσi khi m®t
phân tû nưσc sắn sàng đưσc tạo ra.
Khi mỗi tiến trình vưσt qua Ba-ri-e, nó phải kích hoạt liên
kết. Tất cả các tiến trình trong cùng m®t phân tû nưσc phải
tạo liên kết, trưσc khi m®t tiến trình của phân tû nưσc khác
gQi tσi thủ tực tạo liên kết

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

Bài toán tạo phȃn tť H2O

Có 2 kiểu tiến trình (luồng): oxygen and hydrogen


Oể kết hσp các tiến trình thành m®t phân tû nưσc, cần
m®t Ba-ri-e để các tiến trình phải đσi cho tσi khi m®t
phân tû nưσc sắn sàng đưσc tạo ra.
Khi mỗi tiến trình vưσt qua Ba-ri-e, nó phải kích hoạt liên
kết. Tất cả các tiến trình trong cùng m®t phân tû nưσc phải
tạo liên kết, trưσc khi m®t tiến trình của phân tû nưσc khác
gQi tσi thủ tực tạo liên kết

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

Bài toán tạo phȃn tť H2O

Có 2 kiểu tiến trình (luồng): oxygen and hydrogen


Oể kết hσp các tiến trình thành m®t phân tû nưσc, cần
m®t Ba-ri-e để các tiến trình phải đσi cho tσi khi m®t
phân tû nưσc sắn sàng đưσc tạo ra.
Khi mỗi tiến trình vưσt qua Ba-ri-e, nó phải kích hoạt liên
kết. Tất cả các tiến trình trong cùng m®t phân tû nưσc phải
tạo liên kết, trưσc khi m®t tiến trình của phân tû nưσc khác
gQi tσi thủ tực tạo liên kết

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

Bài toán tạo phȃn tť H2O

Có 2 kiểu tiến trình (luồng): oxygen and hydrogen


Oể kết hσp các tiến trình thành m®t phân tû nưσc, cần
m®t Ba-ri-e để các tiến trình phải đσi cho tσi khi m®t
phân tû nưσc sắn sàng đưσc tạo ra.
Khi mỗi tiến trình vưσt qua Ba-ri-e, nó phải kích hoạt liên
kết. Tất cả các tiến trình trong cùng m®t phân tû nưσc phải
tạo liên kết, trưσc khi m®t tiến trình của phân tû nưσc khác
gQi tσi thủ tực tạo liên kết

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

Bài toán tạo phȃn tť H2O

Có 2 kiểu tiến trình (luồng): oxygen and hydrogen


Oể kết hσp các tiến trình thành m®t phân tû nưσc, cần
m®t Ba-ri-e để các tiến trình phải đσi cho tσi khi m®t
phân tû nưσc sắn sàng đưσc tạo ra.
Khi mỗi tiến trình vưσt qua Ba-ri-e, nó phải kích hoạt liên
kết. Tất cả các tiến trình trong cùng m®t phân tû nưσc phải
tạo liên kết, trưσc khi m®t tiến trình của phân tû nưσc khác
gQi tσi thủ tực tạo liên kết

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

Bài toán tạo phȃn tť H2O

Có 2 kiểu tiến trình (luồng): oxygen and hydrogen


Oể kết hσp các tiến trình thành m®t phân tû nưσc, cần
m®t Ba-ri-e để các tiến trình phải đσi cho tσi khi m®t
phân tû nưσc sắn sàng đưσc tạo ra.
Khi mỗi tiến trình vưσt qua Ba-ri-e, nó phải kích hoạt liên
kết. Tất cả các tiến trình trong cùng m®t phân tû nưσc phải
tạo liên kết, trưσc khi m®t tiến trình của phân tû nưσc khác
gQi tσi thủ tực tạo liên kết

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 tạo phȃn tť H2O

Có 2 kiểu tiến trình (luồng): oxygen and hydrogen


Oể kết hσp các tiến trình thành m®t phân tû nưσc, cần
m®t Ba-ri-e để các tiến trình phải đσi cho tσi khi m®t
phân tû nưσc sắn sàng đưσc tạo ra.
Khi mỗi tiến trình vưσt qua Ba-ri-e, nó phải kích hoạt liên
kết. Tất cả các tiến trình trong cùng m®t phân tû nưσc phải
tạo liên kết, trưσc khi m®t tiến trình của phân tû nưσc khác
gQi tσi thủ tực tạo liên kết

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

Vấn đề triết gia ăn tối

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

Vấn đề triết gia ăn tối

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

5 triết gia ăn tối quanh m®t bàn


tròn Trưσc mỗi triết gia là m®t
đĩa mì Giúa 2 đĩa kề nhau là m®t
cái dĩa (fork)
Các triết gia thực hiện luân phiên, liên
tực 2 việc :Ǎn và Nghĩ
Mỗi triết gia cần 2 cái dĩa để ăn
Ch¿ lấy m®t dĩa tại m®t thσi điểm
Cái bên trái rồi tσi cái bên phải
Ăn xong, triết gia để dĩa vào và trí cũ

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

Vấn đề triết gia ăn tối

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

5 triết gia ăn tối quanh m®t bàn


tròn Trưσc mỗi triết gia là m®t
đĩa mì Giúa 2 đĩa kề nhau là m®t
cái dĩa (fork)
Các triết gia thực hiện luân phiên, liên
tực 2 việc :Ǎn và Nghĩ
Mỗi triết gia cần 2 cái dĩa để ăn
Ch¿ lấy m®t dĩa tại m®t thσi điểm
Cái bên trái rồi tσi cái bên phải
Ăn xong, triết gia để dĩa vào và trí cũ

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

Vấn đề triết gia ăn tối: Phfơng pháp đơn giản

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

Vấn đề triết gia ăn tối: Phfơng pháp đơn giản

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

Vấn đề triết gia ăn tối: Phfơng pháp đơn giản

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

Vấn đề triết gia ăn tối: Phfơng pháp đơn giản

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

Vấn đề triết gia ăn tối: Giải pháp 1

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

Vấn đề triết gia ăn tối: Giải pháp 1

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

Vấn đề triết gia ăn tối: Giải pháp 1

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

Vấn đề triết gia ăn tối: Giải pháp 2

Thù tự lấy dîa của các triết gia khác


nhau Triết gia số hiệu chắn lấy dîa trái
trưσc Triết gia số hiệu lẻ lấy dîa phải
trưσc

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

Vấn đề triết gia ăn tối: Giải pháp 2

Thù tự lấy dîa của các triết gia khác


nhau Triết gia số hiệu chắn lấy dîa trái
trưσc Triết gia số hiệu lẻ lấy dîa phải
trưσc
Thuªt toán cho
do(Triết gia Pi
j = i%2
wait(fork[(i + j)%5])
wait(fork[(i+1 - j)% 5]);
( Ăn}
signal(fork[(i+1 - j)%
5]); signal((i + j)%5);
(Nghî}
} while (1);

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

Vấn đề triết gia ăn tối: Giải pháp 2

Thù tự lấy dîa của các triết gia khác


nhau Triết gia số hiệu chắn lấy dîa trái
trưσc Triết gia số hiệu lẻ lấy dîa phải
trưσc
Thuªt toán cho
do(Triết gia Pi
j = i%2
wait(fork[(i + j)%5])
wait(fork[(i+1 - j)% 5]);
( Ăn}
signal(fork[(i+1 - j)%
5]); signal((i + j)%5);
(Nghî}
} while (1);
Giải quyết đưσc vấn đề bế
138 /
tắc
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

Vấn đề triết gia ăn tối: Một số giải pháp khác

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

Vấn đề triết gia ăn tối: Một số giải pháp khác

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]);

Khó cài đ°t đèn báo đồng


thσi
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

Vấn đề triết gia ăn tối: Một số giải pháp khác

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]);

Khó cài đ°t đèn báo đồng thσi


Giải pháp đề xuất bσi Tanenbaum (Tanenbaum
139 /
2001)
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

Vấn đề triết gia ăn tối: Một số giải pháp khác

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]);

Khó cài đ°t đèn báo đồng thσi


Giải pháp đề xuất bσi Tanenbaum (Tanenbaum
139 /
2001) Các công cự điều đ® cấp cao
201
(http://www.codinghorror.com/blog/2008/08/deadlocked.html )
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

4 Tài nguyȇn găng và điều độ tiến


trình
Khái niệm tài nguyên găng
Phương pháp khóa trong
Phương pháp kiểm tra và xác
lªp Kỹ thuªt đèn báo
Ví dự về đồng b® tiến
trình Công cự điều đ® cấp
cao

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

Kỹ thuªt đèn báo là cơ chế hiệu quả trong điều đ® tiến


trình Sû dựng đèn báo (công cự cấp thấp)
Ngưσi dùng phải biết về tài nguyên để điều đ®
Có phải tài nguyên găng không?
O°t các câu lệnh điều đ® trong chương trình
⇒Nếu sû dựng nhầm có thể dẫn tσi kết quả sai, khó gσ rối

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

Kỹ thuªt đèn báo là cơ chế hiệu quả trong điều đ® tiến


trình Sû dựng đèn báo (công cự cấp thấp)
Ngưσi dùng phải biết về tài nguyên để điều đ®
Có phải tài nguyên găng không?
O°t các câu lệnh điều đ® trong chương trình
⇒Nếu sû dựng nhầm có thể dẫn tσi kết quả sai, khó gσ rối
Nhªn biết và điều đ® tài nguyên găng: trách nhiệm của
hệ thống
Công cự thưσng
dùng Vùng găng
Monitor

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

monitor monitorName( Là m®t kiểu dú liệu đ°c biệt,


Khai báo các biến dùng đưσc đề nghà bσi HOARE 1974
chung procedure P1(. . .)( Bao gồm các thủ tực, dú liệu
... cực b®, đoạn mã khσi tạo
}
Các tiến trình ch¿ có thể truy
...
nhªp tσi các biến bσi gQi tσi các
procedure Pn(. . .)(
thủ tực trong Monitor
...
} Tại m®t thσi điểm ch¿ có m®t
tiến trình đưσc quyền sû dựng
Monitor
(
Tiến trình khác muốn sû
Mã khσi tạo dựng, phải chσ đσi
}
Cho phép các tiến trình đσi
}
trong Monitor
Cú pháp của Sû dựng các biến điều
;
Monitor
143 / 201 kiện (condition variable)
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


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

Biến điều ki»n

Thực chất là tên của m®t hàng


đσi Khai báo: condition x, y;
Các biến điều khiển ch¿ có thể
đưσc sû dựng vσi 2 thao tác
wait() Oưσc gQi bσi các thủ tực của Monitor (Cú
pháp:x.wait() ho¼c wait(x)) cho phép tiến trình
đưa ra lσi gQi bà tạm døng (block) cho tσi khi
đưσc m®t tiến trình khác kích hoạt bσi gQi tσi
signal()
signal() Oưσc gQi bσi các thủ tực của Monitor (Cú
pháp: x.signal() ho¼c signal(x)) kích hoạt chính
xác m®t tiến trình đang đσi tại biến điều kiện
x (nằm trong hàng dσi x ) ra tiếp tực hoạt
đ®ng. Nếu không có tiến trình nào đang đσi,
thao tác không có hiệu lực (bà bó qua)
145 / 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


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

Sť dụng Monitor: một tài nguyȇn


chung
Monitor
Resource{ Condition
Nonbusy; Boolean
Busy
/ / - - Phần dành ngưòi dùng - - Cấu trúc tiến
void Acquire(){ trình
while(1)
i f ( b u s y ) Nonbusy.wait(); (
busy=true; . Resource.Acquire()
..
}
void Release() (Sû dựng tài
{ busy=false nguyên}
Resource.Release()
signal(Nonbusy) ..
} } .
/ / - - - - Phần khỏi t ạ o - - - -
busy= f a l s e ;
Nonbusy = Empty;
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

Sť dụng Monitor: Bài toán Producer -


Consumer
Monitor
ProducerConsumer M;
ProducerConsumer{ Conditi
on F u l l , Empty; i n t
Producer
Counter ;
void Put(Item) while(1)(
{ if(Counter=N) Item =Sản phẩm
Full.wait(); mσi M.Put(Item)
{Đ°t Item vào Buffer}; ...
Counter++; }
if(Counter=1)Empty.signal()
}
void Get(Item) Consume
{ if(Counter=0) rwhile(1)(
Empty.wait() M.Get(&Item)
{Lấy Item t à Buffer}; (Sû dựng Msg}
Co u n t e r- -;
...
if(Counter=N-1 ) F u l l . s i g n a l ( )
} }
148 / 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

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)

3 Diều phối CPU


4 Tài nguyȇn găng và điều độ tiến
trình
5 Bế tắc và xť lý bế
tắc

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ụ

P(S1) Tiến trình P1 Tiến trình P2


P(S2)
(Sû dựng R1&R2}
V (S1)
V (S2)
Tiến trình P1
P(S1)
P(S2)
(Sû dựng R1&R2}
V (S1) t
V (S2)
Tiến trình P2
S1 = 1 S2 = 1
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ụ

P(S1) Tiến trình P1 Tiến trình P2


P(S2)
P(S1)
(Sû dựng R1&R2}
V (S1)
V (S2)
Tiến trình P1
P(S1)
P(S2)
(Sû dựng R1&R2}
V (S1) t
V (S2)
Tiến trình P2
S1 = 0 S2 = 1
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ụ

P(S1) Tiến trình P1 Tiến trình P2


P(S2)
P(S1)
(Sû dựng R1&R2}
P(S1)
V (S1) block()
V (S2) P2đσi R1
Tiến trình P1
P(S1)
P(S2)
(Sû dựng R1&R2}
V (S1) t
V (S2)
Tiến trình P2
S1 = −1 S2 = 1
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ụ

P(S1) Tiến trình P1 Tiến trình P2


P(S2)
P(S1)
(Sû dựng R1&R2}
P(S1)
V (S1) block()
P(S2)
V (S2) P2đσi R1
Tiến trình P1
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ụ

P(S1) Tiến trình P1 Tiến trình P2


P(S2)
P(S1)
(Sû dựng R1&R2}
P(S1)
V (S1) block()
P(S2)
V (S2) P2đσi R1
Tiến trình P1 Sû dựng R1&R2

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ụ

P(S1) Tiến trình P1 Tiến trình P2


P(S2)
P(S1)
(Sû dựng R1&R2}
P(S1)
V (S1)
P(S2)
V (S2)
Tiến trình P1 Sû dựng R1&R2
V(S1)
P(S1) wakeup(P2)
P(S2)
(Sû dựng R1&R2}
V (S1) t
V (S2)
Tiến trình P2
S1 = 0 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ụ

P(S1) Tiến trình P1 Tiến trình P2


P(S2)
P(S1)
(Sû dựng R1&R2}
P(S1)
V (S1)
P(S2)
V (S2)
Tiến trình P1 Sû dựng R1&R2
V(S1)
P(S1) wakeup(P2) P(S2)
P(S2) block()
P2đσi R2
(Sû dựng R1&R2}
V (S1)
t
V (S2)
Tiến trình P2
S1 = 0 S2 =
154 / 201 −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

Ví dụ

P(S1) Tiến trình P1 Tiến trình P2


P(S2)
P(S1)
(Sû dựng R1&R2}
P(S1)
V (S1)
P(S2)
V (S2)
Tiến trình P1 Sû dựng R1&R2
V(S1)
P(S1) wakeup(P2) P(S2)
P(S2) V(S2)
(Sû dựng R1&R2} wakeup(P2)
V (S1)
t
V (S2)
Tiến trình P2
S1 = 0 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ụ

P(S1) Tiến trình P1 Tiến trình P2


P(S2)
P(S1)
(Sû dựng R1&R2}
P(S1)
V (S1)
P(S2)
V (S2)
Tiến trình P1 Sû dựng R1&R2
V(S1)
P(S1) wakeup(P2) P(S2)
P(S2) V(S2)
(Sû dựng R1&R2} wakeup(P2) Sû dựng R1&R2
V (S1) t
V (S2)
Tiến trình P2
S1 = 0 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ụ

P(S1) Tiến trình P1 Tiến trình P2


P(S2)
(Sû dựng R1&R2}
V (S1)
V (S2)
Tiến trình P1
P(S2)
P(S1)
(Sû dựng R1&R2}
V (S1) t
V (S2)
Tiến trình P2
S1 = 1 S2 = 1
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ụ

P(S1) Tiến trình P1 Tiến trình P2


P(S2)
P(S1)
(Sû dựng R1&R2}
V (S1)
V (S2)
Tiến trình P1
P(S2)
P(S1)
(Sû dựng R1&R2}
V (S1) t
V (S2)
Tiến trình P2
S1 = 0 S2 = 1
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ụ

P(S1) Tiến trình P1 Tiến trình P2


P(S2)
P(S1)
(Sû dựng R1&R2}
P(S2)
V (S1)
V (S2)
Tiến trình P1
P(S2)
P(S1)
(Sû dựng R1&R2}
V (S1) t
V (S2)
Tiến trình P2
S1 = 0 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ụ

P(S1) Tiến trình P1 Tiến trình P2


P(S2)
P(S1)
(Sû dựng R1&R2}
P(S2)
V (S1) P(S2)
V (S2) block()
Tiến trình P1 P1đσi R2
P(S2)
P(S1)
(Sû dựng R1&R2}
V (S1) t
V (S2)
Tiến trình P2
S1 = 0 S2 = −1
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ụ

P(S1) Tiến trình P1 Tiến trình P2


P(S2)
P(S1)
(Sû dựng R1&R2}
P(S2)
V (S1) P(S2)
V (S2) block() P(S1)
Tiến trình P1 P1đσi R2 block()
P(S2) P2đσi R1
P(S1)
(Sû dựng R1&R2}
V (S1) t
V (S2)
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

Ví dụ

P(S1) Tiến trình P1 Tiến trình P2


P(S2)
P(S1)
(Sû dựng R1&R2}
P(S2)
V (S1) P(S2)
V (S2) block() P(S1)
Tiến trình P1 P1đσi R2 block()
P(S2) P2đσi R1
P(S1)
(Sû dựng R1&R2} Deadloc
V (S1)
V (S2) k t

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

Bế tắc lǎ tǐnh trạng


Nai hay nhiều tiến trǐnh cǔng chí dñi m®t
sự ki»n nǎo dó xảy ra
Kếu không có sự tác d®ng gǐ tø bên
ngoǎi, thǐ sự chí dñi dó lǎ vô hạn

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

Tài nguyȇn găng

Chờ đợi trfớc khi vào đoạn

găng Trfng dụng tài nguyȇn

găng Chờ đợi vòng tròn

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)

Dùng để mô hình hóa tình trạng bế tắc trong hệ


thống Là đ® thà đành hưσng gồm tªp đ¿nh V và tªp
cung E Tªp đ¿nh V đưσc chia thành 2 kiểu đ¿nh
P = {P1, P2, . . . Pn } Tªp chùa tất cả các tiến trình trong
hệ thống
R = {R1, R2, . . . Rm } Tªp chùa tất cả các kiểu tài
nguyên
trong hệ thống
Tªp các cung E gồm 2 loại
Cung yȇu cầu: đi tø tiến trình Pi tσi tài nguyên Rj : Pi →
Rj
1 Cung sť dụng: j tσi tiến trình Pi : Rj →
Cung yêu cầu Pi Oi
→ tø
Rjtài nguyên
đưσc chènRvào đồ thà
P
2 Nếu yêu cầu đưσc thỏa mãn, cung yêu cầu chuyển thành
i

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à

O¿nh kiểu tiến trình đưσc thể


hiện bằng hình tròn P
O¿nh kiểu tài nguyên đưσc thể
hiện bằng hình chú nhªt
Mỗi đσn và của kiểu tài nguyên R
đưσc biểu thà bằng m®t dấu chấm
trong hình chú nhªt
Cung yêu cầu đi tø đ¿nh tiến trình
P R
tσi đ¿nh tài nguyên

Cung sû dựng xuất phát tø dấu chấm


bên trong đ¿nh tài nguyên tσi đ¿nh P R
tiến trình

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

Oồ thà có chu trình nhưng hệ thống không bế


tắc
P3

R1
P1 P2

R2

Oồ thà không chùa chu trình, không bế


tắc Nếu đồ thà chùa đựng chu trình
Nếu tài nguyên ch¿ có 1 đσn và ⇒ Bế tắc
Nếu tài nguyên có nhiều hσn 1 đσn và: có
162 / 201 khả năng bế tắc
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

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

Áp dựng các biện pháp để đảm bảo hệ thống không bao


giσ rσi vào tình trạng bế tắc
Tốn kém
Áp dựng cho hệ thống hay xảy ra bế tắc và tổn thất do bế
tắc gây ra lσn
2 Phòng tránh
Kiểm tra tøng yêu cầu tài nguyên của tiến trình và không
chấp nhªn yêu cầu nếu việc cung cấp tài nguyên có khả năng
dẫn đến tình trạng bế tắc
Thưσng yêu cầu các thông tin phự trσ
Áp dựng cho hệ thống ít xảy ra bế tắc nhưng tổn hại lσn
3 Nhªn biết và khắc phục
Cho phép hệ thống hoạt đ®ng bình thưσng ⇒có thể rơi
vào tình trạng bế tắc
Oành kỳ kiểm tra xem bế tắc có đang xảy ra không
Nếu đang bế tắc, áp dựng các biện pháp loại bỏ bế tắc
164 / 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

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

Tác đ®ng vào 1 trong 4 điều kiện cần của bế tắc để


nó không xảy ra

Tài nguyȇn găng

Chờ đợi trfớc khi vào đoạn

găng Trfng dụng tài nguyȇn

găng Chờ đợi vòng tròn

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

Diều ki»n tài nguyȇn găng

Giảm bσt mùc đ® găng của hệ thống


Tài nguyên phân chia đưσc (file chỉ dQC): Sû dựng đồng
thσi Tài nguyên không phân chia đưσc: Sû dựng không đồng
thσi

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

Diều ki»n tài nguyȇn găng

Giảm bσt mùc đ® găng của hệ thống


Tài nguyên phân chia đưσc (file chỉ dQC): Sû dựng đồng
thσi Tài nguyên không phân chia đưσc: Sû dựng không đồng
thσi
Kỹ thuªt SPOOL(Simultaneous peripheral operation on-
line)
Không phân phối tài nguyên khi không thực sự cần
thiết Ch¿ m®t số ít tiến trình có khả năng yêu cầu tài
nguyên

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

Diều ki»n tài nguyȇn găng

Giảm bσt mùc đ® găng của hệ thống


Tài nguyên phân chia đưσc (file chỉ dQC): Sû dựng đồng
thσi Tài nguyên không phân chia đưσc: Sû dựng không đồng
thσi
Kỹ thuªt SPOOL(Simultaneous peripheral operation on-
line)
Không phân phối tài nguyên khi không thực sự cần
thiết Ch¿ m®t số ít tiến trình có khả năng yêu cầu tài
nguyên

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

Diều ki»n tài nguyȇn găng

Giảm bσt mùc đ® găng của hệ thống


Tài nguyên phân chia đưσc (file chỉ dQC): Sû dựng đồng
thσi Tài nguyên không phân chia đưσc: Sû dựng không đồng
thσi
Kỹ thuªt SPOOL(Simultaneous peripheral operation on-
line)
Không phân phối tài nguyên khi không thực sự cần
thiết Ch¿ m®t số ít tiến trình có khả năng yêu cầu tài
nguyên

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

Diều ki»n tài nguyȇn găng

Giảm bσt mùc đ® găng của hệ thống


Tài nguyên phân chia đưσc (file chỉ dQC): Sû dựng đồng
thσi Tài nguyên không phân chia đưσc: Sû dựng không đồng
thσi
Kỹ thuªt SPOOL(Simultaneous peripheral operation on-
line)
Không phân phối tài nguyên khi không thực sự cần
thiết Ch¿ m®t số ít tiến trình có khả năng yêu cầu tài
nguyên

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

Diều ki»n tài nguyȇn găng

Giảm bσt mùc đ® găng của hệ thống


Tài nguyên phân chia đưσc (file chỉ dQC): Sû dựng đồng
thσi Tài nguyên không phân chia đưσc: Sû dựng không đồng
thσi
Kỹ thuªt SPOOL(Simultaneous peripheral operation on-
line)
Không phân phối tài nguyên khi không thực sự cần
thiết Ch¿ m®t số ít tiến trình có khả năng yêu cầu tài
nguyên

P1 P2

Ch¿ printer daemon mσi làm


Printer daemon việc vσi máy in ⇒ Bế tắc cho
tài nguyên máy in bà hủy bỏ

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

Diều ki»n tài nguyȇn găng

Giảm bσt mùc đ® găng của hệ thống


Tài nguyên phân chia đưσc (file chỉ dQC): Sû dựng đồng
thσi Tài nguyên không phân chia đưσc: Sû dựng không đồng
thσi
Kỹ thuªt SPOOL(Simultaneous peripheral operation on-
line)
Không phân phối tài nguyên khi không thực sự cần
thiết Ch¿ m®t số ít tiến trình có khả năng yêu cầu tài
nguyên

P1 P2

Ch¿ printer daemon mσi làm


Printer daemon việc
Khôngvσiphải
máytài ⇒ Bế tắc
in nguyên nàocho
tài
cũngnguyên
dùng máy in bàSPOOL
kỹ thuªt hủy bỏ
đưσc
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

Diều ki»n chờ đợi trfớc khi vào đoạn găng

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

Giai đoạn 1 Giai đoạn 2


Băng tø

Tiến trình gồm 2 giai đoạn


Sao chép dú liệu tø băng tø sang m®t file trên đîa
tø Sắp xếp dú liệu trong file và đưa ra máy in

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

Giai đoạn 1 Giai đoạn 2


Băng tø

Tiến trình gồm 2 giai đoạn


Sao chép dú liệu tø băng tø sang m®t file trên đîa
tø Sắp xếp dú liệu trong file và đưa ra máy in
Phưσng pháp cung cấp trưσc
Xin cả băng tø, file trên đîa và máy in
Lãng phí máy in giai đoạn đầu, băng tø giai đoạn
cuối

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

Giai đoạn 1 Giai đoạn 2


Băng tø

Tiến trình gồm 2 giai đoạn


Sao chép dú liệu tø băng tø sang m®t file trên đîa
tø Sắp xếp dú liệu trong file và đưa ra máy in
Phưσng pháp cung cấp trưσc
Xin cả băng tø, file trên đîa và máy in
Lãng phí máy in giai đoạn đầu, băng tø giai đoạn
cuối
Phưσng pháp giải phóng tài nguyên

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

Giai đoạn 1 Giai đoạn 2


Băng tø

Tiến trình gồm 2 giai đoạn


Sao chép dú liệu tø băng tø sang m®t file trên đîa
tø Sắp xếp dú liệu trong file và đưa ra máy in
Phưσng pháp cung cấp trưσc
Xin cả băng tø, file trên đîa và máy in
Lãng phí máy in giai đoạn đầu, băng tø giai đoạn
cuối
Phưσng pháp giải phóng tài nguyên
Xin băng tø và file trên đîa cho giai đoạn 1
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

Giai đoạn 1 Giai đoạn 2


Băng tø

Tiến trình gồm 2 giai đoạn


Sao chép dú liệu tø băng tø sang m®t file trên đîa
tø Sắp xếp dú liệu trong file và đưa ra máy in
Phưσng pháp cung cấp trưσc
Xin cả băng tø, file trên đîa và máy in
Lãng phí máy in giai đoạn đầu, băng tø giai đoạn
cuối
Phưσng pháp giải phóng tài nguyên
Xin băng tø và file trên đîa cho giai đoạn
169 / 201
1 Giải phóng băng tø và file trên đîa
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

Giai đoạn 1 Giai đoạn 2


Băng tø

Tiến trình gồm 2 giai đoạn


Sao chép dú liệu tø băng tø sang m®t file trên đîa
tø Sắp xếp dú liệu trong file và đưa ra máy in
Phưσng pháp cung cấp trưσc
Xin cả băng tø, file trên đîa và máy in
Lãng phí máy in giai đoạn đầu, băng tø giai đoạn
cuối
Phưσng pháp giải phóng tài nguyên
Xin băng tø và file trên đîa cho giai đoạn
169 / 201
1 Giải
Xin filephóng băng
trên đîa và tø
máyvàinfilecho
trên
giaiđîađoạn 2(Nếu khȏng
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 trfng dụng tài nguyȇn găng

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

Diều ki»n chờ đợi vòng tròn

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

Diều ki»n chờ đợi vòng tròn

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

Diều ki»n chờ đợi vòng tròn

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)

R2 → P2 → R3 → P3 ⇒ f (R2) < f (R3) . . .


171 / 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

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

Trạng thái an toàn

Trạng thái của h» thống lǎ an toǎn khi


Có thể cung cấp tǎi nguyên cho tøng tiến
trǐnh (đến yêu cầu Ján nhất) theo m®t
trªt tự nǎo dấy mǎ không xảy ra bế tắc

Tồn tại chuỗi an toàn của tất cả các


tiến trǐnh

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

Chuỗi tiến trình P={P1, P2, . . . , Pn} là an toàn nếu


Vσi mỗi tiến trình Pi , mQi yêu cầu tài nguyên trong tưσng lai
đều có thể đáp ùng nhσ vào
Lưσng tài nguyên hiện có trong hệ thống
Tài nguyên đang chiếm giú bσi tất cả các tiến trình Pj (j <
i)

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

Chuỗi tiến trình P={P1, P2, . . . , Pn} là an toàn nếu


Vσi mỗi tiến trình Pi , mQi yêu cầu tài nguyên trong tưσng lai
đều có thể đáp ùng nhσ vào
Lưσng tài nguyên hiện có trong hệ thống
Tài nguyên đang chiếm giú bσi tất cả các tiến trình Pj (j <
i)

Pi yȇu cầu tài nguyȇn


Nếu không thể đáp ùng ngay lªp tùc, Pi đσi cho tσi khi Pj
kết thúc (j < i )
Khi Pj kết thúc và giải phóng tài nguyên, Pi sẽ nhªn đưσc
tài nguyên cần thiết, thực hiện, giải phóng tài nguyên đưσc
cung cấp và kết thúc
Khi Pi kết thúc, Pi +1 có thể thu đưσc tài nguyên cần thiết
và thùc hiệ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

Ví dụ minh họa

Xem xét hệ thống gồm


3 tiến trình P1, P2, P3 và 1 tài nguyên R có 12 đσn và
Các tiến trình (P1, P2, P3) có thể yêu cầu tối đa tσi (10, 4,
9) đσn và tài nguyên R
Tại thσi điểm t0, các tiến trình (P1, P2, P3) đã đưσc cấp
(5, 2, 2) đσn và tài nguyên R

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

Xem xét hệ thống gồm


3 tiến trình P1, P2, P3 và 1 tài nguyên R có 12 đσn và
Các tiến trình (P1, P2, P3) có thể yêu cầu tối đa tσi (10, 4,
9) đσn và tài nguyên R
Tại thσi điểm t0, các tiến trình (P1, P2, P3) đã đưσc cấp
(5, 2, 2) đσn và tài nguyên R

Tại thσi điểm t0 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

Xem xét hệ thống gồm


3 tiến trình P1, P2, P3 và 1 tài nguyên R có 12 đσn và
Các tiến trình (P1, P2, P3) có thể yêu cầu tối đa tσi (10, 4,
9) đσn và tài nguyên R
Tại thσi điểm t0, các tiến trình (P1, P2, P3) đã đưσc cấp
(5, 2, 2) đσn và tài nguyên R

Tại thσi điểm t0 hệ thống có an toàn?


Hệ thống đã cấp (5 + 2 + 2) đσn và, vªy còn lại 3 đσn và
Các tiến trình (P1, P2, P3) còn có thể yêu cầu (5, 2, 7) đσn
và Vσi 3 đσ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 đưσc và sẽ giải phóng 2 đσn và R
Vσi 3 + 2 đσn và, P1 chắc chắn kết thúc,sẽ giải phóng 5 đσn
và Vσi 3 + 2 + 5 đσn và P3 chắc chắn kết thúc đưσc
Ở thσi điểm t0 các tiến trình P1, P2, P3 đều chắc chắn kết
thúc
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

Xem xét hệ thống gồm


3 tiến trình P1, P2, P3 và 1 tài nguyên R có 12 đσn và
Các tiến trình (P1, P2, P3) có thể yêu cầu tối đa tσi (10, 4,
9) đσn và tài nguyên R
Tại thσi điểm t0, các tiến trình (P1, P2, P3) đã đưσc cấp
(5, 2, 2) đσn và tài nguyên R

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

Xem xét hệ thống gồm


3 tiến trình P1, P2, P3 và 1 tài nguyên R có 12 đσn và
Các tiến trình (P1, P2, P3) có thể yêu cầu tối đa tσi (10, 4,
9) đσn và tài nguyên R
Tại thσi điểm t0, các tiến trình (P1, P2, P3) đã đưσc cấp
(5, 2, 2) đσn và tài nguyên R

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

Xem xét hệ thống gồm


3 tiến trình P1, P2, P3 và 1 tài nguyên R có 12 đσn và
Các tiến trình (P1, P2, P3) có thể yêu cầu tối đa tσi (10, 4,
9) đσn và tài nguyên R
Tại thσi điểm t0, các tiến trình (P1, P2, P3) đã đưσc cấp
(5, 2, 2) đσn và tài nguyên R

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

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

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

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

Thuªt toán dța vào đồ thà cung cấp tài nguyȇn

Sû dựng khi mỗi kiểu tài nguyên ch¿ có 1 đσn và


Có chu trình, sẽ có 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

Thuªt toán dța vào đồ thà cung cấp tài nguyȇn

Sû dựng khi mỗi kiểu tài nguyên ch¿ có 1 đσn và


Có chu trình, sẽ có bế tắc
Thêm vào đồ thà loại cung mσi: cung đòi hỏi Pi → Rj
Cùng hưσng vσi cung yêu cầu, thể hiện trong đồ thà −− >
Cho biết Pi có thể yêu cầu Rj trong tưσng lai

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

Thuªt toán dța vào đồ thà cung cấp tài nguyȇn

Sû dựng khi mỗi kiểu tài nguyên ch¿ có 1 đσn và


Có chu trình, sẽ có bế tắc
Thêm vào đồ thà loại cung mσi: cung đòi hỏi Pi → Rj
Cùng hưσng vσi cung yêu cầu, thể hiện trong đồ thà −− >
Cho biết Pi có thể yêu cầu Rj trong tưσng lai
Tiến trình khi tham gia hệ thống, phải thêm tất cả các
cung đòi hỏi tưσng ùng vào đồ thà
Khi Pi yêu cầu Rj , cung đòi hỏi Pi → Rj chuyển thành cung
yêu cầu Pi → Rj
Khi Pi giải phóng Rj , cung sû dựng Rj → Pi chuyển
thành cung đòi hỏi Pi → Rj

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

Thuªt toán dța vào đồ thà cung cấp tài nguyȇn

Sû dựng khi mỗi kiểu tài nguyên ch¿ có 1 đσn và


Có chu trình, sẽ có bế tắc
Thêm vào đồ thà loại cung mσi: cung đòi hỏi Pi → Rj
Cùng hưσng vσi cung yêu cầu, thể hiện trong đồ thà −− >
Cho biết Pi có thể yêu cầu Rj trong tưσng lai
Tiến trình khi tham gia hệ thống, phải thêm tất cả các
cung đòi hỏi tưσng ùng vào đồ thà
Khi Pi yêu cầu Rj , cung đòi hỏi Pi → Rj chuyển thành cung
yêu cầu Pi → Rj
Khi Pi giải phóng Rj , cung sû dựng Rj → Pi chuyển
thành cung đòi hỏi Pi → Rj
Thuªt toán: Yêu cầu tài nguyên Rj của tiến trình Pi
đưσc thỏa mãn ch¿ khi việc chuyển cung yêu cầu Pi → Rj
thành cung sû dựng Rj → Pi không tạo chu trình trên đồ
thà
Không chu trình: Hệ thống an toàn
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


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


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


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


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


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


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


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


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


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


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


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

Thuªt toán ngfời quản lý nhà băng: Giới thi»u

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

Các cấu trúc dť li»u I

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

Các cấu trúc dť li»u II

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

Thuªt toán kiểm tra An toàn

BOOL Safe(Current Resource-Allocation State)(


Work←Available
for (i : 1 → n)
Finish[i]←false flag← true
While(flag)
( flag←fal
se
for (i : 1 →
n) do
if(Finish[i]=false AND Need[i] ≤Work)(
Finish[i]← true
Work ← Work+Allocation[i]
flag← true
}//endif
}//endwhile
for (i : 1 → n) if (Finish[i]=false)return false
184 / 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

Xét hệ thống gồm 5 tiến trình P0, P1, P2, P3, P4 và 3


tài nguyên R0, R1, R2
Tài nguyên R0 có 10 đσn và, R1 có 5 đσn và, R2 có 7
đσn và
Yêu cầu tài nguyên lσn nhất và lưσng tài nguyên đã cấp
của mỗi tiến
R0 trình
R1 R2 R0 R1 R2
P0 7 5 3 P0 0 1 0
P1 3 2 2 P1 2 0 0
P2 9 0 2 P2 3 0 2
P3 2 2 2 P3 2 1 1
P4 4 3 3 P4 0 0 2
Max Allocation
Hệ thống có an toàn?
Tiến trình P1 yêu cầu thêm 1 đσn và R0 và 2 đσn và
R2? Tiến trình P4 yêu cầu thêm 3 đσn và R0 và 3 đσn
185 /
và R1? Tiến trình P0 yêu cầu thêm 2 đσn và R1. Cung
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 : Kiểm tra tính an toàn

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

Ví dụ minh họa : Kiểm tra tính an toàn

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

Ví dụ minh họa : Kiểm tra tính an toàn

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

Ví dụ minh họa : Kiểm tra tính an toàn

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

Ví dụ minh họa : Kiểm tra tính an toàn

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

Ví dụ minh họa : Kiểm tra tính an toàn

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

Ví dụ minh họa : Kiểm tra tính an toàn

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

Ví dụ minh họa : Kiểm tra tính an toàn

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

Ví dụ minh họa : Kiểm tra tính an toàn

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

Ví dụ minh họa : Kiểm tra tính an toàn

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

Ví dụ minh họa : Kiểm tra tính an toàn

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

Ví dụ minh họa : Kiểm tra tính an toàn

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

Ví dụ minh họa : Kiểm tra tính an toàn

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

Thuªt toán yȇu cầu tài nguyȇn

Request[i] Vector yêu cầu tài nguyên của tiến trình Pi


Request[3,2] = 2: Tiến trình P3 yêu cầu 2 đσn và tài nguyên R2
Khi Pi yêu cầu tài nguyên, hệ thống thực hiện
1 if(Request[i]>Need[i])
Error(Yêu cầu vưσt quá khai báo tài
2 nguyên) if(Request[i]>Available)
Block(Không dủ tài nguyên, tiến trình
3 phải dσi )
Thiết lªp trạng thái phân phối tài nguyên
mσi cho hệ thống
Available = Available - Request[i]
4 Allocation[i] = Allocation[i] +
Request[i] Need[i] = Need[i] -
Request[i]
Phân phối tài nguyên dựa trên kết quả kiểm tra tính an
toàn của trạng thái phân phối tài nguyên mσi
if(Safe(New Resource Allocation State))
Phân phối cho Pi theo yêu cầu
187 / 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 : P1 yȇu cầu (1, 0, 2)

Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung cấp

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

Ví dụ minh họa : P1 yȇu cầu (1, 0, 2)

Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung


cấp Nếu cung cấp : Available = ( 2 , 3, 0)
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 7 4 3
P1 3 0 2 P1 0 2 0
P2 3 0 2 P2 6 0 0
P3 2 1 1 P 3 0 1 1
P4 0 0 2 P4 4 3 1
Allocation Need

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

Ví dụ minh họa : P1 yȇu cầu (1, 0, 2)

Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung


cấp Nếu cung cấp : Available = ( 2 , 3, 0)
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 7 4 3
P1 3 0 2 P1 0 2 0
P2 3 0 2 P2 6 0 0
P3 2 1 1 P 3 0 1 1
P4 0 0 2 P4 4 3 1
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 (2, 3, 0)

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

Ví dụ minh họa : P1 yȇu cầu (1, 0, 2)

Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung


cấp Nếu cung cấp : Available = ( 2 , 3, 0)
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 7 4 3
P1 3 0 2 P1 0 2 0
P2 3 0 2 P2 6 0 0
P3 2 1 1 P3 0 1 1
P4 0 0 2 P4 4 3 1
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 (2, 3, 0)

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

Ví dụ minh họa : P1 yȇu cầu (1, 0, 2)

Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung


cấp Nếu cung cấp : Available = ( 2 , 3, 0)
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 7 4 3
P1 3 0 2 P1 0 2 0
P2 3 0 2 P2 6 0 0
P3 2 1 1 P3 0 1 1
P4 0 0 2 P4 4 3 1
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 (2, 3, 0)

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

Ví dụ minh họa : P1 yȇu cầu (1, 0, 2)

Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung


cấp Nếu cung cấp : Available = ( 2 , 3, 0)
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 7 4 3
P1 3 0 2 P1 0 2 0
P2 3 0 2 P2 6 0 0
P3 2 1 1 P3 0 1 1
P4 0 0 2 P4 4 3 1
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)

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

Ví dụ minh họa : P1 yȇu cầu (1, 0, 2)

Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung


cấp Nếu cung cấp : Available = ( 2 , 3, 0)
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 7 4 3
P1 3 0 2 P1 0 2 0
P2 3 0 2 P2 6 0 0
P3 2 1 1 P3 0 1 1
P4 0 0 2 P4 4 3 1
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)

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

Ví dụ minh họa : P1 yȇu cầu (1, 0, 2)

Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung


cấp Nếu cung cấp : Available = ( 2 , 3, 0)
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 7 4 3
P1 3 0 2 P1 0 2 0
P2 3 0 2 P2 6 0 0
P3 2 1 1 P3 0 1 1
P4 0 0 2 P4 4 3 1
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)

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

Ví dụ minh họa : P1 yȇu cầu (1, 0, 2)

Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung


cấp Nếu cung cấp : Available = ( 2 , 3, 0)
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 7 4 3
P1 3 0 2 P1 0 2 0
P2 3 0 2 P2 6 0 0
P3 2 1 1 P 3 0 1 1
P4 0 0 2 P4 4 3 1
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)

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

Ví dụ minh họa : P1 yȇu cầu (1, 0, 2)

Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung


cấp Nếu cung cấp : Available = ( 2 , 3, 0)
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 7 4 3
P1 3 0 2 P1 0 2 0
P2 3 0 2 P2 6 0 0
P3 2 1 1 P3 0 1 1
P4 0 0 2 P4 4 3 1
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)

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

Ví dụ minh họa : P1 yȇu cầu (1, 0, 2)

Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung


cấp Nếu cung cấp : Available = ( 2 , 3, 0)
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 7 4 3
P1 3 0 2 P1 0 2 0
P2 3 0 2 P2 6 0 0
P3 2 1 1 P3 0 1 1
P4 0 0 2 P4 4 3 1
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)

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

Ví dụ minh họa : P1 yȇu cầu (1, 0, 2)

Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung


cấp Nếu cung cấp : Available = ( 2 , 3, 0)
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 7 4 3
P1 3 0 2 P1 0 2 0
P2 3 0 2 P2 6 0 0
P3 2 1 1 P 3 0 1 1
P4 0 0 2 P4 4 3 1
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)

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

Ví dụ minh họa : P1 yȇu cầu (1, 0, 2)

Request[1]≤Available ((1, 0, 2) ≤ (3, 3, 2)) ⇒ Có thể cung


cấp Nếu cung cấp : Available = ( 2 , 3, 0)
R0 R1 R2 R0 R1 R2
P0 0 1 0 P0 7 4 3
P1 3 0 2 P1 0 2 0
P2 3 0 2 P2 6 0 0
P3 2 1 1 P 3 0 1 1
P4 0 0 2 P4 4 3 1
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)
Yȇu cầu đfợc chấp nhªn
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

Ví dụ minh họa (tiếp tục)

Tiến trình P4 yêu cầu thêm 3 đσn và R0 và 3 đσn và


R2
Request[4] = (3, 0, 3)
Available = (2, 3, 0)
⇒ Không đủ tài nguyên, P4 phải đσi

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

Ví dụ minh họa (tiếp tục)

Tiến trình P4 yêu cầu thêm 3 đσn và R0 và 3 đσn và R2


Request[4] = (3, 0, 3)
Available = (2, 3, 0)
⇒ Không đủ tài nguyên, P4 phải đσi

Tiến trình P0 yêu cầu thêm 2 đσn và R1


Request[0]≤Available ((0, 2, 0) ≤ (2, 3, 0)) ⇒ Có thể cung
cấp Nếu cung cấp : Available = (2 , 1, 0)
Thực hiện thuªt toán an toàn
⇒ Tất cả các tiến trình đều có thể không kết thúc
⇒ Nếu chấp nhªn, hệ thống rσi vào trạng thái không an
toàn
⇒ Oủ tài nguyên nhưng không cung cấp. P0 phải đσi

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

Áp dựng khi mỗi tài nguyên trong hệ thống có m®t đσ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

Áp dựng khi mỗi tài nguyên trong hệ thống có m®t đσn và


Kiểm tra hệ thống có bế tắc bằng cách kiểm tra chu
trình trên đồ thà
Nếu trên đồ thà có chu trình, hệ thống đang bế tắc

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

Áp dựng khi mỗi tài nguyên trong hệ thống có m®t đσn và


Kiểm tra hệ thống có bế tắc bằng cách kiểm tra chu
trình trên đồ thà
Nếu trên đồ thà có chu trình, hệ thống đang bế tắc
Oành kỳ gQi tσi các thuªt toán kiểm tra chu kỳ trên đồ
thà
Thuªt toán đòi hỏi n2 thao tác (n: số dỉnh của dồ thà)

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

Áp dựng khi mỗi tài nguyên trong hệ thống có m®t đσn và


Kiểm tra hệ thống có bế tắc bằng cách kiểm tra chu
trình trên đồ thà
Nếu trên đồ thà có chu trình, hệ thống đang bế tắc
Oành kỳ gQi tσi các thuªt toán kiểm tra chu kỳ trên đồ
thà
Thuªt toán đòi hỏi n2 thao tác (n: số dỉnh của dồ thà)
Sû dựng đồ thà chσ đσi - phiên bản thu gQn của đồ thà
cung cấp tài nguyên
Ch¿ có các đ¿nh dạng tiến trình
Cung chσ đσi Pi → Pj : Tiến trình Pi dang dσi tiến trình Pj
giải phóng tài nguyên Pi cần
Cung chσ đσi Pi → Pj tồn tại trên đồ thà đσi khi và ch¿ khi
trên đồ thà phân phối tài nguyên tưσng ùng tồn tại đồng
thσi cung yêu cầu Pi → R và cung sû dựngR → Pj
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
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

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

Sû dựng cho các hệ thống có các kiểu tài nguyên gồm


nhiều đσn và
Thuªt toán tưσng tự thuªt toán ngưσi quản lý nhà
băng Các cấu trúc dú liệu
Available Vector đ® dài m: Tài nguyên sắn có trong
hệ thống
Allocation Ma trªn n ∗ m: Tài nguyên đã cấp cho tiến trình
Request Ma trªn n ∗ m Tài nguyên tiến trình yêu
cầu Các cấu trúc cực b®
Work Vector đ® dài m cho biết tài nguyên hiện
đang có
Finish Vector đ® dài n cho biết tiến trình có thể
kết thúc không
Các qui ưσc
Quan hệ ≤ giúa các Vector
Xû lý các dòng ma trªn n ∗ m như các vector
194 / 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
BOOL Deadlock(Current Resource-Allocation State)(
Work←Available
For (i : 1 → n)
if (Allocation[i]=/ 0) Finish[i]←false
else Finish[i]=true;
flag← true
While(flag)(
flag←false
for (i : 1 → n)
do
if(Finish[i]=false AND Request[i] ≤Work)
( Finish[i]← true
Work ← Work+Allocation[i]
flag← true
}//endif
}//endwhile
for (i : 1 → n) if (Finish[i]=false) return true;
return false;
195 / 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
BOOL Deadlock(Current Resource-Allocation State)(
Work←Available
For (i : 1 → n)
if (Allocation[i]=/ 0) Finish[i]←false
else Finish[i]=true;//Allocation= 0 không nằm trong chu trình
đσi flag← true
While(fla
g)(
flag←false
for (i :
1 → n)
do
if(Finish[i]=false AND Request[i] ≤Work)
( Finish[i]← true
Work ← Work+Allocation[i]
flag← true
}//endif
}//endwhile
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
BOOL Deadlock(Current Resource-Allocation State)(
Work←Available
For (i : 1 → n)
if (Allocation[i]=/ 0) Finish[i]←false
else Finish[i]=true;//Allocation= 0 không nằm trong chu trình
đσi flag← true
While(fla
g)(
flag←false
for (i : 1 → n) do//Giả thiết tối ưu, đây là yêu cầu
cuối if(Finish[i]=false AND Request[i] ≤Work)(
Finish[i]← true
Work ← Work+Allocation[i]
flag← true
}//endif
}//endwhile
for (i : 1 → n) if (Finish[i]=false) return true;
}//End
returnfunction
false;
195 / 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
BOOL Deadlock(Current Resource-Allocation State)(
Work←Available
For (i : 1 → n)
if (Allocation[i]=/ 0) Finish[i]←false
else Finish[i]=true;//Allocation= 0 không nằm trong chu trình
đσi flag← true
While(fla
g)(
flag←false
for (i : 1 → n) do//Giả thiết tối ưu, đây là yêu cầu
cuối if(Finish[i]=false AND Request[i] ≤Work)(
Finish[i]← true
Work ← Work+Allocation[i]
flag← true
}//endif
}//endwhile
for (i : 1 → n) if (Finish[i]=false) return
true; function
}//End
195 / 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

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)

P2 yêu cầu thêm 1 đσn và tài nguyên R2


Trạng thái cung cấp tài nguyên tại thσi điểm t1
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 1
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request

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)

P2 yêu cầu thêm 1 đσn và tài nguyên R2


Trạng thái cung cấp tài nguyên tại thσi điểm t1
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 1
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request

Thțc hi»n thuªt toán ch¿ ra bế


tắc Tiến trình P0 P1 P2 P3 P4
Finish F F F F F
Work (0, 0, 0)

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)

P2 yêu cầu thêm 1 đσn và tài nguyên R2


Trạng thái cung cấp tài nguyên tại thσi điểm t1
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 1
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request

Thțc hi»n thuªt toán ch¿ ra bế


tắc Tiến trình P0 P1 P2 P3 P4
Finish F F F F F
Work (0, 0, 0)

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)

P2 yêu cầu thêm 1 đσn và tài nguyên R2


Trạng thái cung cấp tài nguyên tại thσi điểm t1
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 1
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request

Thțc hi»n thuªt toán ch¿ ra bế


tắc Tiến trình P0 P1 P2 P3 P4
Finish T F F F F
Work (0, 1, 0)

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)

P2 yêu cầu thêm 1 đσn và tài nguyên R2


Trạng thái cung cấp tài nguyên tại thσi điểm t1
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 1
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request

Thțc hi»n thuªt toán ch¿ ra bế


tắc Tiến trình P0 P1 P2 P3 P4
Finish T F F F F
Work (0, 1, 0)

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)

P2 yêu cầu thêm 1 đσn và tài nguyên R2


Trạng thái cung cấp tài nguyên tại thσi điểm t1
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 1
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request

Thțc hi»n thuªt toán ch¿ ra bế


tắc Tiến trình P0 P1 P2 P3 P4
Finish T F F F F
Work (0, 1, 0)

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)

P2 yêu cầu thêm 1 đσn và tài nguyên R2


Trạng thái cung cấp tài nguyên tại thσi điểm t1
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 1
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request

Thțc hi»n thuªt toán ch¿ ra bế


tắc Tiến trình P0 P1 P2 P3 P4
Finish T F F F F
Work (0, 1, 0)

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)

P2 yêu cầu thêm 1 đσn và tài nguyên R2


Trạng thái cung cấp tài nguyên tại thσi điểm t1
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 1
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request

Thțc hi»n thuªt toán ch¿ ra bế


tắc Tiến trình P0 P1 P2 P3 P4
Finish T F F F F
Work (0, 1, 0)

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)

P2 yêu cầu thêm 1 đσn và tài nguyên R2


Trạng thái cung cấp tài nguyên tại thσi điểm t1
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 1
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request

Thțc hi»n thuªt toán ch¿ ra bế


tắc Tiến trình P0 P1 P2 P3 P4
Finish T F F F F
Work (0, 1, 0)

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)

P2 yêu cầu thêm 1 đσn và tài nguyên R2


Trạng thái cung cấp tài nguyên tại thσi điểm t1
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 1
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request

Thțc hi»n thuªt toán ch¿ ra bế


tắc Tiến trình P0 P1 P2 P3 P4
Finish T F F F F
Work (0, 1, 0)

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)

P2 yêu cầu thêm 1 đσn và tài nguyên R2


Trạng thái cung cấp tài nguyên tại thσi điểm t1
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 1
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request

Thțc hi»n thuªt toán ch¿ ra bế


tắc Tiến trình P0 P1 P2 P3 P4
Finish T F F F F
Work (0, 1, 0)

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)

P2 yêu cầu thêm 1 đσn và tài nguyên R2


Trạng thái cung cấp tài nguyên tại thσi điểm t1
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 1
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request

Thțc hi»n thuªt toán ch¿ ra bế


tắc Tiến trình P0 P1 P2 P3 P4
Finish T F F F F
Work (0, 1, 0)

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)

P2 yêu cầu thêm 1 đσn và tài nguyên R2


Trạng thái cung cấp tài nguyên tại thσi điểm t1
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 1
P3 2 1 1 P3 1 0 0
P4 0 0 2 P4 6 0 2
Allocation Request

Thțc hi»n thuªt toán ch¿ ra bế


tắc Tiến trình P0 P1 P2 P3 P4
Finish T F F F F
Work (0, 1, 0)
P0 có thể kết thúc nhfng h» thống đang bế tắc.
Các tiến trình đang chờ đợi lẫn nhau (P1, P2, P3,
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
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ỏ

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)

Tài nguyên nào và tiến trình nào đưσc


chQn? Trªt tự trưng dựng để chi phí nhỏ
nhất?
Lưσng tài nguyên nắm giú, thσi gian sû
dựng. . .

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ài nguyên nào và tiến trình nào đưσc


chQn? Trªt tự trưng dựng để chi phí nhỏ
nhất?
2 Lưσng tài nguyên nắm giú, thσi gian sû
dựng. . .
Quay lui (Rollback)
Quay lui tσi m®t trạng thái an toàn trưσc đó và bắt đầu lại
Yêu cầu lưu giú thông tin trạng thái của t/trình đang thực
hiện

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ài nguyên nào và tiến trình nào đưσc


chQn? Trªt tự trưng dựng để chi phí nhỏ
nhất?
2 Lưσng tài nguyên nắm giú, thσi gian sû
dựng. . .
Quay lui (Rollback)
3 Quay lui tσi m®t trạng thái an toàn trưσc đó và bắt đầu lại
Yêu cầu lưu giú thông tin trạng thái của t/trình đang thực
hiện
Oói tài nguyên (Starvation)
199 / 201
Chưσng 2: Quản lý tiến trình
5. Bế tắc và xủ lý bế tắc

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

1 Tiến trình 4 Tài nguyȇn găng và điều


Khái niệm tiến trình độ tiến trình
Oiều phối tiến trình Khái niệm tài nguyên găng
(Process Scheduling) Phưσng pháp khóa trong
Thao tác trên tiến trình Phưσng pháp kiểm tra và
Hσp tác tiến trình xác lªp
Truyền thông liên tiến trình Kỹ thuªt đèn báo
2 Luồng (Thread) Ví dự về đồng b® tiến trình
Giσi thiệu Công cự điều đ® cấp cao
Mô hình đa luồng 5 tắc và xť lý bế tắc
Bế
Cài đ°t luồng Khái niệm bế tắc
3 Diều phối CPU Oiều kiện xảy ra bế tắc
Các khái niệm cσ Các phưσng pháp xû lý bế tắc
bản Tiêu chuẩn điều Phòng ngøa bế tắc
phối Phòng tránh bế tắc
Các thuªt toán điều Nhªn biết và khắc phực
phối CPU
201 / 201

You might also like