프로세스 X 코드 :이 코드 섹션은 어떻게 제한 대기 상태를 유지합니까?
제한된 대기가 여기에서 어떻게 달성되는지 이해할 수 없습니다.
do {
while (turn != x);
// critical section code goes here.
turn = y;
// remainder section code goes here.
} while(1);
프로세스 X 코드 :이 코드 섹션은 어떻게 제한 대기 상태를 유지합니까?
제한된 대기가 여기에서 어떻게 달성되는지 이해할 수 없습니다.
do {
while (turn != x);
// critical section code goes here.
turn = y;
// remainder section code goes here.
} while(1);
이 코드 은 제한 대기를 유지하지 않습니다.
여기 프로세스 X가 무제한 대기하는 시나리오가 있습니다.
Process X
이 Critical Section
이라고 가정하고 남겨 둡니다. 변수 turn
은 y
으로 설정됩니다. Process X
에 Critical Section
을 다시 입력하려면 변수 turn
을 x
으로 설정해야합니다. 이는 Process Y
이 Critical Section
으로 입력되는 한 발생할 수 없습니다.
그래서, 두 프로세스 X
및 Y
, 대안으로이 Critical Section
를 입력 할 경우에만 만 다음 bounded waiting
만족, 그렇지 않으면 없습니다.
것은 당신이 "운영 체제 개념"에 따라, OS 시험을 준비하는 경우, 대답은 : ". 그것은 않습니다 유지 경계을 기다리고 있지만, 진행 상황을 유지하지 않습니다"
Pi와 Pj가 모두 임계 구역에 들어가고 회전 = i가되고 싶다면 Pi가 먼저 입력되고 Pj가 대기합니다. Pi가 종료 된 후에도 Pi가 다시 임계 구역에 들어가기를 원한다면 Pj는 여전히 Pi가 다시 입력됩니다. 그래서 Pj는 최대 1 초 동안 CS를 입력하십시오.
Pj가 CS를 입력하고 turn = i를 원할 경우 Pi를 사용해야하기 때문에 CS를 지금 입력하고 싶지는 않습니다. turn = j을 설정하십시오.
언제든지 문의하십시오. –