You are on page 1of 11

BỘ CÔNG THƯƠNG

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP.HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
-----o0o----

NHÓM 5
ĐỀ TÀI 05
TÌM HIỂU CÁC GIẢI THUẬT QUẢN LÝ TẮC NGHẼN VÀ
VIẾT CHƯƠNG TRÌNH MINH HỌA
BÀI TẬP CUỐI KÌ – MÔN HỆ ĐIỀU
HÀNH
GVHD : ĐINH HUY HOÀNG

Thành phố Hồ Chí Minh, năm 2022


Bảng đánh giá kết quả thực hiện công việc nhóm:

Tên MSSV Mô tả công việc


Trần Việt Anh 2001207216 Tìm hiểu giải thuật quản
lý tắc nghẽn, Viết
chương trình minh họa
Trần Trọng Ân 2001207334 Tìm hiểu giải thuật quản
lý tắc nghẽn, Viết
chương trình minh họa
Lại Trần Ngọc Khánh 2001207389 Tìm hiểu giải thuật quản
lý tắc nghẽn, Làm Word
báo cáo
Nguyễn Anh Thái 2001200103 Tìm hiểu giải thuật quản
lý tắc nghẽn, Làm
Powerpoint thuyết trình
MỤC LỤC

1. TẮC NGHẼN (DEADLOCK) 1

2. GIẢI THUẬT BANKER

Cấu trúc dữ liệu của giải thuật Banker 1

Giải thuật xác định trạng thái an toàn 2

Ví dụ về giải thuật Banker 3

Giải thuật yêu cầu tài nguyên của tiến trình Pi 4

3. PHÁT HIỆN TẮC NGHẼN

Tài nguyên có một thực thể 5

Tài nguyên có nhiều thực thể 6

Ví dụ về giải thuật phát hiện tắc nghẽn 7


1. TẮC NGHẼN (DEADLOCK)

Định nghĩa:

- Một tập hợp các tiến trình được định nghĩa ở trong tình trạng tắc nghẽn khi mỗi
tiến trình trong tập hợp đều chờ đợi một sự kiện mà chỉ có một tiến trình khác
trong tập hợp mới có thể phát sinh được.
- Nói cách khác, mỗi tiến trình trong tập hợp đều chờ được cấp phát một tài
nguyên hiện đang bị một tiến trình khác cũng ở trạng thái blocked chiếm giữ.
Như vậy không có tiến trình nào có thể tiếp tục xử lý , cũng như giải phóng tài
nguyên cho tiến trình khác sử dụng, tất cả các tiến trình trong tập hợp đều bị
khóa vĩnh viễn !

2. GIẢI THUẬT BANKER

- Áp dụng cho tài nguyên có nhiều thực thể


- Mỗi tiến trình phải sử dụng độ ưu tiên cao nhất
- Khi một tiến trình yêu cầu tài nguyên, nó có thể phải chờ
- Khi một tiến trình có đầy đủ tài nguyên, nó phải trả lại chúng trong thời gian
xác định

Cấu trúc dữ liệu của giải thuật Banker


- Gọi n là số tiến trình; m là số tài nguyên
- Available: vector với độ dài m, là số thực thể đang khả dụng (có
- sẵn). Nếu available[j]=k, có k thực thể của tài nguyên Rj là khả dụng.

1
- Max: ma trận nxm, số thực thể tối đa mà tiến trình yêu cầu. Nếu
- Max[i,j]=k, thì tiến trình Pi có thể yêu cầu nhiều nhất k thực thể của tài nguyên
Rj

- Allocation: ma trận nxm, số thực thể của tài nguyên đã cấp phát
- cho tiến trình. Nếu Allocation[i,j]=k, thì hiện hành tiến trình Pi được
- cấp phát k thực thể của tài nguyên Rj

- Need: ma trận nxm, số thực thể tiến trình cần để hoàn thành tác vụ.Nếu
Need[i,j]=k, thì tiến trình Pi cần thêm k thực thể của Rj để hoàn thành tác vụ
Need[i,j]=Max[i,j]-Allocation[i,j]

Giải thuật xác định trạng thái an toàn


- Gọi Work và Finish là 2 vector với độ dài tương ứng là m và n. Khởi tạo:
Work = Available
Finish [i] = false với i = 0, 1, ..., n- 1
- Tìm i thỏa 2 điều kiện:
- Finish[i]=false
- Need i ≤ Work

+ Nếu không tồn tại i như vậy thì qua Bước 4


- Work = Work + Allocationi
+ Finish[i] = true
+ Quay lại Bước 2
- Nếu Finish [i] == true với tất cả i, thì hệ thống ở trạng thái an toàn

2
Ví dụ về giải thuật Banker
- 5 tiến trình: P0 đến P4

