chương4 tiến trình tương tranh k đồng bộ

Màu nền
Font chữ
Font size
Chiều cao dòng

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: Truyen2U.Pro