모니터 (동시성 제어)
IT위키
더 많은 작업
P,Monitor
Concurrent-Pascal, Module-2/3, JAVA 등 프 로그래밍언어 수준에서 세마포어처럼 상호배제 기능 을 제공하는 소프트웨어 모듈
모니터는 공유 데이터와 그 데이터를 다루는 프로시저(진입부), 초기화 코드, 조건 변수를 하나로 묶은 모듈이다.
- 공유 자원을 쓰려는 프로세스는 반드시 그 자원에 관련된 모니터의 진입부(entry procedure)를 호출해서 들어간다
- 한 순간에 하나의 프로세스만 모니터 안에서 실행된다. 상호 배제는 모니터가 자동으로 보장하므로 프로그래머가 P·V 연산을 직접 짝지을 필요가 없다
- 모니터 안의 데이터는 바깥에 숨겨진다(정보 은폐, 정보 은닉). 모니터 외부의 프로세스는 모니터 내부 데이터를 직접 액세스할 수 없고 진입부를 통해서만 다룬다
- 조건이 맞지 않으면 조건 변수에 대해 wait 로 기다리고, 다른 프로세스가 signal 로 깨운다. 기다리는 동안에는 모니터를 내놓아 다른 프로세스가 들어올 수 있다
- 자바의 synchronized 메서드와 wait()·notify() 가 모니터를 구현한 예다
세마포어는 모니터에게 이론적 기반을 제공하고 모니터는 세마포어의 타이밍 문제점을 보완
| 구분 | 세마포어 | 모니터 |
|---|---|---|
| 주체 |
|
|
| 상호작용 |
|
|
| 제어 방법 |
|
|
| 동기화 구현 |
|
|
- 세마포어는 상호배제/동기화를 프로그래머가 담당하여 고급 프로그래머의 주의 깊은 개발이 필요함
- 모니터는 객체단위의 설계가 이루어지기 때문에 설계단계에서 상세 설계가 고려되어야 함
- 121회 이룸 동기회 해설집