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