Hiện tượng bế tắc

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 35

CHỦ ĐỀ 2

HIỆN TƯỢNG BẾ TẮC


Thành viên nhóm
Lê Quang Tâm
Đỗ Tuấ n Đạt Nguyễ n Vũ Dũng

Nguyễ n Trầ n Xuân Thế Nguyễ n Công Doanh


Lương Thành Đạt

Nguyễ n Công Hiển Nguyễ n Văn Phúc Lê Trọng Nam

Trầ n Đức Trọng Nguyễ n Thị Xuân Hồ ng


I. Mô hình hiện
tượng bế tắc
1.Mô tả hiện tượng
bế tắc
01 02 03 04

Tấ t cả hiện tượng Tài nguyên ở đây có Tấ t cả hiện tượng bế


tắ c nghẽn đề u bắ t thể là một ổ đỉa, một tắ c đề u bắ t nguồ n
nguồ n từ sự xung record trong cơ sở từ sự xung đột về tài
đột về tài nguyên dữ liệu, hay một nguyên của hai hoặc
của hai hoặc nhiề u không gian địa chỉ nhiề u tiế n trình đang
tiế n trình đang hoạt trên bộ nhớ chính. hoạt động đồ ng thời
động đông thời trên trên hệ thố ng.
hệ thố ng.
Các tiế n trình được biểu diễ n bằ ng hình tròn và
mỗ i tài nguyên được hiển thị bằ ng hình vuông.
2.Khái niệm về bế
tắc
Khái Niệm:
-Trong hệ thống xuất hiện một tập các tiến trình,
mà mỗi tiến trình trong tập này đều chờ được cấp
tài nguyên, mà tài nguyên đó đang được một tiến
trình trong tập này chiếm giữ. Sự đợi này có thể kéo
dài vô hạn nếu không có sự tác động từ bên ngoài.

-Khi hệ thống xảy ra bế tắc nếu hệ điều hành không


kịp thời phá bỏ bế tắc thì hệ thống có thể rơi vào
tình trạng treo toàn bộ hệ thống.
II.ĐIỀU KIỆN XẢY RA
BẾ TẮC
Điều kiện cần
Sự thực hiện độc quyề n là cầ n thiế t để bảo
đảm tính đúng đắ n của kế t quả và tính toàn
vẹn của dữ liệu (chúng ta đã thấ y điề u này ở
phầ n tài nguyên găng trên đây). Tương tự,
sự ưu tiên không thể thực hiện một cách tuỳ
tiên, đặt biệt đố i với các tài nguyên có liên
quan với nhau, việc giải phóng từ một tiên
trình này có thể ảnh hưởng đế n kế t quả xử lý
của các tiế n trình khác.
Các điều kiện cần
- Loại trừ lẫn nhau (mutual excution) hay độc quyền sử
dụng: Đối với các tài nguyên không phân chia được thì
tai mỗi thời điểm chỉ có một tiến trình sử dụng được tài
nguyên.
- Giữ và đợi (hold and wait): Một tiến trình hiện tại
đang chiếm giữ tài nguyên, lại xin cấp phát thêm tài
nguyên mới.
- Không ưu tiên (No preemption): Không có tài nguyên
nào có thể được giải phóng từ một tiến trình đang
chiếm giữ nó.
Điều kiện đủ
Sự bế tắc có thể tồn tại với ba điều kiện trên, nhưng
cũng có thể không xảy ra chỉ với 3 điều kiện đó. Để
chắc chân bể tắc xảy ra cần phải có điều kiện thư tư,
đó là: Đợi vòng tròn (Circular wait):. Tức là, mỗi tiến
trình đang chiếm giữ tài nguyên mà tiến trình khác
đang cần.
Đây là lý thuyết được đưa ra bởi E. G.
COFFMAN, JR đại học Pennsylvania State, M.
J. ELPHICK đại học Newcastle upon Tyne,
Newcastle upon Tyne, England và A.
SHOSHANI tập đoàn phát triển hệ thống,
Ba điều kiện đầu là Santa Moniea, California. Khi có đủ 4 điều
điều kiện cần chứ kiện trên thì hiện tượng bế tắc sẽ xảy ra,
không phải là điều thiếu 1 trong 4 điều kiện thì hiện tượng bế
kiện đủ để xảy ra bế tắc sẽ không xảy ra.
tắc.

Điều kiện thứ tư là


kết quả tất yếu từ
ba điều kiện đầu.
III. Phòng tránh và xử lý hiện
tượng bế tắc
1.Ngăn ngừa bế tắc
Đối với điều kiện độc quyền: điều kiện này gần như
không tránh khỏi, vì sự độc quyền là cần thiết đối
với tà nguyên thuộc lại phân chia được như các
biến chung, các tập tin chia sẻ, hệ điều hành cần
phải hôc trợ sự độc quyền trên các tài nguyên này.
Tuy hệ điều hành có thể sử dụng kỹ thuật SPOOL Đối với điều kiện giữ và đợi: Điều kiện này có thể ngăn chặn bằng
(Smulataneous Peripheral Operation Online) để yêu cầu tiến trình yêu cầu tất cả tài nguyên mà nó cần tại một thời
tạo ra tài nguyên ảo cung cấp cho các tiến trình điểm và tiến trình sẽ bị khóa(blocked) cho đến khi yêu cầu tài
đồng thời. nguyên của nó được hệ điều hành đáp ứng. Phương pháp này
không hiệu quả vì:

