2012-06-17 8 views
0

아래의 솔루션 은 임계 섹션 문제의 솔루션 기준을 어떻게 만족합니까?중요 섹션

다음 중 만족하지 않는 세 가지 상황은 무엇입니까?
1.
2. 진행
3. 경계 대기 상호 배제

나는 그것이 무엇을 2 & 3에 대한 상호 배제하지만 을 만족하는 것을 알아?
숙제가 아니라는 점에 유의하십시오. 나는 많이 생각했지만 여전히 명확하지 않습니다.

[편집]
삭제 된 그림 & 삭제 된 코드.

Pi’s Algorithm  
    Var flag : array [ i…j] of boolean  
    repeat 
    flag [i] = true;  
While (flag [j] == “ true ”) do no-op;   


      Critical section 


Flag [i]=“ false ”; 
until false 

다른 프로세스

Pj’s Algorithm  
    Var flag : array [ i…j] of boolean 
repeat 
    flag [ j ] = true; 
While (flag [ i ] == “ true ”) do no-op; 


     Critical section 


Flag [j]=“ false ”; 
until false 
+1

숙제가 없다면 무엇입니까? – JJJ

+0

이것은 하나의 변수 만 가져 가면 왜 peterson 문제가 실패하는지 묻는 인터뷰 질문입니까? 그래서 저는 단 하나의 변수에 대한 코드를 작성했습니다 깃발을 놓고 다른 쪽을 내버려 둬. 이제 어떻게 실패 할 지 알 수 없다. –

답변

0

시스템이 교착 될 수

2 프로세스 : P1, P2를. 나는 i와 j가 프로세스의 ID이고 플래그 배열과 같은 공유 변수라고 가정한다.

그런 다음 P1은 실행을 시작 :

flag[1] := true; 

-> 여기 P1은 스케줄러에 의해 중단됩니다 및 P2가 실행 시작 :

flag[2] := true; 
while (flag[1] == true) do nop ; 

-> P2는이 루프에 남아 있습니다. 나중에 스케줄러가 P1을 다시 선택합니다.

while (flag[2] == true) do nop; 

-> P1 또한 루프에서 멈 춥니 다. 진행이 없습니다. 이 교착 상태는 # 2와 # 3을 위반합니다. 또한, 프로세스 중 하나가 굶어 죽을 수도 있습니다 (다른 하나는 항상 전체 코드를 통과하며 flag [i] : = false 및 flag [i] : = true 사이에서 중단되지 않습니다) while 루프를 빠져 나갈 수있는 기회

+0

나는 동의한다. 그런 종류의 상황이 피터슨의 해결책에서도 일어날 수 있다고 생각하지 않는다. 그러나 여전히 그렇다. 그것은 임계 단면 문제에 대한 해결책을 제공한다는 것을 증명했습니다.이 링크를 참조하십시오 : http://stackoverflow.com/questions/4849077/unable-to-understand-correctness-of-peterson-algorithm –