I. 세마포어와 모니터
세마포어 | 모니터 |
---|---|
세마포어 변수(s) 및 두 개의 연산(P, V)으로 임계영역에 접근하는 잠금장치에 대한 이론적 기반 | Concurrent-Pascal, Module-2/3, JAVA 등 프로그래밍언어 수준에서 세마포어 처럼 상호배제 기능 제공 |
II. 세마포어와 모니터의 상호관계
가. 세마포어와 모니터 개념적 상관관계
- 세마포어는 모니터에 이론적 기반을 제공하고, 모니터는 타이밍 문제점을 보완하여 동시성 제어 위한 상호작용 지원
나. 세마포어와 모니터 상세 상호관계
구분 | 세마포어 | 모니터 |
---|---|---|
주체 | 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) 기능 수행 |
III. 세마포어와 모니터를 활용한 동시성 지원방안
항목 | 지원 방안 |
---|---|
세마포어 | – 세마포어는 상호배제/동기화를 프로그래머가 담당, 고급프로그래머의 주의 깊은 개발 필요 |
모니터 | – 객체 단위의 설계가 이루어지기 때문에 설계단계에서 상세 설계 고려 필요 |
동시성 | – 필수적인 프로그래밍 요소지만 높은 수준의 프로그래밍 지원이 필요 |