본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

P,Monitor

Concurrent-Pascal, Module-2/3, JAVA 등 프 로그래밍언어 수준에서 세마포어처럼 상호배제 기능 을 제공하는 소프트웨어 모듈

모니터는 공유 데이터와 그 데이터를 다루는 프로시저(진입부), 초기화 코드, 조건 변수를 하나로 묶은 모듈이다.

  • 공유 자원을 쓰려는 프로세스는 반드시 그 자원에 관련된 모니터의 진입부(entry procedure)를 호출해서 들어간다
  • 한 순간에 하나의 프로세스만 모니터 안에서 실행된다. 상호 배제는 모니터가 자동으로 보장하므로 프로그래머가 P·V 연산을 직접 짝지을 필요가 없다
  • 모니터 안의 데이터는 바깥에 숨겨진다(정보 은폐, 정보 은닉). 모니터 외부의 프로세스는 모니터 내부 데이터를 직접 액세스할 수 없고 진입부를 통해서만 다룬다
  • 조건이 맞지 않으면 조건 변수에 대해 wait 로 기다리고, 다른 프로세스가 signal 로 깨운다. 기다리는 동안에는 모니터를 내놓아 다른 프로세스가 들어올 수 있다
  • 자바의 synchronized 메서드와 wait()·notify() 가 모니터를 구현한 예다

세마포어는 모니터에게 이론적 기반을 제공하고 모니터는 세마포어의 타이밍 문제점을 보완

구분 세마포어 모니터
주체
  • OS, 개발자 주체의 동시성 지원
  • 프로그래밍 언어 수준의 동시성 지원
상호작용
  • 모니터에게 이론적 기반제공
  • 모니터에게 효과적인 기법제공
  • 세마포어의 단점인 타이밍 오류 해결
  • 세마포어의 단점인 개발편의성의 보완
제어 방법
  • P연산, V연산으로 임계영역 접근제어


  • 한 시점에 하나의 프로세스만 모니터 내부에서 수행토록 제어
동기화 구현
  • P, V 연산 직접 구현
  • JAVA의 synchronized Object
  • .net의 모니터 등
  • 세마포어는 상호배제/동기화를 프로그래머가 담당하여 고급 프로그래머의 주의 깊은 개발이 필요함
  • 모니터는 객체단위의 설계가 이루어지기 때문에 설계단계에서 상세 설계가 고려되어야 함
  • 121회 이룸 동기회 해설집