Đối với điều kiện không ưu tiên: Điều kiện này có thể + Thứ nhất, tiến trình phải đợi trong một khoảng thời gian dài để
ngăn chặn bằng cách, khi tiến trình bị rơi vào trạng có đủ tài nguyên mới có thể chuyên sang hoạt động được , trong khi
thái khóa,hệ điều hành có thể thu hồi tài nguyên của tiến trình chỉ cần một số ít tài nguyên trong số đó là có thể hoạt động
tiến trình bị khóa để cấp phát cho tiến trình khác và được, sau đó yêu cầu tiếp.
cấp lại đầy đủ tài nguyên cho tiến trình khi tiến trình
được đưa ra khỏi trạng thái khóa. + Thứ hai, lãng phí tài nguyên, vì có thể tiến trình giữa nhiều tài
nguyên mà chỉ đến khi sắp kết thúc tiến trình mới sử dụng , và có thể
đây là những tài nguyên mà các tiến trình khác đang rất cần. Ở đây
hệ điều hành có thể tổ chức phân lớp tài nguyên hệ thống. Theo đó
tiến trình phải trả tài nguyên ở mức thấp mới được cấp phát tài
nguyên ở cấp cao hơn.
Đối với điều kiện chờ đợi còng tròn: Điều kiện này có
thể ngăn chặn bằng cácg phân lớp tài nguyên của
hệ thống.Gọi R={R1,R2...Rm} là tập hợp các tài
nguyên.Các tài nguyên được phân cấp từ 1-N.
Ví dụ: F(đĩa)=2,F(máy in)=12
2.Dự báo và tránh
bế tắc
Nguyên tắc chung của dự báo tình trạng bế tắc là trước khi phân bổ tài nguyên
cho các tiến trình phải kiểm tra xem việc phân bổ đó có đẩy hệ thống vào tình
trạng bế tắc không, nếu có phải tìm các xử lý thông tin xảy ra.

Điều này yêu cầu hệ điều hành phải có một số thông tin ưu tiên

Mỗi tiến trình phải Trạng thái phân phối


Mỗi tiến trình phải công bố
công bố số số lượng tài nguyên được xác
số số lượng tài nguyên lớn
tài nguyên lớn nhất định bởi số tài nguyên
nhất của mỗi loại mà nó
của mỗi loại mà nó khả dụng và đã được
có thể cần đến
có thể cần đến phân phối cũng như sự
yêu cầu tối đa từ các
tiến trình
Dãy tiến
trình an
toàn
Dãy tiến trình song hành P1,P2,…Pn được gọi là an toàn
nếu với mỗi Pi, tài nguyên mà nó yêu cầu có thể được
cung cấp bởi tài nguyên khả dụng hiện tại và các tài
nguyên đang được giữ bởi Pj, với j<i.

Nếu tài nguyên Pi cần đang bị Pj chiếm giữ thì nó có


thể đợi cho đến khi tất cả các Pj kết thúc.

Khi Pj kết thúc, Pi có thể giành được các tài nguyên


cần thiết, thực hiện rổi trả lại các tài nguyên đó và kết
thúc.
Một hệ thống ở trạng thái an toàn tại một thời điểm nếu dãy tiến
trình song hành tại thời điểm đó có thể được sắp xếp thành một
dãy an toàn.
Giới thiêu thuật toán
chuyển sang hệ an toàn
Giả sử có n tiến trình và m kiểu tài nguyên, các cấu trúc dữ liệu được sử dụng
trong thuật toán được xây dựng như sau:
Available: Available(j) =k có nghĩa là có k tài nguyên kiểu rj có thể sử dụng
Max: Max(i,j)=k có nghĩa là tiến trình Pi có thể yêu cầu tối đa k tài nguyên kiểu rj.
Allocation: Allocation(i,j)=k có nghĩa là tiến trình Pi đang sử dụng k tài nguyên
kiểu rj
Need: Need(i,j)=k có nghĩa là tiến trình Pi đang còn cần k tài nguyên kiểu rj
Ta có Need(i,j)=Max(i,j)-Allocation(i,j)
Request: Request(i,j)=k có nghĩa là tiến trình Pi đang yêu cầu k tài nguyên kiểu rj
Giới thiệu thuật toán
kiểm tra tính an toàn
của hệ thống
Trong thuật toán sử dụng thêm hai cấu trúc dữ liệu sau:
Work: Mảng 1 chiều có m phần từ thể hiện số tài nguyên khá
dụng của hệ thống và số tài nguyên do các tiến trình P; đang sử
dụng với điều kiện j<i.
Finish: Mảng 1 chiều n phần tử đánh dấu tiến trình đã xét
3.Phát hiện bế
tắc
Khi một hệ thống không thể thực hiện được việc ngăn ngừa
hay tránh xa bế tắc thì bế tắc có thể xuất hiện. Khi đó hệ
thống phải cung cấp:

