반응형
Ⅰ. 세마포어와 모니터의 개념
세마포어 | 모니터 |
- 공유된 자원의 임계영역에 여러 프로세스가 접근하는 것을 막아주는 동시성 제어 기법 | - JAVA 등 프로그래밍 언어 수준에서 세마포어 처럼 상호배제 기능 제공 |
Ⅱ. 세마포어와 모니터의 관계
가. 세마포어와 모니터 개념적 상관관계
- 세마포어는 모니터에 이론적 기반 제공, 모니터는 타이밍 문제점 보완하여 동시성 제어 위한 상호작용 지원
나. 세마포어와 모니터 상세 상호관계
항복 | 세마포어 | 모니터 |
주체 | 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 |
공통점 | 동시성 지원을 위한 조정 기능 수행 |
Ⅲ. 세마포어와 모니터 활용 동시성 지원 방안
구분 | 지원 방안 |
세마포어 | - 세마포어는 상호배제 / 동기화를 프로그래머가 담당, 고급 프로그래머의 주의 깊은 개발 필요 |
모니터 | - 객체 단위의 설계가 이루어지기 때문에 설꼐 단계에서 상세 설계 고려 필요 |
동시성 | - 필수적인 프로그래밍 요소지만 높은 수준의 프로그래밍 지원 필요 |
반응형