funny_lass89

New Member
pro nào giúp em giải bài tập này với!


em mới học nên đau cả đầu mà chưa giải được!



Một biến X được sẻ chia bởi 2 tiến trình thực hiện đoạn code sau:


do


x=x+1;


if (x==20) x=0;


while(TRUE);


bắt đầu vớ giá trị x=0, chứng tỏ rằng giá trị x có thể vượt qua 20. cần sửa chữa đoạn chương trình trên ntn để bảo đảm rằng x không vượt quá 20?



giúp em với các anh!!!


Thanks Thanks Thanks
 

le_tinh1991

New Member
Khi x=19, P1 đang ở chu kỳ CPU
thực hiện: x=x+1 =>x=20
Giả sử lúc này hết chu kỳ CPU, P2 được điều phối nhận CPU và thực hiện x=x+1 =>x=21 => x vượt quá 20
P1 hay P2 thực hiện
if(x==20) x=20; không xảy ra


semaphore s=1;
while(True)
{
down(s);
if(++x==20) x=0;
up(s);
}

Như vậy là xong rùi đó bạn
 
Các chủ đề có liên quan khác

Các chủ đề có liên quan khác

Top