Giải thuật phát hiện bế tắc

Giải thuật phục hồi từ bế tắc


Mỗi loại tài nguyên có
một cá thể
Khi tất cả tài nguyên chỉ có 1 cá thể, giải thuật xác định bế tắc sử dụng một biến thể của
đồ thị phân phối tài nguyên, bằng cách bỏ đi các nút của loại tài nguyên và bỏ đi các
cạnh thích hợp. Đó chính là đồ thị wait-for.

Các nút là các tiến trình


Pi -> Pj nếu Pi đang đợi Pj

Định kỳ sử dụng giải thuật tìm kiếm chu trình trong đồ thị. Giải thuật đó đòi hỏi có n2 phép
toán, với n là số đỉnh trong đồ thị: có chu trình -> có thể có bế tắc.
Mỗi loại tài nguyên có
nhiều cá thể
Available : Vector độ dài m xác định số tài nguyên khả dụng của mỗi loại.

Allocation : Ma trận n*m xác định các tài nguyên của mỗi loại hiện đang được phân phối
cho mỗi tiến trình.

Request : Ma trận n*m xác định 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 k cá thể nữa của loại tài nguyên Rj.
Giải thuật phát hiện bế
tắc
Gán Work và Finish là các vector độ dài m và n. Khởi tạo:
Work = Available
For i:=1 to n do If Allocation !=0 then Finish[i] = False
Else Finish[i] := True

Tìm chỉ số I thỏa mãn cả 2 điều kiện:


Finish[i] = False
Requesti <=Work nếu không tồn tại I nhảy sang bước
Work:= Work + Allocation

Finish[i]:= True nhảy sang bước 2.

Nếu Finish[i]= False, với một số I, 1<= i <= n thì Pi bị bế tắc, hệ thống ở trong trạng thái bế tắc.
4.Xử lý bế tắc
Chờ đợi vòng tròn Đảm bảo hệ thố ng không bao giờ
bế tắ c

Thiế t lập một trình tự tổng Áp dụng các chiế n lược ràng buộc và
thể của tấ t cả các loại tài quản lý tài nguyên từ thiế t kế để tránh bế
nguyên để giữ quyề n ưu tắ c.
tiên. Kiểm soát cách tiế n trình yêu cầ u và sử
Ràng buộc tiế n trình yêu dụng tài nguyên. Ràng buộc và Chiế n lược yêu cầ u tài
cầ u tài nguyên theo thứ tự Cân nhắ c về việc cho phép hệ thố ng vào nguyên
tăng dầ n để tránh xung đột trạng thái bế tắ c và khôi phục, hoặc xem
và giữ cho hệ thố ng linh xét vấ n đề như không bao giờ xảy ra.
Đặt ràng buộc cách thức yêu cầ u
hoạt.
tài nguyên để tránh xung đột và bế
tắ c.
Sử dụng độc quyề n truy xuấ t và
giữ và chờ để quản lý sự chia sẻ tài
nguyên.
Thông báo và Tự xử lý Thu hồ i tài nguyên Hạn chế chiế m đoạt tài nguyên và
thiế t lập chiế n lược chờ đợi vòng
tròn.
Khi hệ thố ng phát hiện bế
Ngắ t tài nguyên từ một số
tắ c, thông báo có thể được
tiế n trình để cấ p phát cho
gửi đế n bộ phận kiểm soát
các tiế n trình khác có nhu
để thực hiện các biện pháp
cầ u.
khắ c phục.
Quan trọng để đảm bảo
Tự xử lý có thể bao gồ m
rằ ng quá trình ngắ t tài
việc đánh giá tình trạng,
nguyên không gây ảnh hưởng
giải phóng tài nguyên, hoặc
đế n khả năng hoàn thành
đình chỉ các tiế n trình
công việc của tiế n trình.
không quan trọng.
Kế t luận chung
Như vậy mỗ i tình huố ng bế tắ c của hệ thố ng thì dung một phương pháp
xử lý khác nhau. Cầ n phải chỉ các tình huố ng thành các lớp khác nhau và
mỗ i lớp thì áp dụng một phương pháp xử lý thích hợp.

Tài nguyên hệ thố ng: Dùng biện pháp ngăn ngừa bằ ng cách sắ p thứ tự tài
nguyên.

Bộ nhớ trong( RAM): Dùng biện pháp ngăn ngừa bằ ng cách ngắ t tài
nguyên.

Các thiế t bị có thể phân bổ được: Dùng các thuật toán tránh bế tắ c.

Bộ nhớ đệm: Dùng phương pháp phân bố trước.


THANK FOR
WATCHING

You might also like