상호 배제 기법, 모니터 (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

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^