lanxinh chuong4 tiến trình tương tranh

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 Pno gán = 1 do đó chỉ có P1 đc đư vào critical region. P2 khi muốn vào critical region thấy biến Pno có giá trị 1 do đó pải chờ = vòng lặp rỗng. nó chờ đến khi pno=2 tức là khi p1 ra khỏi critical region và đặt Pno=2 . vậy ctr đã đảm bảo loại trừ lẫn nhau

* phiên bản 2

- trong V2 sử dụng 2 biến logic f1 và f2 chúng nhận giá trị true khi P tương úng nằm trong critical region

- cả 2 P cùng thực hiện , đồng thời thử vào critical region .các biến f1 và f2 có giá trị fale. P1 kiểm tra thấy f2 thấy f2= false và thoát khỏi vòng lặp chờ , trc khi nó kip đặt f1= true thì đến lượt p2 đc chiếm BXL , P 2 cũng có thế kiểm tra thấy f1 là false(vì lúc đó P1 chưa kịp đặt) lúc đó P2 đặt f2= true và cũng vào critical region như thế cả 2 P cùng vào chế độ critical region , do đó V2 k đảm bảo loại trừ lẫn nhau

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