방명록
- [운영체제] 동기화 기법 : 모니터, 인터페이스, 그리고 조건 변수2025년 04월 01일 10시 40분 35초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
모니터, 인터페이스, 그리고 조건 변수
1. 모니터 (Monitor)
모니터는 공유 자원(데이터)과 이 자원에 접근하는 프로시저(메서드)들을 하나로 묶고, 자동적으로 상호 배제(Mutual Exclusion) 기능을 제공하는 고급 동기화 추상화 구조다. 프로그래머가 락(lock) 관리를 명시적으로 하지 않아도 안전하게 공유 자원을 다룰 수 있도록 돕는다.
- 목적: 복잡한 동기화 문제를 단순화하고, 락/세마포 등을 직접 사용할 때 발생하기 쉬운 오류(예: 데드락, 잘못된 락 순서)를 줄임.
- 주요 특징:
- 상호 배제 (Mutual Exclusion): 모니터 내부에 정의된 프로시저(메서드)는 한 번에 오직 하나의 스레드만 실행할 수 있음. 즉, 모니터 자체가 암묵적인 락을 관리.
- 캡슐화 (Encapsulation): 모니터 내부의 공유 데이터는 외부에서 직접 접근할 수 없고, 오직 모니터가 제공하는 프로시저를 통해서만 접근 가능. 데이터 보호 강화.
- 조건 변수 (Condition Variables): 모니터 내부에서 스레드가 특정 조건이 만족될 때까지 안전하게 대기하고, 다른 스레드가 조건을 만족시켰을 때 깨울 수 있는 메커니즘을 제공 (아래 상세 설명).
- 구현 예시: Java의
synchronized
키워드로 메서드나 블록을 감싸거나,java.util.concurrent.locks.ReentrantLock
과Condition
객체를 함께 사용하는 방식 등이 모니터 패턴을 구현한 것임.
2. 모니터의 인터페이스 (Interface)
- 모니터가 외부(다른 스레드)에 제공하는 공개된 프로시저(메서드)들의 집합.
- 스레드는 이 인터페이스를 통해서만 모니터 내부의 기능(및 간접적으로 데이터)에 접근할 수 있음.
- 모니터의 내부 구현이나 데이터는 숨겨지고, 정의된 인터페이스만으로 상호작용함 (캡슐화의 일부).
3. 조건 변수 (Condition Variable)
조건 변수는 모니터 내부(또는 뮤텍스와 함께) 사용되는 동기화 도구로, 스레드가 특정 조건이 충족될 때까지 모니터 락을 임시로 포기하고 대기할 수 있게 해준다.
- 목적: 모니터 내에서 실행 중인 스레드가 특정 상태(예: 버퍼가 비어있음, 작업 완료됨)를 기다려야 할 때, CPU를 낭비하는 바쁜 대기(Busy-Waiting) 대신 효율적으로 대기(Blocking)하도록 함.
- 주요 연산:
wait()
:- 이 연산을 호출하는 스레드는 반드시 해당 모니터의 락(또는 연관된 뮤텍스 락)을 소유하고 있어야 함.
- 호출 시, 스레드는 갖고 있던 락을 자동으로 해제(release)하고, 해당 조건 변수의 대기 큐에 들어가 잠듦(sleep).
signal()
(또는notify()
):- 이 연산을 호출하는 스레드 역시 모니터 락을 소유하고 있어야 함.
- 해당 조건 변수에서 대기 중인 스레드가 있다면, 그중 하나를 깨움(wakeup). 깨어난 스레드는 즉시 실행되는 것이 아니라, 다시 모니터 락을 획득해야
wait()
호출 이후 지점부터 실행을 재개할 수 있음.
signalAll()
(또는notifyAll()
):- 해당 조건 변수에서 대기 중인 모든 스레드를 깨움. 깨어난 스레드들은 서로 경쟁하여 모니터 락을 획득해야 함.
- 특징:
- 조건 변수 자체는 어떤 '조건'을 저장하는 변수가 아님. 스레드가 대기하고 신호를 받을 수 있는 '대기 장소' 또는 '큐'로 생각할 수 있음.
- 반드시 모니터 락(또는 뮤텍스)과 함께 사용되어야,
wait
시 락 해제와 잠들기,signal
후 깨어나서 락 재획득 과정이 원자적으로 안전하게 처리됨.
728x90반응형'CS > 컴퓨터구조와 운영체제' 카테고리의 다른 글
[운영체제] 동기화 기법 : 세마포, wait/signal 함수, 그리고 대기 큐 (0) 2025.04.01 [운영체제] 동기화 기법 : 뮤텍스 락, acquire/release 함수, 그리고 바쁜 대기 (0) 2025.04.01 [컴퓨터 구조] 보조기억장치(하드 디스크, 플래시 메모리) (0) 2025.03.26 [컴퓨터구조] 캐시 메모리 및 저장 장치 계층 구조 관련 용어 정리 (0) 2025.03.25 다음글이 없습니다.이전글이 없습니다.댓글