인프런 커뮤니티 질문&답변

박세은님의 프로필 이미지
박세은

작성한 질문수

운영체제 공룡책 강의

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

작성

·

175

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을 순서를 조정해 주는 것이지요.

 

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

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

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

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

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

 

 

 

 

박세은님의 프로필 이미지
박세은

작성한 질문수

질문하기