본문 바로가기
IT기술노트/컴퓨터구조 및 운영체제

모니터 (Monitor)

by 비트코기 2022. 7. 28.

I. 세마포어의 타이밍 문제 해결, 모니터의 개념

- 프로세스 동기화 수행 시 세마포어의 단점인 타이밍 문제 해결을 위해 프로그래밍 언어 수준에서 상호배제를 구현하여 동기화 하는 기법

- 특징 : 타이밍 문제 해결, 언어 수준 편의성 제공


II. 모니터의 동작원리 및 구성요소

가. 모니터의 동작원리

동작원리
① 임계구역으로 지정된 변 수나 자원에
접근하고자 하는 프로세스는 직접 P(),
V()연산을 사용하지 않고 모니터에 작업 요청
(캡슐화)
② 모니터는 요청받은 작업을
모니터큐(베타동기 큐, 조건동기 큐)에 저장
후 순서대로 처리
③ 모니터는 처리결과만 해당 프로세스에
통보

- 모니터는 임계구역 보호와 동기화를 위해 내부적으로 상태 변수를 사용

나. 모니터의 구성요소

구분 구성요소 설명
동기화 요소 임계구역 - 쓰레드에서 접근하는 공유 자원 영역
베타동기 큐 - 한 쓰레드만 임계영역에 접근하도록 제어하는 큐
조건동기 큐 - 쓰레드를 조건에 따라 잠그거나 깨우는 큐
언어 요소
(Java 사례)
Synchronized - 쓰레드를 조건에 따라 잠그거나 깨우는 큐
Wait - 임계구역에서 조건동기 큐로 진입시켜 쓰레드를 잠금
Notify, notifyAll - 조건동기 큐에 잠겨 있는 쓰레드를 깨워 임계구역에 재진입

- 모니터는 프로그래밍 언어 수준에서 상호배제를 구현하는 수단을 제공하며, Ordering 용도로 사용 가능

 

III. 세마포어와 모니터의 상호관계 및 비교

가. 세마포어와 모니터의 상호관계

- 세마포어는 모니터에 이론적 기반을 제공하고, 모니터는 세마포어의 타이밍 문제를 해결

나. 세마포어와 모니터의 비교

구분 세마포어 모니터
주체 - 운영체제, 개발자 주체의 동시성 지원 - 프로그래밍 언어 수준의 동시성 제어
상호작용 - 모니터의 이론적 기반 제공 - 세마포어의 타이밍 문제해결
연산방식 - P 연산, V 연산 - wait 연산, signal 연산
접근방식 - 직접 공유자원 접근처리를 구현 - 캡슐화된 함수를 호출하여 공유자원 접근
특징 - 이진, 계수형 세마포어로 구분
- 부정확하게 사용시 타이밍 오류 발생
- 상호배제 위반, 교착상태 발생 가능 존재
- 하나의 프로세스만 모니터 내부에서 수행
- 프로그래밍 언어의 일부로 구현 (캡슐화)
- 컴파일러에서 모니터 기능을 제공해야 사용

- 세마포어와 모니터는 동시성 제어를 수행하는 기법이라는 공통점을 갖고 있음

반응형

댓글