2020년 2월 24일
상호 배제 기법, 모니터 (Monitor)
I. 모니터의 개요
가. 모니터의 개념
- 프로그래밍 언어 수준에서 동시성을 제어하여 타이밍 오류를 해결한 상호 배제 기법
나. 모니터의 특징
- 세마포어의 이론적 기반 제공, 타이밍 오류와 P/V 연산 코드구현
- 순차적으로만 사용할 수 있는 공유 자원 및 그룹 할당
- 데이터, 프로시저를 포함하는 병행성 구조
II. 모니터의 동작 개념도/구성 요소와 연산의 구현
가. 모니터의 동작 개념도/구성 요소
동작 개념도 | 구성 요소 |
---|---|
– 지역변수: 모니터 내부에서만 접근 가능 – 조건변수: 동기화의 부수적 메커니즘 제공 – cwait(c): 호출 프로세스를 조건 c에서 일시 중지 – csignal(c): cwait에 의해 중지된 프로세스 재개 – Next Queue: 다른 프로세스가 모니터 내부에 있어서 잠시 대기하는 큐 |
나. 모니터 연산의 구현
Monitor monitor-name { // 지역변수 선언 Public entry p1(…) { } Public entry p2(…) { } } |
III. 세마포어와 모니터의 상호관계
가. 세마포어와 모니터 개념적 상관관계
- 세마포어는 모니터에 이론적 기반을 제공하고, 모니터는 타이밍 문제점을 보완하여 동시성 제어 위한 상호작용 지원
나. 세마포어와 모니터 상세 상호관계
구분 | 세마포어 | 모니터 |
---|---|---|
주체 | OS, 개발자 주체 동시성 지원 | 프로그래밍 언어 수준 동시성 |
상호 작용 | 모니터에 이론적 기반 제공 모니터에 효과적인 기법 제공 | 타이밍 오류 해결 개발 편의성 보완 |
특징 | s의 타입에 따라 이진/계수 세마포어로 구분 | 한 시점에 하나의 프로세스만 모니터 내부에서 수행 세마포어와 계산 능력 동일 |
동기화 구현 사례 | Semaphore S; P(s); // 감소역할, s– 임계구역() V(s); // 증가역할, s++ | Monitor monitor-name { Public entry p1(…){} Public entry p2(…){} } |
언어 사례 | P, V 연산으로 구현 | JAVA의 synchronized Object, .net의 모니터 |
공통점 | 동시성 지원을 위한 조정(Coordination) 기능 수행 |
IV. 세마포어와 모니터를 활용한 동시성 지원방안
항목 | 지원 방안 |
---|---|
세마포어 | – 세마포어는 상호 배제/동기화를 프로그래머가 담당, 프로그래머 주의 필요 |
모니터 | – 객체 단위의 설계가 이루어지기 때문에 설계단계에서 상세 설계 고려 필요 |
동시성 | – 필수적인 프로그래밍 요소지만 높은 수준의 프로그래밍 지원이 필요 |
3 Comments
설명을 잘 해 놓으셨군요. 학교에서 강의할때 이 그림 가져다 써도 괜찮을까요?
상업적 용도로 사용하지 않으시면 무방합니다.
감사합니다^^