2017년 4월 19일 수요일

11. 프로세스 동기화(Process Synchronization)3


3) 모니터(Monitor)
 * 추상화된 고급 동기화 도구(High-level synchronizaion contruct)
   : Java, C++, C#, Pascal
   : 프로그래머가 명시적으로 동기화를 위한 코딩을 작성할 필요는 없음.

class MyCode {
      private int value, ... ;
      synchronized void f() {
           ...
      }
      synchronized void g() {
           ...
      }
      void h() {
            ....
      }
}

 * 모니터 내에서 상호 배제(mutual exclusion)를 보장
   : 모니터 외부에서는 접근불가
   : 항상 하나의 프로세스만 활성화됨을 보장
  * 상호배제 + 조건 변수


< 모니터1 >

동기화 모니터
   * P가 현재 모니터 내부에서 활성화되어 있다.
    : P가 나가면서 조건 C1에 신호(signal)를 보내면, 첫번째 Y가 모니터로 진입
    : P가 나가면서 조건 C3에 신호(signal)를 보내면, 첫번째 Z가 모니터로 진입
    : P가 나가면서 조건 C2에 신호(signal)를 보내면, 혹은 아무런 신호를 보내지 않으면
     첫번째 X가 모니터로 진입


< 모니터 2: 확장 >

동기화 모니터
   * P가 현재 모니터 내부에서 활성화되어 있다.
    : P가 나가면서 조건 C1에 신호(signal)를 보내면, 첫번째 Y가 모니터로 진입
    : P가 나가면서 조건 C3에 신호(signal)를 보내면, 첫번째 Z가 모니터로 진입
    : P가 나가면서 조건 C2에 신호(signal)를 보내면, 혹은 아무런 신호를 보내지 않으면
     첫번째 A가 모니터로 진입



댓글 없음:

댓글 쓰기