- 3 loại tài nguyên:


+ A (10 thực thể); B (5 thực thể) và C (7 thực thể)

- Hiện trạng tại thời điểm T0 :

Allocation Max Available

ABC ABC ABC

P0 010 753 332

P1 200 322

P2 302 902

P3 211 222

P4 002 433

3
- Ma trận Need được xác định bởi Max – Allocation
Need
ABC
P0 743
P1 122
P2 600
P3 011
P4 431

- Hệ thống ở trạng thái an toàn vì chuỗi < P1 , P3 , P4 , P2 , P 0> ¿ thỏa mãn điều kiện
an toàn

Giải thuật yêu cầu tài nguyên của tiến trình Pi


- Request i – vector tài nguyên yêu cầu của tiến trình Pi. Nếu Request i [j]=k thì tiến

trình Pi muốn k thực thể của tài nguyên R j


- Nếu Request i ≤ Need itới Bước 2. Ngược lại, đưa ra lỗi vì tiến trình vượt quá đòi
hỏi tối đa
- Nếu Request i ≤Available tới Bước 3. Ngược lại, Pi phải chờ vì tài nguyên không
có sẵn
- Giả sử hệ thống đã cấp phát cho Pi các tài nguyên mà nó yêu cầu và cập nhật
tình trạng hệ thống như sau:
Available = Available – Request i ;
Allocationi = Allocationi + Request i ;
Need i=Needi −Request i ;

- Nếu trạng thái là an toàn => tài nguyên được cấp phát cho Pi
- Nếu trạng thái là không an toàn => Pi phải chờ, và trạng thái cấp phát tài nguyên
cũ được phục hồi

4
3. PHÁT HIỆN TẮC NGHẼN
- Cho phép hệ thống rơi vào trạng thái tắc nghẽn
- Giải thuật phát hiện tắc nghẽn
- Cách thức phục hồi

Tài nguyên có một thực thể


- Đồ thị chờ (wait-for graph)
+ Đỉnh là các tiến trình
+ Pi → P j nếu Pi đang chờ P j
- Gọi một giải thuật tìm kiếm một chu trình trong đồ thị. Nếu có một chu trình thì
tồn tại tắc nghẽn
- Giải thuật để phát hiện chu trình trong đồ thị đòi hỏi n2 thao tác lệnh, trong đó n
là số đỉnh của đồ thị

Đồ thị cấp phát tài nguyên và đồ thị chờ

5
Tài nguyên có nhiều thực thể
- Available: vector với độ dài m, cho biết số tài nguyên khả dụng của mỗi loại
- Allocation: ma trận nxm, xác định số tài nguyên của mỗi loại được cấp phát
hiện hành cho mỗi tiến trình
- Request: ma trận nxm, cho biết yêu cầu hiện tại của mỗi tiến trình. Nếu
Request[i][j]=k thì tiến trình Pi đang yêu cầu thêm k thực thể của tài nguyên R j

Giải thuật phát hiện tắc nghẽn


- Gọi Work và Finish là các vector với độ dài tương ứng là m và n, được khởi tạo
như sau:
+ Work = available
+ Với mỗi I = 1 ,2,...,n nếu Allocationii ≠ 0 thì Finish[i] = false; ngược
lại,Finish[i] = true
- Tìm i sao cho thỏa 2 điều kiện:
+ Finish[i] == false
+ Requesti ≤ Work
+ Nếu i không tồn tại thì qua Bước 4
- Work = Work + Allocationi
+ Finish[i] = true
+ Quay lại Bước 2
- Nếu Finish[i] == false với một vài i, 1 ≤ i ≤ n , thì hệ thống trong trạng
+ thái tắc nghẽn. Ngoài ra, nếu Finish[i] == false thì Pi bị tắc nghẽn

6
Ví dụ về giải thuật phát hiện tắc nghẽn
- Cho 5 tiến trình từ P0 đến P4; 3 tài nguyên: A (7 thực thể), B (2 thực thể) và C
(6 thực thể)
- Hiện trạng tại thời điểm T0
Allocation Request Available
ABC ABC ABC
P0 010 000 000
P1 200 202
P2 303 000
P3 211 100
P4 002 002

- Chuỗi < P0 , P 2 , P3 , P1 , P 4> sẽ cho kết quả Finish[i] = true với mọi i
- P2 yêu cầu thêm 1 thực thể tài nguyên C

Request
ABC
P0 000
P1 202
P2 001
P3 100
P4 002
- Hệ thống có an toàn?
+ Có thể đòi lại tài nguyên được giữ bởi tiến trình P0, nhưng không đủ tài
nguyên để thi hành các tiến trình khác
+ Tắc nghẽn tồn tại, bao gồm các tiến trình P1, P2, P3 và P4

You might also like