• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    미해결

6.3 peterson's solution 질문이 있습니다

22.05.24 05:55 작성 조회수 105

0

안녕하세요 교수님 좋은 강의 언제나 감사드립니다

 

다름이 아니라 피터슨 솔루션 코드에서

while(true) {

flag[i] = true;

turn = j; //다음 순서로 j 지정

while (flag[i] && turn == j ) // j가 실행중이고 자기 차례라면 종료까지 대기

}

이렇게 설명을 해주셨는데, 이해가 잘 되지 않습니다!

다음 순서로 j를 지정해준 것이 while의 조건에 들어가는 것으로 이해가 되는데... 설명을 부탁드려도 될까요?

 

 

답변 1

답변을 작성해보세요.

0

이 부분은 단순하게 설명하기가 매우 어렵습니다.

 

두 개의 프로세스가 서로 티키타카를 잘 하기 위해서

각각 flag를 하나씩 가지고, turn을 가지고 차례를 조정하는 것입니다.

 

flag는 mutual exclusion을, turn을 순서를 조정해 주는 것이지요.

 

위와 같은 기본적인 개념을 바탕으로 직접 실험해 보면서 이해해 보시기 바랍니다.

아마 직접 실행을 해 보면 동기화가 잘 안될 거예요.

그것은 단일 프로세서 환경이 아닌 경우에 발생하는 문제입니다.

피터슨 솔루션은 이론적 솔루션이기 때문에 이해가 쉽지는 않습니다.

차근차근 따라가 보시기 바랍니다.