chương 4 tiến trình tương tranh k đồng bộ
4.1
Trạng thái loại trừ là trạng thái khi 1 P truy nhập đến dữ liệu chung thì cấm tất cả các P khác truy nhập đến cung dữ liệu vào thời điểm đó
VD xét 2 P điều khiển ứng vs 2 người dùng đồng thời muốn truy nhập đến biến toàn cục totaline, để tăng biến đó giả sử mỗi P ứng dụng đều dùng các lệnh sau
1-load totaline
2-totaline:=totaline+1
3-store totaline
Khi một P đang truy nhập đến biến totaline thì các P khác pải đợi đếm khi P đầu tiên kết thúc truy nhập
4.2 sự khác nhau giữa phiên bản 1 và phiên bản 2 của thuật toán decker
* phiên bản 1:
- Trong VS1 việc thực hiện mutual exclusion chỉ bằng 1 biến do đó có vấn đề các P vào khoảng tới hạn theo thứ tự cố định
- cả 2 P cùng thực hiện. vì đầu tiên biến P
4.3Mô tả thuật toán decker
- sử dụng 3 biến
f1- tiến trình 1
f2- tiến trình 2
s- quyền ưu tiên quyết định tiến trình đi tiếp
P1
Begin
F1:=true;
While f2= true do
If s=2 then
Begin
F1= false;
While s=2 do
F1:= true;
End;
F1=fasle;
S=2;
End;
P2
Begin
F2:=true;
While f1=true do
If s=1 then
Begin
F2:=fasle;
While s=1 do
F2:=true;
End;
F2:=false;
S=1;
End;
Begin
F1:=false;
F2:=false;
S:=1
Parbegin
P1;
P2;
Parend;
End;
4.4 thực hiện loại trừ bằng semaphore
- Lệnh P:
If s > 0 then s:=s-1{semaphore chỉ nhận giá trị tự nhiên}
Else waiting for s
- lệnh V
if (exit P waiting for s) then allow one of them(waiting P) continue
else s = s+1
• program semaphore
var active : semaphore
P1;
Begin
While true do begin
P(active);
Critical region;
V(active);
End;
P2
Begin
While true do begin
P(active);
Critical region;
V(active);
End;
Begin
Initlize semaphore(active,1);
Parbegin
P1;
P2;
Parend
End.
Bạn đang đọc truyện trên: Truyen247.Pro