HỆ ĐIỀU HÀNH Giao tiếp giữa các tiến trình
Trang 1HE DIEU HANH
Giao ti€p gitta cac tién trình
Trang 2Một sô khái niệm cơ bản”
= Tién trinh độc lập không ảnh hưởng và không bị ảnh
hưởng bởi việc thực thị của các tiễn trình khác
"7jến frình hợp tác (không độc lập) có thê ảnh hưởng
và bị ảnh hưởng bởi việc thực thi của các tiễn trình
khác
" Ưu điểm của việc hợp tác tiễn trình:
Chia sẻ thông tin
Tăng tốc tính toán (xử lý song song)
Tính module hóa
Tiện lợi
Trang 31
Một sô khái niệm cơ bản”
" Các tiên trình sử dụng và cập nhập dữ liệu chia sẻ như các biến, file và cơ sở dữ liệu dùng chung
= Thao tac ghi phải độc lập từng đôi một để ngăn ngừa tình trạng đụng độ, có thê dẫn đến tính không toàn
vẹn dữ liệu
4 |i" Cac mién găng dùng để cung cấp sự toàn vẹn dữ liệu
Vx l[= Một tiến trình đòi hỏi miền găng phải không bị chờ
mãi mãi: deadlock
Trang 4Dung do (race condition)
= Race condition: tinh huông mà nhiêu tiên trình cùng
truy cập và thao tác dữ liệu chia sẻ một cách đồng
thời Dữ liệu cuôi cùng phụ thuộc vào tiên trình cuối
củng
= Dé ngăn ngừa đụng độ, các tiễn trình đồng hành phải
được đồng bộ hóa
Trang 5Dung do (race condition)
Trang 61
Mién gang (critical section)
= n tién trinh dau tranh véi nhau dé sử dung mot số dữ
liệu nào đó
| “Mỗi tiên trình có một đoạn mã, gọi là miễn găng
A (critical section (CS)), tai do dtr ligu chia se được
= Van đề: bao dam rang khi mot tién trinh đang thực
thi trong miễn găng của nó, không co tién trinh nao
khác được quyên thực thi trong miễn găng của nó
Trang 7Net canh mién gang
= Khi m6ét tién trinh thi hanh đoạn mã thao tác trên dữ liệu chia sẻ (hay tài nguyễn), chúng ta nói răng tiên trình đó đang trong miền căng của nó
“Việc thực thi các miên găng phải có tính duy nhất: tại I} bat ky thời điểm nào, chỉ có duy nhất một tiên trình
được quyền thực thi trong miên găng của nó (ngay cả
với nhiêu bộ xử lý)
"m VỊ vậy mỗi tiên trình phải yêu câu quyên trước khi vào miền găng
Trang 8Net canh mién gang
= Doan mã thể hiện yêu cau nay được gọi làEntry Section (ES)
= Mién găng (CS) có thê theo sau là Leave/Exit
Section (LS)
= Phan đoạn mã còn lại là Remainder Section (RS)
= Van dé của miên găng là thiết kê một giao thức mà các tiên trình có thể sử dụng đề hành động của chúng
sẽ không phụ thuộc vào thứ tự mà sự thi hành của
chung duoc chen vao
Trang 9: Giải pháp cho van dé mién gang
= C63 yéu cau ma mét giai phap ding can phải thỏa
man:
1 Mutual Exclusion: khong co 2 tiễn trình cùng ở
trong miên gang mot lic
2 Progress: Một tiễn trình bên ngoài miên gang
không được ngăn cản các tiên trình khác vào mién gang
3 Bounded Waiting: khong có tiễn trình nào phải
chờ vô hạn để vào miền găng
= Chi can một trong ba điêu kiện trên sai thì giải
pháp đưa ra là sa
Trang 10Cầu trúc của các tiên trình
“Câu trúc tông quát của tiên trình P, (P,)
do { entry section
critical section leave section
remainder section
‘ while (1);
" Lưu ý: Các tiễn trình có thê chia sẻ các biên dùng
chung đề đông bộ hóa hoạt động của chúng
10
Trang 11
Phân loại các øiái pháp cho CS
" Giai phap busy-waiting
« Alg 1 & 2, Peterson, Dekker, Bakery,
Trang 12
Giải thuật 1
= Bién chia sé
- néu turn =i= P, dudc phép vao critical section
= Thoa man mutual exclusion (1)
" Progress (2) & bounded-waiting (3) ?
12
Trang 13Giải thuật 1
Process PO:
do while(turn !=0 );
Nếu turn=0, P0 được vào CS và sau đó thực thi vùng RS (turn=1)
Đến PI vào CS và sau đó thực thi RS (turn=0) và tìm cách vào CS một lần
nữa nhưng yêu cầu bị từ chối !!! P1 phải chờ P0 !!!
13
Trang 14
Giải thuật 2
" Biến chia sẻ
: boolean flag[2]; /* khởi đầu flag [0] = flag [1] = false */
: Néu flag [i] = true > P, san sang vao critical section
Trang 15
Giải thuật 3 (Peterson)
= Bién chia sẻ: kết hợp cả giải thuật 1 và 2
Trang 16
Giải thuật Bakery: N process
Trước khi vào CS, process Pi nhận một con sé Process nao giff
con số nhỏ nhất thì được vào CS
Trường hợp Pi và Pj cùng nhận được một chỉ số:
= Néui <j thi Pi duoc vào trước, ngược lại PỊ được vào trước
Khi ra khói CS, Pi đặt lại số của mình bằng 0
Cơ chế cấp số cho các process thường tạo các số theo cơ chế tăng
dan, vi du 1,2,3,3,3,3,4,5
16
Trang 17lock = false;
Remainder Section;
17
Trang 18= wait(S)
= signal(S)
18
Trang 19= Dé tranh “busy waiting”: khi một tiễn trình phải đợi, nó sẽ
được đặt vào hàng đợi block
" Khi mội tiên trình phải đợi một semaphore S, nó sẽ bị bloek
và đặt vào hàng đợi của semaphore tương ứng
“ Thao tác signal lây một tiễn trình từ trong hàng đợi và đặt nó vào trong danh sách các tiên trình ở trạng thái săn sàng
19
Trang 20=" Gia su co 2 thao tac co ban:
= Block tam cho tién trinh cho
- wakeup(P) khôi phục lại sự thi hành của tiễn trình bị block P
20
Trang 22
Van đề deadlock trong hệ thống
a 7? huống: một tập các process bị blocked, mỗi process giữ tài
nguyên và đang chờ tài nguyên mà process khác trong tập đang giữ
oO Ví dụ †
— Giả sử hệ thống có 2 file trên đĩa
— P1 và P2 mỗi process đang mở một file và yêu cầu mở file kia
Trang 23-8.22-Mô hình hóa hệ thống
Hệ thống gồm các loại /2/ nguyên, kí hiệu #4, #%, , /?„, bao
gồm:
— CPU cycle, không gian bộ nhớ, thiết bị I/O, file, semaphore,
Mỗi loại tài nguyên /#,có I⁄,thực thể (instance)
Process thường sử dụng tài nguyên theo thứ tự sau
— Yêu cầu (request): process phải chờ nếu yêu câu không được đáp
ứng ngay
— Su dung (use): process su dung tai nguyén
— Hoan tra (release): process hoan tra tai nguyén
Cac tac vu yéu cau (request) va hoan tra (release) déu là
Trang 24
Điều kiện cần để xảy ra deadlock
Bốn điều kiện cần (necessary condition) để xảy ra
deadlock
Mutual exclusion: it nhat mot tai nguyén được giữ theo nonsharable mode
Hold and wait: mot process đang giữ ít nhất một tài
nguyên và đợi thêm tài nguyên do quá trình khác đang giữ
Trang 25
-8.24-Điều kiện cần để xảy ra deadlock (tt)
3 No preemption: tai nguyên không thé bị lấy lại, mà
chỉ có thể được trả lại từ process đang giữ tài
nguyên đó khi nó muốn
‘| 4 Circular wait: ton tai một chu trình của các yêu cầu
tài nguyên và tài nguyên đã được cấp phái
-8.25-
Trang 26
Hesource Allocation Graph
a Resource allocation graph (RAG) la do thị có hướng, với tập đỉnh và tập cạnh E
— Tap đỉnh gồm 2 loại:
= P={P,, P, ,P,} — (Tất cả process trong hệ thống)
" Z={”, ñ,, „} (Tất cả tài nguyên trong hệ thống)
- Tập cạnh E gồm 2 loại:
" /eqguesí edøe: cạnh có hướng từ 7Ø, đến #?,
" Assignment edge: cạnh có hướng tu A, dén P,
Trang 27
-8.26-Resource Allocation Graph (tt)
Trang 31-8.30-RAG va deadlock (tt)
RAG khong chứa chu trình (cycle) = khong co
deadlock
RAG chứa một (hay nhiêu) chu trình
— Nếu mỗi loại tài nguyên chỉ có một thực thể — deadlock
— Nếu mỗi loại tài nguyên có nhiều thực thể — có thể xảy ra
deadlock
-8.31-
Trang 32
Các phương pháp giải quyết deadlock
a Dùng một giao thức (protocol) để ngan (preventing)
hoac ¢ranh (avoiding) deadlock, bao dam rang hé
thống không rơi vao tinh trang deadlock
a Cho phép hé thong vao trang thai deadlock, nhung
Í sau đó phát hiện deadlock và phục hồi hệ thống
n Bỏ qua mọi vấn đề, xem như deadlock không bao giờ xảy ra trong hệ thống
© Khá nhiều hệ điều hành sử dụng phương pháp này
— Deadlock khéng được phát hiện, dẫn đến việc giảm hiệu
suất của hệ thống Cuối cùng, hệ thống có thể ngưng hoạt
động và phải được khởi động lại
Trang 33
-8.32-Ngan deadlock
Ngan deadlock bằng cách ngăn một trong 4 điều
kien gay deadlock
1 Ngan mutual exclusion
— ddi vdi nonsharable resource (vd: printer): không làm được
— ddi vdi sharable resource (vd: read-only file): không cân
thiết
-8.33-
Trang 34Ngan deadlock (tt)
2 Ngan Hold and Wait
— Cách 1: moi process yêu cầu toàn bộ tài nguyên cần thiết
một lân Nếu có đủ tài nguyên thì hệ thông sẽ cấp phát, néu không đủ tài nguyên thì process phai bi blocked
— Cách 2: khi yêu cầu tài nguyên, process không được giữ
bất kỳ tài nguyên nào Nêu đang có thì phải trả lại trước khi
yêu câu
— Khuyết điểm của các cách trên:
= Hiéu suat su dung tai nguyén (resource utilization) thấp
= Qua trinh cé thé bi starvation
Trang 35
-8.34-Ngan deadlock (tt)
Ngan No Preemption: néu process A co git tài nguyên và
dang yéu cau tai nguyén khac nhung tai nguyén nay chua cap
phát ngay được thì
— Cách 1: Hệ thống lấy lại mọi tài nguyên mà A đang giữ
“A chỉ bắt đầu lại được khi có được các tài nguyên đã bị
lấy lại cùng với tài nguyên đang yêu câu
- Cách 2: Hệ thống sẽ xem tài nguyên mà A yêu cầu
“ Nếu tài nguyên được giữ bởi một process khác đang
đợi thêm tài nguyên, tài nguyên này được hệ thống lấy lại và cấp phát cho A
“ Nếu tài nguyên được giữ bởi process không đợi tài nguyên, A phải đợi và tài nguyên của A bị lấy lại Tuy nhiên hệ thống chỉ lấy lại các tài nguyên mà process khác yêu cầu
-8.35-
Trang 36Ngan deadlock (tt)
4 Nga@n Circular Wait: tap các loại tài nguyên trong hệ thống
được gán một thứ tự hoàn toàn
—_ Ví dụ: F(tape drive) = 1, F(disk drive) = 5, F(printer) = 12
= F la ham dinh nghĩa thứ tự trên tập các loại tài nguyên
Trang 37
Ngan deadlock (tt)
4 Ngan Circular Wait (tt)
Cách 1: mỗi process chỉ có thể yêu cầu thực thể của một loại tài
nguyên theo thứ tự tăng dân của loại tài nguyên Ví dụ
= Chudi yéu cau thực thể hợp lệ: tape drive —> disk drive —
printer
= Chudi yêu cầu thực thể không hợp |é: disk drive > tape drive
Cách 2: Khi một process yêu cầu một thực thể của loại tài nguyên
H, thì nó phải trả lại các tài nguyên R, với F(R;) > F(R))
"_ Vậy F(R„) < F(R„), mâu thuẩn# 2
Trang 38
-8.37-Deadlock avoidance
Deadlock prevention su dung tai nguyén khéng hiéu qua
Deadlock avoidance vẫn đảm bảo hiệu suất sử dụng tài nguyên
tối đa đến mức có thể
Yêu cầu mỗi process khai báo số lượng tài nguyên tối đa cần
đề thực hiện công việc
Giải thuật deadlock-avoidance sẽ kiểm tra trang thai cấp phát
tai nguyén (resource-allocation state) dé bao dam hệ thống không bao gid roi vao deadlock
Trạng thái cấp phát tài nguyên được định nghĩa dựa trên số tài
nguyên còn lại, số tài nguyên đã được cấp phát và yêu cầu tối
đa của các process
Trang 39
-8.38-Trang thai safe va unsafe
na Một trạng thái của hệ thống được gọi là an foan (safe)
néu ton tai mot chud/ an toan (safe sequence)
-8.39-
Trang 40
Chuỗi an toàn
a Một chuỗi quá trình <P-, P¿, , P„> là mét chud/ an
toan néu
— Với mọi ¡ = 1, , n, tài nguyên (mà P,còn có thể yêu cầu) có
thể được thỏa bởi tài nguyên đang sẵn sàng (available)
cùng với tài nguyên mà tât cả P,, j < i, dang gil
a Một trạng thái của hệ thống được gọi là &/ông a7
foân (unsafe) nếu không tồn tại một chuôi an toàn
Trang 41
-8.40-Chuỗi an toàn (tt)
Ví dụ: Hệ thống có 12 tape drives và 3 quá trình Pạ, P.,
P
a Tai thdi diém t,
cần tốiđa đang giữ
— Con 8 tape drive san sang
— Chuỗi <P;, Pạ, P¿> là chuỗi an toàn — hệ thống là an toàn
-8.41-
Trang 43
na Khi một process yêu cầu một tài nguyên đang sẵn sàng (available), hệ thống sẽ kiểm tra: nếu việc cấp phát này không dẫn đến tình trạng unsafe thì sẽ cấp
phát ngay
Trang 44
-8.43-Trạng thái safe/unsafe và deadlock
a Nếu hệ thống đang ở trạng thái safe — không deadlock
a Nếu hệ thống đang ở trạng thái unsafe — có khả năng dẫn đến
deadlock
a Tránh deadlock bang cách bảo đảm hệ thống không đi đến
trang thai unsafe
Trang 45Giải thuật banker
ag Áp dụng cho hệ thống cấp phát tài nguyên trong đó
mỗi loại tài nguyên có thể có nhiều instance
a Bắt chước nghiệp vụ ngân hàng (banking)
na Điều kiện
— Mỗi process phải khai báo số lượng thực thể (instance) tối
đa của mỗi loại tài nguyên mà nó cần
— Khi process yêu cầu tài nguyên thì có thể phải đợi mặc dù tài nguyên được yêu cầu đang có sẵn
— Khi process đã có được đầy đủ tài nguyên thì phải hoàn trả trong một khoảng thời gian hữu hạn nào đó
Trang 46Giải thuật banker (tt)
/: SỐ process, / số loại tài nguyên
Các cấu trúc dữ liệu
Available: vector do dai ™
Available[ /] = 4 <= loai tai nguyen Aco x instance san sang
Need[i, j] = k <= Pi can thém k instance cua Rj
Nhận xét: Need [i, j] = Max[i, j] — Allocation [i, j]
Trang 47-8.46-Giải thuật kiểm tra trạng thái an toàn
Tìm một chuỗi an toàn
1 Gọi Work và Finish là hai vector độ dài là m và n Khởi tạo
Work := Available Finish[i] := false, ¡ = †1, , n
2 Tìm ¡ thỏa
(a) Finish [i] = false
(b) Need, <Work (hang thu i cua Need) Nếu không tôn tại ¡ như vậy, đến bước 4
3.Work := Work + Allocation,
Finish[i] := true quay về bước 2
4 Nếu Finish[i] = true, ¡ = 1, , n, thì hệ thống đang ở trạng thái
safe
Thời gian chạy của giải thuật là (X7?)
Trang 48-8.47-Giải thuật cấp phát tài nguyên
Goi Request, la request vector cua process P
Request, [j] = k <= P, can k instance cua tai nguyén R
1 Nếu Request; < Need, thì đến bước 2 Nếu không, báo lỗi vì process đã vượt yêu câu tối đa
2 Nếu Request, < Available thì qua bước 3 Nếu không,
P, phải chờ vì tài nguyên không còn đủ để cấp phat
Trang 49
Giải thuật cấp phát tài nguyên (tt)
3 Giả định cấp phát tài nguyên đáp ứng yêu câu của
P, bằng cách cập nhật trạng thái hệ thống như sau:
Available := Available — Request, Allocation, := Allocation, + Request, Need, = Need; — Request,
Ap dung giai thuật kiểm tra trạng thái an toàn lên trạng thái trên
“" Nếu trạng thái là safe thì tài nguyên được cấp thực sự cho
P;
= Néu trang thai là unsafe thì P; phải đợi, va
¢ phục hồi trạng thái:
Available := Available + Request,
Allocation, := Allocation; — Request, Need, ‘= Need, + Request,