임계영역 문제를 공부하다가 궁금한게 생겼어요!!

gyunn의 이미지

Operating System Concept 8th 번역서를 보면..

" 자기의 임계 영역에서 실행중인 프로세스가 없고, 자신의 임계영역으로 진입하려고 하는 프로세스들이 있다면,
**나머지 영역**에서 실행중이지 않은 프로세스들만 임계 영역으로 진입할 프로세스를 결졍하는데 참여할 수 있고, 이 선택은 무기한 연기될 수 없다. "

라고 나옵니다.

여기서 나머지 영역이 remained section을 가리키는거 같은데..

critical section을 실행중인 프로세스도 아니고 remained section에서 실행중인 프로세스라면

critical section에 진입하는데엔 상관 없지 않나요?

jick의 이미지

Remainder section에 있는 프로세스가 락을 걸고 싶으면 먼저 entry section에 들어와야 하는데, 그러면 더 이상 remainder section에 있는 프로세스가 아니지요.

위의 제한 조건이 있는 이유는 예를 들자면, 아주 변태적인 락 알고리즘을 만들어서 프로세스 1번이 "내가 다음번에 critical section에 또 들어올 테니까 니들은 아무도 들어오지 말고 기다리고 있어!" 한 다음에 remainder section으로 들어가 버리면 다른 프로세스들은 모두 손가락 빨면서 기다리고 있어야 할까요? 위의 제한 조건에 따르면 이런 알고리즘은 mutual exclusion의 정의에 부합하지 않으므로 제대로 된 알고리즘이라 할 수 없습니다.

하지만 이 제한 조건을 없애버리면 remainder section에 있는 1번 프로세스가 "임계 영역으로 진입할 프로세스를 결정하는데 참여중"인 게 허용되므로 이런 알고리즘도 가능하게 되죠.

gyunn의 이미지

크아
remainder section에 있는 놈들은 결정에 참여할 수 없군요..
감사합니다!