Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

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

Tags: