세마포어와 모니터

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. 세마포어와 모니터를 활용한 동시성 지원방안

항목지원 방안
세마포어– 세마포어는 상호배제/동기화를 프로그래머가 담당, 고급프로그래머의 주의 깊은 개발 필요
모니터– 객체 단위의 설계가 이루어지기 때문에 설계단계에서 상세 설계 고려 필요
동시성– 필수적인 프로그래밍 요소지만 높은 수준의 프로그래밍 지원이 필요

 

콘텐츠 사용 시 출처 표기 부탁 드리고, 궁금한 점이나 의견은 댓글 남겨주세요^^