토픽 26 / 85·프로세스 동기화와 교착상태
모니터 (Monitor)
모니터 (Monitor)
공유 자원과 접근 절차를 하나의 모듈로 캡슐화하여 상호 배제를 자동 보장하는 고수준 동기화 구조체
특징: ADT, 자동 상호 배제, 조건 변수 지원, 컴파일러/언어 수준 구현
구성요소: 공유 데이터 / 프로시저(한 번에 1프로세스) / 진입 큐(FIFO) / 조건 변수(wait/signal/broadcast) / 상호배제 잠금(자동)
동작: 프로시저 호출→잠금 획득(자동)→실행→조건 미충족 시 wait(잠금해제)→signal로 깨움→완료 시 잠금 해제
signal 의미론: Hoare(즉시 양도, 호출자 중단) vs Mesa(호출자 계속, while 재확인 필요, 현대 주류)
세마포어 vs 모니터: 세마포어(저수준/수동P·V/오류가능) vs 모니터(고수준/자동상호배제/캡슐화/안전)
언어별: Java(synchronized/wait/notify), Python(Lock/Condition/with), C#(lock/Monitor)
장점: 프로그래밍 용이, 동기화 오류 감소, 캡슐화
단점: 언어/컴파일러 지원 필요, 분산 환경 어려움, 단일 모니터 병목
비교: 모니터(고수준/자동) vs 세마포어(저수준/수동) vs 뮤텍스(이진/소유권)
연관: 세마포어, 뮤텍스, 조건 변수, 동기화, 임계 구역, Java synchronized