CS/운영체제
[OS] 조건 변수와 모니터
yoon_seon
2023. 9. 9. 19:44
기존 동기화 도구의 문제점은 세마포어를 누락하거나, wait과 signal 순서를 햇갈린 경우 등 실수를 할 수 있다는 것이다.
이런 것들을 방지하기 위해서 사용이 간편한 동기화 도구를 모니터라고 한다.(입출력장치의 모니터가 아닌 동기화도구 모니터임)
모니터
- 공유 자원에 접근하기 위한 인터페이스를 분리해둔 방식
- 정해진 인터페이스를 통해서만 공유자원에 접근할 수 있도록 만들어둔다. 이를 통해 상호 배제가 보장된다.
- 실행 순서 제어를 위한 동기화를 위해 조건 변수를 사용한다.
조건 변수
현재 프로세스의 상태를 상황에 따라 변경할 수 있는 특별한 변수로 wait(), signal()연산이 가능한 변수다.
- wait() : 호출한 프로세스를 대기 상태로 전환
- signal() : 호출한 프로세스를 깨움
조건변수를 활용한 실행 순서 제어
- 아직 실행될 조건이 되지 않았을 때에는 wait을 통해 실행 중단
- 실행될 조건이 충족되었을 때에는 signal을 통해 실행 재개
모니터를 활용하는 대표적인 프로그래밍 언어로 java의 synchronized가 있다.