운영체제정보처리기사(구) · 2016년03월06일 · 43/100
43.세마포어를 사용해서 상호 배제를 구현할 수 있다. 세마포어를 2로 초기화하였다면, 그 의미는 무엇인가?
1
임계구역에 2개의 프로세서가 들어갈 수 있다.정답
2
두 개의 임계구역이 존재한다.
3
모든 세마포어의 기본 값은 2이다.
4
생산자/소비자를 구현하는 세마포어의 초기 값은 2이다.
해설
세마포어를 2로 초기화 했다면 A,B프로세스가 접근 했을때 1. A -> 임계구역(2) 2. 임계구역(1) -> A(lock) 3. B -> 임계구역(1) 4. 임계구역(0) ->B(lock) 5. 임계구역(1) <- A(unlock) 6. 임계구역(2) <- B(unlock) 이렇게 2개의 프로세스를 받아들여 locking 시키고 unlock로 자원을 돌려받는다. 예를 들어 세마포어를 1로 초기화 했다면 1. A -> 임계구역(1) 2. 임계구역(0) -> A(lock) 3. B -> 임계구역(0) 4. B는 A가 unlock되서 자원을 반납할때 까지 대기하게 된다. 5. 임계구역(1) <- A(unlock) 6. B-> 임계구역(1) 7. 임계구역(0) -> B(lock) 8. 임계구역(1) <- B(unlock) 그러므로 답은 1번 2번 : 임계구역이 1개 자원이 2개이므로 2개의 임계구역이 있는게 아님 3번 : 계수 세마포어일 경우 기본값은 음수를 제외한 1,2,3,4,5...n 4번 : 꼭 2로 초기화 할 필요는 없다.